Strawing Blog Archivers

Strawing Blog » Archivers » 玩转btrfs子卷(subvolume)及快照(snapshot)

(真香第二集
子卷呢,可以理解为一个文件系统下面可以“虚拟”出很多文件系统出来。
强烈建议使用btrfs时使用子卷,而不是直接把文件或者系统放到btrfs的根文件系统下。(不然到时要用到一些比如快照这样的真香功能还得把东西倒腾到一个子卷里)
要折腾子卷,首先要把你的btrfs根文件系统挂载起来。(当然一个子卷里面还可以有子卷)
值得一提的是,btrfs有个默认子卷,如果不加挂载参数,直接mount一个btrfs文件系统时挂载出来的是它的默认子卷,而不是根。
所以可以加"subvol=/"参数来挂载根。比如

mount -t btrfs -o subvol=/ /dev/sda1 /mnt

然后切换到挂载点 cd /mnt
创建子卷

btrfs subvolume create xxxx

(btrfs子卷是以目录的形式存在,比如上面的命令创建后会多出一个xxxx目录,当然这不是一个普通的目录,但在这种情况下可以当一个普通的目录用,可以直接把文件拷进去,就是把文件放到子卷里了)

子卷不能用rm -rf删除,要

btrfs subvolume delete xxxx


设置默认子卷
btrfs subvolume set-default ID
默认子卷是你mount这个文件系统的时候,就会把这个子卷mount上去,而不是mount根
那么这个子卷的ID怎么得呢?

btrfs subvolume list /mnt(btrfs挂载点)

这样可以看到所有的子卷

创建快照

btrfs subvolume snapshot /mnt/subvolume /mnt/snapshotsubvolume

快照也是一个子卷,上述的内容为,给当前已存在的subvolume子卷创建一个快照子卷,命名为snapshotsubvolume。创建完成后两个子卷内容一模一样,并且可以分别更改这两个子卷的内容,互不影响。很适合用来做备份。
快照不是复制文件,如果不更改文件则几乎不占用空间。
删除原子卷后,快照子卷是不会被删的。

例如,我当前系统安装在/mnt/@子卷下,然后我要捣鼓一些东西
我可以先btrfs subvolume snapshot /mnt/@ /mnt/@backup
创建一个快照
捣鼓完了没问题,可以btrfs subvolume delete /mnt/@backup把快照删了。
如果出问题了,就直接用btrfs subvolume set-default把@backup快照设为默认子卷,然后把/mnt/@这个捣鼓坏的子卷删除即可。删除@不会影响@backup。

Enjoy!

查看完整版本:玩转btrfs子卷(subvolume)及快照(snapshot)

© Strawing Blog

Supported by DHL Author:Wolfit