知乎专栏 |
The btrfs utility is a toolbox for managing btrfs filesystems. There are command groups to work with subvolumes, devices, for whole filesystem or other specific actions.
安装
yum install btrfs-progs
# df -T Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/md126p2 ext4 50395844 19952780 27883064 42% / tmpfs tmpfs 4024944 800 4024144 1% /dev/shm /dev/md126p1 ext4 495844 172140 298104 37% /boot /dev/md126p6 btrfs 500084736 360835636 119893924 76% /opt /dev/md126p5 btrfs 409600000 24927332 368284612 7% /www # btrfs subvolume create /www/git Create subvolume '/www/git' # btrfs subvolume list /www ID 641 gen 21351 top level 5 path git
创建快照 # btrfs subvolume snapshot /www /www/backup_2012 查看快照 # btrfs subvolume list -a /www 挂在快照 # mount -t btrfs -o subvol=backup_2012 /dev/md127p5 /mnt/snap 删除快照 # btrfs subvolume delete /www/backup_2012 Delete subvolume '/www/backup_2012'
# mkdir /mnt/btrfs # mount /dev/sdb1 /mnt/btrfs
查看挂载是否成功
# df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/sda1 ext4 49G 15G 32G 32% / tmpfs tmpfs 32G 264K 32G 1% /dev/shm /dev/sda3 ext4 52G 1.3G 48G 3% /var /dev/sdb1 btrfs 2.0T 14G 2.0T 1% /mnt/btrfs
针对 SSD 的优化: # mount –t btrfs –o SSD /dev/sda5 /btrfsdisk 打开压缩功能: # mount –t btrfs –o compress /dev/sda5 /btrfsdisk
mount -t btrfs -o subvol=your_snapshot /dev/sdb2 /mnt/snap
mount -t btrfs -o subvol=aaa /dev/md127p5 /mnt/snap
root@debian:~# btrfs filesystem show Label: none uuid: 938be341-089e-4add-93b4-4c54cb8f4f64 Total devices 1 FS bytes used 17.69GiB devid 1 size 110.84GiB used 20.02GiB path /dev/sdb1 Label: none uuid: 899e703f-6e1a-4080-b5fe-4098bfaa635f Total devices 1 FS bytes used 144.00KiB devid 1 size 931.51GiB used 2.02GiB path /dev/sda1
UUID=0b097eeb-1f0b-476a-955b-52122ef42bfc /opt btrfs defaults 1 2
fstab 挂载子卷
$ cat /etc/fstab # # /etc/fstab # Created by anaconda on Thu Oct 18 13:53:45 2012 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=88ec1ccf-7d8d-4107-a143-1ed0ec64a572 / ext4 defaults 1 1 UUID=c0786771-1c85-45be-a9ab-ef3ee16fccb4 /boot ext4 defaults 1 2 UUID=e1b89740-21f0-4507-97e9-a658cd7d3716 /opt btrfs defaults 1 2 UUID=76e46795-ebaf-4d2d-8996-1e15979bf3c8 /www btrfs defaults 1 2 UUID=76e46795-ebaf-4d2d-8996-1e15979bf3c8 /home/git btrfs defaults,subvol=git 1 2 UUID=c578f1b3-4bbe-4f48-b3d3-3929c65cb99c swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0
[root@netkiller ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Fri Nov 21 18:16:53 2014 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=6634633e-001d-43ba-8fab-202f1df93339 / ext4 defaults,barrier=0 1 1 UUID=786f570d-fe5c-4d5f-832a-c1b0963dd4e6 /srv btrfs defaults 1 1 UUID=786f570d-fe5c-4d5f-832a-c1b0963dd4e6 /var/lib/mongo btrfs noatime,nodiratime,subvol=@mongo 0 2 UUID=786f570d-fe5c-4d5f-832a-c1b0963dd4e6 /var/lib/mysql btrfs noatime,nodiratime,subvol=@mysql 0 2 UUID=786f570d-fe5c-4d5f-832a-c1b0963dd4e6 /www btrfs noatime,nodiratime,subvol=www 0 2
[root@netkiller ~]# df -T Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/vda1 ext4 41151808 4902608 34135768 13% / devtmpfs devtmpfs 8127268 0 8127268 0% /dev tmpfs tmpfs 8133908 4 8133904 1% /dev/shm tmpfs tmpfs 8133908 849468 7284440 11% /run tmpfs tmpfs 8133908 0 8133908 0% /sys/fs/cgroup /dev/vdb1 btrfs 104856576 1404116 101369420 2% /srv /dev/vdb1 btrfs 104856576 1404116 101369420 2% /var/lib/mongo /dev/vdb1 btrfs 104856576 1404116 101369420 2% /var/lib/mysql tmpfs tmpfs 1626784 0 1626784 0% /run/user/0 /dev/vdb1 btrfs 104856576 1404116 101369420 2% /www
[root@netkiller ~]# ll /srv/ total 0 drwxr-xr-x 1 www www 132 2016-12-08 15:17 apache-tomcat-8.5.8 drwxr-xr-x 1 root root 132 2016-12-08 16:11 apache-tomcat-www drwxr-xr-x 1 mongod mongod 608 2016-12-26 09:18 @mongo drwxr-x--x 1 mysql mysql 448 2016-12-26 09:16 @mysql drwxr-xr-x 1 root root 0 2016-11-30 13:24 @redis drwxr-xr-x 1 root root 22 2016-12-08 16:32 sbin drwxr-xr-x 1 www www 24 2016-12-08 16:54 www
# btrfs filesystem resize max / To extend the file system to a specific size: # btrfs filesystem resize size / Replace size with the desired size in bytes. You can also specify units on the value, such as K (kibibytes), M (mebibytes), or G (gibibytes). Alternatively, you can specify an increase or decrease to the current size by prefixing the value with a plus (+) or a minus (-) sign, respectively: # btrfs filesystem resize +size / # btrfs filesystem resize -size /
# btrfsck /dev/sdb1 found 13994164224 bytes used err is 0 total csum bytes: 13588316 total tree bytes: 79728640 total fs tree bytes: 28860416 btree space waste bytes: 10282024 file data blocks allocated: 13931024384 referenced 13906980864 Btrfs Btrfs v0.19
[root@r610 ~]# btrfs-debug-tree /dev/sdb1 |head root tree leaf 49463296 items 9 free space 2349 generation 298 owner 1 fs uuid 0b097eeb-1f0b-476a-955b-52122ef42bfc chunk uuid 2826f868-c775-4835-8690-1020a2a9fbf5 item 0 key (EXTENT_TREE ROOT_ITEM 0) itemoff 3756 itemsize 239 root data bytenr 49446912 level 2 dirid 0 refs 1 item 1 key (DEV_TREE ROOT_ITEM 0) itemoff 3517 itemsize 239 root data bytenr 36139008 level 0 dirid 0 refs 1 item 2 key (FS_TREE INODE_REF 6) itemoff 3500 itemsize 17 inode ref index 0 namelen 7 name: default