拾遗:btrfs
#扫描 btrfs 文件系统
btrfs device scan
btrfs device scan /dev/sda
#创建子卷或快照
btrfs subvolume create /mnt/btrfs/new_subvol #删除使用 btrfs subvolume delete /SubVolName
btrfs subvolume snapshot /mnt/btrfs /mnt/btrfs/snapshot_of_root
#获取完整元数据信息
btrfs-debug-tree /dev/sda2 >& big_output_file
#挂载
mount -t btrfs -o subvolid=123 /dev/sda2 /mnt/new_subvol #subvolid 可使用 btrfs subvolume list [/MountPoint] 查看,根卷的id是0或5
mount -t btrfs -o subvolid=345 /dev/sda2 /mnt/snap
mks.btrfs -m raid1 -d raid1 /dev/sda /dev/sdb ... /dev/sdN #使用多个磁盘或分区创建 raid1 类型型的冗余备份,-m指 metadata,-d指data
btrfs filesystem show [/dev/sdN] #可使用卷组中任一成员的名称,显示卷组信息
mount /dev/sdN /MountPoint #可使用卷组中任一成员的名称,挂载整个卷组
btrfs filesystem df /MountPoint #显示卷组基础信息
btrfs device add /dev/sdN /MountPoint #向卷组添加成员
btrfs device delete /dev/sdN /MountPoint #从卷组中删除成员(不能使删除后的数量小于最低要求,如raid1 至少剩2个成员)
#如下是调整卷组大小
btrfs filesystem resize -100m /MountPoint
btrfs filesystem resize +200m /MountPoint
btrfs filesystem resize max /MountPoint #调整至最大
#添加新设备后,使数据布署到新设备
btrfs filesystem balance /MountPoint
#转换卷组类型,如下示例将无冗余单成员转换为 raid1
mount /dev/sdb1 /mnt
btrfs device add /dev/sdc1 /mnt
btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt
#清理已断开连接的卷组成员的遗留信息
btrfs device delete missing [/Mountpoint]
#更换坏盘
mount -o degraded /dev/sda1 /mnt #以 -o degraded选项挂载问题卷组
btrfs replace start 6 /dev/sdf1 /mnt #开始替换,6 是指btrfs filesystem show 查到的设备编号
btrfs replace status /mnt #动态查看替换过程
#btrfs raid 在 fstab 中的写法如下(推荐使用 initramfs,官方不建议在 fstab 中写)
/dev/sdb /mnt btrfs device=PARTUUID=...,device=PARTUUID=... 0 0
#子卷挂载在 fstab 中的写法
LABEL=the-btrfs-fs-device / subvol=/root,defaults,noatime,ssd,discard,noacl,compress=lzo 0 0
UUID=.. /home subvol=/home,defaults,noatime 0 0