蚊章汇 - Gergely Gombos
type: channel
link: https://linuxcn.bwsl.wang/author/1650/
description: Gergely Gombos
items: 如何将你的文件系统转换为 Btrfs

如何将你的文件系统转换为 Btrfs
type: item
date: 2022-05-11T23:46:14+08:00
description: 引言这篇概述文章将告诉你为何以及如何迁移你的当前分区到 Btrfs 文件系统。如果你对此感兴趣，请阅读这篇分步指南来完成。从 Fedora 33 开始，新安装的 Fedora 操作系统默认文件系统为 Btrfs。我确信大部分用户现在已经听说了它的优势：写时复制、内置校验、灵活的压缩方式、简易的快照和回滚方式。它确实是一个现代化的文件系统，为桌面存储带来新的功能。在升级到 Fedora 33 后，我想利用 Btrfs 的优势，但对我个人来说，我不想因为“只是为了改变文件系统”而去重装整个系统。我发现（只有）寥寥无几的具体如何做转换的教程，所以我决定在这里分享我的详细经验。小心！这样做你是在玩火。希望你阅读以下内容时不要感到惊讶：在编辑分区和转换文件系统时，你的数据可能会被破坏和丢失。最终，你可能会得到一个不能启动的操作系统，并面临数据恢复的风险。你可能会无意删除你的分区，或者以其它方式破坏了你的操作系统。这些转换过程即使对于生产系统来说也是安全的 —— 前提是你提前做好了计划，对关键数据做好了备份和回滚计划。作为一个 可以执行超级权限的系统管理员，你可以在没有限制、没有任何常规安全防护措施的情况下，做任何事情。安全的方式：重装 Fedora重装操作系统是转换文件系统到 Btrfs 的 “官方” 方式，推荐给大多数用户使用。因此，如果在这个教程中有那么一点不确定，就选择这种方式。步骤大致如下：备份你的主文件夹和你系统中可能会用到的任何数据，比如 /etc。（编者按：虚拟机也是这样）将已安装的安装包以列表形式保存到到文件中。重新安装 Fedora，删除你当前的分区，并选择新的 Btrfs 默认分区方案。恢复主文件夹的内容，并使用软件包列表文件重装软件包。对于详细的步骤和命令，请看一位社区用户在 ask.fedoraproject.org 站点的评论。如果正确完成，你将得到一个和之前一样的操作系统，使丢失数据的风险最小化。转换的利弊让我们快速澄清一下：这种文件系统转换有什么优势和劣势？优势：当然，不需要重新安装！你的系统里的所有文件和之前一模一样。技术上来说，没有备份的情况下，就地进行是可能的。你会学到许多关于 Btrfs 的知识！如果所有都按计划进行，会是相当快的一个过程。劣势：你必须熟悉终端环境和 shell 命令。你可能会丢失数据，参见上文。如果出了什么问题，你得自己解决。特别之处：你需要大约 20% 的可用磁盘空间才能成功转换。但对于完整的备份和重装方式，你可能需要的空间更多。你可以在转换过程中自定义你分区的所有参数，但如果选择重装，你也可以从 Anaconda 自定义。LVM 怎么办？在近期几次 Fedora 安装中，LVM 布局一直是默认的。如果你有一个带有多个分区（例如 / 和 /home）的 LVM 分区布局，你得以某种方式合并它们，来获得 Btrfs 所有性能。如果选择这样做，你可以单独转换分区到 Btrfs 文件系统，同时保留卷组。然而，迁移到 Btrfs 文件系统的优势之一是摆脱 LVM 分区布局强加的限制。你也可以利用 Btrfs 文件系统提供的收发功能在转换后来合并分区。另见 《Fedora 杂志》： 利用 LVM 回收硬盘空间、从 Btrfs 快照中恢复文件 以及 在 Btrfs 和 LVM-ext4 两者之间做选择。了解 Btrfs建议阅读以下内容对 Btrfs 文件系统是什么有一个基础的了解。如果你没有把握，只有选择重装 Fedora 这种安全的方式。必须了解的：Fedora Magazine：Btrfs 来到 Fedora 33Btrfs 系统管理指南, 尤其是 关于子卷和 flat 子卷布局。btrfs-convert 指南有用的资源：man 8 btrfs – 命令行界面man 5 btrfs – 挂载参数man btrfs-convert – 要用到的转换工具man btrfs-subvolume – 管理子卷转换步骤创建一个实时镜像由于不能转换已挂载的文件系统，我们将通过 Fedora 实时镜像 Live Image 进行。安装 Fedora 镜像写入工具，然后 “烧录” Fedora 33 到你的 U 盘中来创建实时镜像。释放磁盘空间btrfs-convert 会在分区的剩余空间重新创建文件系统的元数据，同时保持所有已有的 ext4 文件系统数据还在它当前的位置上。不幸的是，所需的剩余空间的大小无法提前知道：如果没有足够的空间，转换将会失败（但不会破坏数据）。这里有一些释放空间有用的方法：利用 baobab 来识别大容量的文件和文件夹，然后移除。如果可能的话，不要手动删除主文件夹以外的文件。清理旧的系统日志：journalctl –vacuum-size=100M。如果你正使用 Docker…