Using BTRFS on openSUSE 12.1
23. Jan 2012 | Manu Gupta | No License
This article is contributed by Kamila SouÍkova
Introduction
正如 btrfs wiki 所说:“Btrfs 是一个为 Linux 设计的新的写时复制文件系统,旨在实现高级功能,同时专注于容错、修复和易于管理。” 尽管仍在积极开发中,但它已经足够稳定,可以供个人使用,并且有很多理由去尝试它。 与早期文件系统区分开来的是,它在设计时就考虑到了可扩展性和健壮性:它可以处理巨大的文件(高达 16EiB ——很多!),可以有效地打包大量文件和目录,具有内置的错误检测方法(数据和元数据的校验和),支持透明压缩,集成多设备支持(RAID-0、RAID-1 和 RAID-10 到目前为止)等等 —— 参见 这里 获取更完整的列表。
在本教程中,我将重点介绍一个特别好的功能:快照。 Btrfs 允许您创建文件系统的只读或可写快照,而无需浪费空间来存储冗余数据。 结合 YaST 的 Snapper 模块,可以轻松跟踪文件系统更改并撤销不需要的修改。
一些背景
那么 btrfs 如何实现所有这些快照的强大功能呢? 答案是,它使用子卷。 子卷就像分区中的独立文件系统:您可以在同一个容器中拥有多个文件系统根。 借助写时复制 (COW),这意味着“几乎独立的”文件系统可以共享重复的数据,从而节省空间。(注意:子卷没有固定大小,它们会随着包含的数据增长和缩小。)
使用快照时,会在分区上的新子卷中创建整个文件系统的副本。 由于数据仅在更改时才会被复制,因此创建快照既节省时间和空间。
是时候测试一下了
准备工作
您需要 btrfs 工具(软件包 btrfsprogs)。 Snapper YaST 模块为 btrfs 的快照功能提供了一个不错的界面。 您可以创建一个新的 btrfs 分区仅用于实验,也可以转换现有的 ext3/ext4 文件系统。 至于转换,可以使用 btrfs-convert 完成;好处是可以保留原始 ext FS,并且可以轻松地返回到它(有关更多信息,请参见 wiki 页面)。 另外,openSUSE 从 11.3 开始在安装过程中提供 btrfs 作为选项。
列出快照
有了分区后,可以使用 snapper list 查看其快照,或使用 btrfs subvolume list 查看纯 btrfs 子卷/快照。
请注意,在 snapper 列表中,快照 #0 始终是当前系统。 另外请注意,对于 btrfs 快照和子卷是同一回事。
Snapper 配置
Snapper 存储分区的配置;您可以使用 snapper list-configs 查看它们
配置允许您指定何时创建快照、应保留每种类型的快照数量等。 它们存储在 /etc/snapper/configs 中;配置模板存储在 /etc/snapper/config-templates 中。
如果您的根文件系统是 btrfs,Snapper 将创建一个在您使用 YaST 或 zypper 时创建“pre”和“post”快照对,以及“timeline”快照。
您可以使用 snapper create-config 创建自己的配置(例如,用于 /home 或其他任何内容):snapper -c create-config [-t template] 您需要一个配置,每当您想要一个不同于默认值 / 的路径时。(始终使用 -c 指定它。)
创建快照
要手动创建快照,请使用 snapper [-c config-name] create --description "something that tells you what this is"(并参阅 snapper –help 获取更多选项);或者使用原生的
btrfs subvolume snapshot /[subvolume-name]
使用前者命令创建的快照将显示在 snapper list 中;使用后者创建的快照将显示为名为 in 的目录。 顺便说一句:Snapper 实际上将其快照存储在/.snapshots/中。
查看差异
要查看快照之间的差异,您可以将快照挂载到某个位置(使用 snapper mount,或直接浏览到快照位置)并自行查看,或者使用非常方便的 snapper diff:snapper diff 将为您提供两个给定快照之间更改的文件列表;snapper diff 将显示文件的差异。
恢复以前的快照
要恢复使用 snapper 创建的快照,请使用 snapper undochange []... 您还可以指定范围,例如 snapper undochange 42..47。
要使用原生的 btrfs 执行相同的操作,请使用 btrfs subvolume set-default 在 btrfs subvolume list 中可以找到,然后卸载并重新挂载。
Snapper GUI
Snapper 还提供了一个 YaST GUI,用于比较和恢复快照或单个文件。
** 总结** Btrfs 还没有一个纠错的 fsck,所以现在它还没有为需要高可靠性的系统做好准备。 但这并不意味着你不应该使用它 —— 这仅仅意味着你应该保留备份,无论如何你都应该这样做。 所以去尝试一下吧! 它的快照功能(以及所有其他优点)使其成为个人使用和服务器的真正有价值的文件系统,并且使用 Snapper 管理快照非常方便。 注意:内核 3.1 的修复程序尚未回移植到 3.1,因此您可能需要使用 3.2 内核。 请参阅例如 https://bugzilla.novell.com/show_bug.cgi?id=733843,以防您在使用 3.1 时遇到崩溃。