Create a Sparse File
Let’s take allocating 7TB as an example,1
$ NAME='asr-btrfs' $ dd if=/dev/zero of=${NAME}.img bs=1 count=0 seek=7T 0+0 records in 0+0 records out 0 bytes copied, 9.9685e-05 s, 0.0 kB/s
After this, with ls -alh
you can see that the file size is 7TB
, and with du asr-btrfs.img
to see the actual size.
$ ls -alh -rw-r--r-- 1 root root 7.0T Nov 10 10:15 asr-btrfs.img $ du asr-btrfs.img 0 asr-btrfs.img
Create Disk Partition
$ mkfs.btrfs ${NAME}.img btrfs-progs v5.4.1 See http://btrfs.wiki.kernel.org for more information. Label: (null) UUID: c172f5e7-b188-4b9f-a35a-5e2a4eb17c69 Node size: 16384 Sector size: 4096 Filesystem size: 7.00TiB Block group profiles: Data: single 8.00MiB Metadata: DUP 1.00GiB System: DUP 8.00MiB SSD detected: no Incompat features: extref, skinny-metadata Checksum: crc32c Number of devices: 1 Devices: ID SIZE PATH 1 7.00TiB asr-btrfs.img
Mount the Partition
$ mount='/data' $ mkdir ${mount} $ mount ${NAME}.img ${mount}
Move the Data
Now with mv
you can move the files to the new filesystem.
Docker Configuration
If the folder is used as a volume on Ubuntu/Debian Docker, it is supported, but you have to enable the btrfs
storage driver.
On the host modify the /etc/docker/daemon.json
file, adding one line to it:1
{ "storage-driver": "btrfs" }
Then restart the docker container you want to use btrfs
.
$ docker restart ubuntu-lang
Disk Space Lookup
# 查看磁盘文件占用空间 du -h filesystem.img # 查看btrfs元数据占用空间 btrfs filesystem df /mnt # 也是查看空间 btrfs filesystem usage /mnt