如何将你的文件系统转换为 Btrfs|Linux 中国

图片
导读:这篇概述文章将告诉你为何以及如何迁移你的当前分区到 Btrfs 文件系统。如果你对此感兴趣,请阅读这篇分步指南来完成。
本文字数:6984,阅读时长大约:10分钟
LCTT 译者 :北梦南歌
翻译: 20.0 篇
|
贡献: 1675 天
2017-10-08
2022-05-09
https://linux.cn/lctt/hwlife
引言
这篇概述文章将告诉你为何以及如何迁移你的当前分区到 Btrfs 文件系统。如果你对此感兴趣,请阅读这篇分步指南来完成。
从 Fedora 33 开始,新安装的 Fedora 操作系统默认文件系统为 Btrfs。我确信大部分用户现在已经听说了它的优势:写时复制、内置校验、灵活的压缩方式、简易的快照和回滚方式。它确实是一个现代化的文件系统,为桌面存储带来新的功能。
在升级到 Fedora 33 后,我想利用 Btrfs 的优势,但对我个人来说,我不想因为“只是为了改变文件系统”而去重装整个系统。我发现(只有)寥寥无几的具体如何做转换的教程,所以我决定在这里分享我的详细经验。
小心!
这样做你是在玩火。希望你阅读以下内容时不要感到惊讶:
在编辑分区和转换文件系统时,你的数据可能会被破坏和丢失。最终,你可能会得到一个不能启动的操作系统,并面临数据恢复的风险。你可能会无意删除你的分区,或者以其它方式破坏了你的操作系统。
这些转换过程即使对于生产系统来说也是安全的 —— 前提是你提前做好了计划,对关键数据做好了备份和回滚计划。作为一个 可以执行超级权限的系统管理员,你可以在没有限制、没有任何常规安全防护措施的情况下,做任何事情。
安全的方式:重装 Fedora
重装操作系统是转换文件系统到 Btrfs 的 “官方” 方式,推荐给大多数用户使用。因此,如果在这个教程中有那么一点不确定,就选择这种方式。步骤大致如下:
1. 备份你的主文件夹和你系统中可能会用到的任何数据,比如 。(编者按:虚拟机也是这样)
2. 将已安装的安装包以列表形式保存到到文件中。
3. 重新安装 Fedora,删除你当前的分区,并选择新的 Btrfs 默认分区方案。
4. 恢复主文件夹的内容,并使用软件包列表文件重装软件包。
转换的利弊
让我们快速澄清一下:这种文件系统转换有什么优势和劣势?
优势:
◈ 当然,不需要重新安装!你的系统里的所有文件和之前一模一样。
◈ 技术上来说,没有备份的情况下,就地进行是可能的。
◈ 你会学到许多关于 Btrfs 的知识!
◈ 如果所有都按计划进行,会是相当快的一个过程。
劣势:
◈ 你必须熟悉终端环境和 shell 命令。
◈ 你可能会丢失数据,参见上文。
◈ 如果出了什么问题,你得自己解决。
特别之处:
◈ 你需要大约 20% 的可用磁盘空间才能成功转换。但对于完整的备份和重装方式,你可能需要的空间更多。
◈ 你可以在转换过程中自定义你分区的所有参数,但如果选择重装,你也可以从 Anaconda 自定义。
LVM 怎么办?
在近期几次 Fedora 安装中,LVM 布局一直是默认的。如果你有一个带有多个分区(例如 和 )的 LVM 分区布局,你得以某种方式合并它们,来获得 Btrfs 所有性能。
如果选择这样做,你可以单独转换分区到 Btrfs 文件系统,同时保留卷组。然而,迁移到 Btrfs 文件系统的优势之一是摆脱 LVM 分区布局强加的限制。你也可以利用 Btrfs 文件系统提供的收发功能在转换后来合并分区。
另见 《Fedora 杂志》:利用 LVM 回收硬盘空间fedoramagazine.org、从 Btrfs 快照中恢复文件fedoramagazine.org以及在 Btrfs 和 LVM-ext4 两者之间做选择fedoramagazine.org。
了解 Btrfs
建议阅读以下内容对 Btrfs 文件系统是什么有一个基础的了解。如果你没有把握,只有选择重装 Fedora 这种安全的方式。
必须了解的:
◈Fedora Magazine:Btrfs 来到 Fedora 33fedoramagazine.org
有用的资源:
转换步骤
创建一个实时镜像
由于不能转换已挂载的文件系统,我们将通过 Fedora实时镜像(Live Image)进行。安装Fedora 镜像写入工具getfedora.org,然后 “烧录” Fedora 33 到你的 U 盘中来创建实时镜像。
释放磁盘空间
会在分区的剩余空间重新创建文件系统的元数据,同时保持所有已有的 ext4 文件系统数据还在它当前的位置上。
不幸的是,所需的剩余空间的大小无法提前知道:如果没有足够的空间,转换将会失败(但不会破坏数据)。这里有一些释放空间有用的方法:
◈ 利用 来识别大容量的文件和文件夹,然后移除。如果可能的话,不要手动删除主文件夹以外的文件。
◈ 清理旧的系统日志:。
◈ 如果你正使用 Docker,请小心地使用类似 、 这样的工具。
◈ 清理 GNOME Boxes 之类的虚拟机内不用的镜像。
◈ 清理不用的软件包和 Flatpak 包:、。
◈ 清理软件包缓存:、。
◈ 如果你有把握,你可以谨慎的清理 文件夹。
转换到 Btrfs
备份你所有有价值的数据,确保你的系统已完全更新,然后重启到实时镜像。运行 工具找到你所拥有的设备的路径,比如 (如果你在使用 LVM,它可能看起来有所不同)。检查文件系统然后执行转换:(编者按:以下命令使用 root 用户运行,谨慎使用!)
这将会花十几分钟甚至几个小时,依据分区的大小和是机械硬盘还是固态硬盘。如果你看到错误,你可能需要更多剩余空间。作为最后的手段,你可以尝试 。
怎样回滚?
如果因为某些原因转换失败,你的分区将保持在 ext4 文件系统或者它之前的状态。如果你想在成功转换之后回滚,简单如下:
警告! 如果你做了以下这些事情之一,你将永久失去回滚的功能:碎片整理、均衡或者删除 子卷。
由于 Btrfs 文件系统的写时复制特性,你可以安全的复制/移动甚至删除文件、创建子卷,因为 会保持引用旧数据。
挂载和检查
现在这个分区应该已经有了 Btrfs 文件系统。挂载它然后查看你的文件……和子卷!
创建子卷
我们希望实现一个“扁平”子卷布局,这和 Anaconda 默认创建的布局相同:
你可以跳过这个步骤,或者使用一个不同的布局。这种特殊结构的优势是你可以轻松的创建 的快照,并且对每个子卷使用不同的压缩和挂载参数。
这里我们已经创建了两个子卷。 是一个完整的分区快照,而 开始是一个空子卷,然后我们往里复制内容。(这个 命令不会重复数据,所以会很快。)
◈ 在 目录(顶层子卷),删除除了 、 和 之外的所有内容。
◈ 重命名 和 子卷为 和 。
◈ 在 子卷里,清空 目录,以便之后我们能够挂载 子卷。
如果都做对了,那就很简单了!
修改 fstab 分区表
为了重启之后挂载新卷,必须要修改 ,用新的行来代替旧的 ext4 文件系统挂载行。
你可以使用 命令来找到你的分区的 UUID。
(注意如果指向的是同一个分区,那么这两个 UUID 是相同的。)
这些都是新安装的 Fedora 33 的默认值。在 中,你也可以选择自定义压缩和添加类似 这样的参数。
chroot 到系统
如果你曾经做过系统恢复,我想你肯定知道这些命令。这里,我们将得到一个 基本上 在你系统里的 shell 提示符,可以访问网络。
首先,我们必须重新挂载 子卷到 目录,然后挂载 和 分区(它们可能有所不同,这取决于你的文件系统布局):
然后我们继续挂载系统设备:
重装 GRUB 及内核
最容易的方法就是重装 GRUB 和 内核,因为它完成了所有必要的配置 —— 现在我们可以访问网络了。所以,在 chroot 环境内部:
如果你是支持 UEFI 的系统,这里是适用的。如果你是 BIOS 的系统,请查看下面的文档。重启之前,让我们查看是否一切正常:
你应该在 和 有正确的分区 UUID 或指向( 可能没有更新,如有必要可以编辑它),并在 中看到 配置和在 initramfs 镜像中有 btrfs 模块。
重启
现在系统能够正常启动。如果不能,别慌,回到实时镜像修复这个问题。最坏的情况下,你可以从那里重装 Fedora 。
首次启动之后
检查你的新 Btrfs 文件系统一切都正常。如果你觉得没问题,你需要回收旧的 ext4 快照使用的空间,进行碎片整理和平衡子卷。后两者可能要花一些时间,并且相当耗费资源。
对此你必须这样挂载顶级子卷:
然后,当机器有空闲时间时,运行这些命令:
这个属性只会对在这些文件夹里的新文件生效。复制镜像并删除原镜像,你可以通过 确认结果。
总结
我真心希望你发现这个教程是有用的,并且能够对是否在你的系统上转换为 Btrfs 做出谨慎而明智的决定。祝你成功转换!
via:https://fedoramagazine.org/convert-your-filesystem-to-btrfs/
作者:Gergely Gombos选题:lujun9972译者:hwlife校对:wxy
本文由LCTT原创编译,Linux中国荣誉推出
欢迎遵照 CC-BY-SA 协议规定转载,
如需转载,请在文章下留言 “转载:公众号名称”,
我们将为您添加白名单,授权“转载文章时可以修改”。