btrfs文件系统管理
目录
记录btrfs文件系统的常用操作
格式化btrfs格式的文件系统
sudo mkfs.btrfs /dev/sdc1
通过 -O
选项可以设置btrfs文件系统的fature,这些feature可以通过下面命令看到
mkfs.btrfs -O list-all 2>&1
Filesystem features available: mixed-bg - mixed data and metadata block groups (0x4, compat=2.6.37, safe=2.6.37) extref - increased hardlink limit per file to 65536 (0x40, compat=3.7, safe=3.12, default=3.12) raid56 - raid56 extended format (0x80, compat=3.9) skinny-metadata - reduced-size metadata extent refs (0x100, compat=3.10, safe=3.18, default=3.18) no-holes - no explicit hole extents for files (0x200, compat=3.14, safe=4.0)
挂载btrfs文件系统
sudo mount -t btrds -o rw /dev/sdc1 /mnt
btrfs还有许多feature,可以通过 -o
来指定。比较特别的选项有:
- ssd
- btrfs 针对ssd硬盘进行过特殊的优化,尽可能的将写入的数据分散到磁盘的各个位置,防止出现单个位置过多次的写入导致
- compress=lzo
- 启用自动压缩,压缩算法为lzo。其他可选压缩算法有zlib,zstd,或者no
sudo mount -t btrds -o rw,ssd,compress=lzo /dev/sdc1 /mnt/mybtrfs
修改Btrfs文件系统的大小
我们还可以修改创建好的btrfs文件系统的大小.
下面命令将文件系统减少2G
sudo btrfs filesystem resize -2g /mnt
Resize '/mnt' of '-2g'
或者通过下面命令增加文件系统大小
sudo btrfs filesystem resize +2g /mnt
Resize '/mnt' of '+2g'
创建快照
快照是对文件系统某一时刻的完全备份。建立快照后,对文件系统的修改不会影响快照中的内容
sudo btrfs subvolume snapshot /mnt /mnt/snap1
Create a snapshot of '/mnt' in '/mnt/snap1'
若要创建只读快照,则可以使用 -r
选项
sudo btrfs subvolume snapshot -r /mnt /mnt/snap2
Create a readonly snapshot of '/mnt' in '/mnt/snap2'
子卷
我们可以把btrfs文件系统的一部分配置为一个完整的子文件系统,这些子文件系统被称为subvolume(子卷). 这些子卷共享底层的设备空间,在需要磁盘空间时便从底层设备中分配。
创建子卷
sudo btrfs subvolume create /mnt/sub1
Create subvolume '/mnt/sub1'
列出子卷
sudo btrfs subvolume list /mnt
ID 259 gen 12 top level 5 path sub1
挂载子卷
通过 subvol=/path/to/subvolumne
或 subvolid=objectid
选项可以指定挂载那个子卷
sudo mount -t btrfs -o subvol=/mnt/sub1 /home/lujun9972/btrfs.img /media
删除子卷
sudo btrfs subvolume delete /mnt/sub1
Delete subvolume (no-commit): '/mnt/sub1'
RAID
执行mkfs时可以指定多个设备,并设定RAID级别,比如
mkfs.btrfs -draid1 /dev/sde1 /dev/sdf1 mount -t btrfs /dev/sde1 /mnt/raid
添加/删除新设备
当设备空间快要被用完时,可以通过 btrfs device add
命令为文件系统添加新磁盘设备,从而增加存储空间
df -h /mnt sudo btrfs device add -f /dev/loop1 /mnt df -h /mnt
Filesystem Size Used Avail Use% Mounted on /dev/loop0 6.0G 17M 5.1G 1% /mnt Performing full device TRIM /dev/loop1 (4.00GiB) ... Filesystem Size Used Avail Use% Mounted on /dev/loop0 10G 17M 9.1G 1% /mnt
同样的,也可以通过命令删除所添加的设备
df -h /mnt sudo btrfs device delete /dev/loop1 /mnt df -h /mnt
Filesystem Size Used Avail Use% Mounted on /dev/loop0 10G 17M 9.1G 1% /mnt Filesystem Size Used Avail Use% Mounted on /dev/loop0 6.0G 17M 5.1G 1% /mnt
文件系统转换
可以通过命令将非Btrfs文件系统转换为Btrfs文件系统
sudo btrfs-convert ~lujun9972/ext4.img
create btrfs filesystem: blocksize: 4096 nodesize: 16384 features: extref, skinny-metadata (default) creating ext2 image file creating btrfs metadata copy inodes [o] [ 0/ 11] conversion complete
我们也可以通过命令将文件系统回滚转换前的状态
sudo btrfs-convert -r ~lujun9972/ext4.img
rollback succeeded
检查btrfs文件系统
可以通过以下命令检查Btrfs文件系统
sudo btrfsck ~lujun9972/btrfs.img
Opening filesystem to check... Checking filesystem on /home/lujun9972/btrfs.img UUID: 658b38c7-d9a0-4c36-aeab-e4dc072269d0 found 229376 bytes used, no error found total csum bytes: 0 total tree bytes: 163840 total fs tree bytes: 65536 total extent tree bytes: 16384 btree space waste bytes: 153939 file data blocks allocated: 65536 referenced 65536