关于Btrfs
什么是Btrfs,以及它的性能,可以在许多地方查阅得到.这里要提到的是,Btrfs文件系统本身就是由子卷(Subvolumes)构成的,它的top level是由B-tree结构的含有目录,文件和子卷等东西构成的子卷. 而在top level下的子卷, 其中又可以包含许许多多的子卷. 本文的执行环境为Ubuntu14.04.
关于子卷和快照
在Btrfs文件系统下创建子卷十分简单, 只需要到你想要创建子卷的目录下, 执行以下代码即可(其中subvolume_name即是你想给子卷起的名字):
btrfs subvolume create subvolume_name
而快照(Snapshots)其实就是一种特殊的子卷, 它能记录下在创建它的那一刻,它所在的父子卷(parent subvolume)的所有内容. 如果想要创建一个文件或系统的备份, 那么就可以通过创建快照来快速实现.创建快照的方式如下:
btrfs subvolume snapshot pathname pathname/snapshot_path
其中, pathname即想要备份的文件路径, 而pathname/snapshot_path即创建的快照所放置的路径. 比如我想对根目录进行备份的话, 就可以执行下面的指令:
sudo btrfs subvolume snapshot / backup
于是就可以看到提示创建快照成功,并且在根目录下多出了一个backup目录. 如果想要查看某个目录下有哪些子卷和快照, 那么可以执行以下语句:
btrfs subvolume list pathname
比如我想查看当前目录下有哪些子卷,可以执行:
hydra@hydra:/$ sudo btrfs subvolume list ./
得到的输出结果是:
hydra@hydra:/$ sudo btrfs subvolume list ./
ID 257 gen 881 top level 5 path @
ID 258 gen 881 top level 5 path @home
ID 266 gen 871 top level 257 path backup
可以看到刚才创建的backup快照的ID是266, 用这个方法就可以查看子卷和快照的ID了. 可以用以下命令来设定默认子卷(其中ID即为相应子卷或快照的ID):
btrfs subvolume set-default ID pathname
而后用重新挂在子卷的方法即可进入快照了。