本文基于Archwiki的资料与实际实践而写成。
Btrfs 是一种新型的写时复制 (CoW) Linux 文件系统,已经并入内核主线。Btrfs
在设计实现高级功能的同时,着重于容错、修复以及易于管理。它由 Oracle, Red Hat, Fujitsu, Intel, SUSE,
STRATO 等企业和开发者共同开发,Btrfs 以 GNU GPL 协议授权,同时也欢迎任何人的贡献。
先提一下我的一小段时间的使用感受吧。用compsize -x /
检查发现我使用lzo的压缩节省了25%的空间,性能下降到感觉不到什么,子卷目前也还没用太多,快照备份也是先做这备份,防止哪天手贱给搞坏了的时候有机会livecd进去抢救一下哈哈
首先是支持包btrfs-progs
,arch内核默认自带。我推荐的思路如下:
(黑体字根据自己情况更改)(接下来一切都是从启动livecd开始安装系统时发生)
$ mkfs.btrfs -L mylabel /dev/partition
首先是格式化分区。
$ mount -t btrfs -o subvol=/ compress=lzo /dev/partition /mnt
意味着将目标分区的默认子卷挂载为以后系统的根目录,并且将压缩方式设置为lzo。即如果你创建了一个子卷 /mypc并将其设为默认的话, 那么以后/mypc/就是你的真正根目录了,但是安装的时候所有的/mnt 都要变成/mnt/mypc。
接下来进行正常的装系统工作,如果你需要将其他的某些文件夹单独拎出来做一个子卷来备份的话,可以用
$ btrfs subvolume create xxxx
创建一个子卷(用起来就和一个文件夹一样)
$ btrfs subvolume set-default xxxx
设置你的默认子卷
之后在进行正常的挂载boot分区之类的。不过挂载到/mnt/mypc/boot这样 之后,记得去fstab改回来改成挂到根目录下而不是根目录下的子卷下。不然之后启动无法正常挂载。
创建快照
$ btrfs subvolume snapshot /mnt/mypc /mnt/mypc/.backup
快照也是一个子卷,上述的内容为,给当前已存在的mypc子卷创建一个快照子卷,命名为.backup。创建完成后两个子卷内容一模一样,并且可以分别更改这两个子卷的内容,互不影响。很适合用来做备份。
快照不是复制文件,如果不更改文件则几乎不占用空间。
删除原子卷后,快照子卷是不会被删的。
比如我当前系统安装在/mnt/mypc子卷下,可以先$ btrfs subvolume snapshot /mnt/mypc /mnt/.backup
创建一个快照
如果出问题了,就直接用btrfs subvolume set-default把backup快照设为默认子卷,然后把/mnt/mypc这个捣鼓坏的子卷删除即可。删除mypc不会影响backup。
写的比较匆忙,后续再看情况写一下增量备份之类的其他操作。