如何在不丢失数据的情况下将 ext4 分区转换为 btrfs(或其他文件系统)?

Uri*_*era 18 filesystem btrfs

/home如果可能的话,我希望将我当前的分区转换为 BTRFS(或其他文件系统)而不会丢失数据,我应该采取哪些步骤?安全吗?

nan*_*rad 20

如果您安装btrfs-toolssudo apt-get install btrfs-tools,那么btrfs-convert命令提供给您。

首先运行一个fsck

sudo fsck.ext3 -f /dev/xxx
Run Code Online (Sandbox Code Playgroud)

然后,转换!

sudo btrfs-convert /dev/xxx
Run Code Online (Sandbox Code Playgroud)

要回滚,请运行:

sudo btrfs-convert -r /dev/xxx
Run Code Online (Sandbox Code Playgroud)

要清理一些空间并使转换永久化,请删除/ext2_saved/image分区。

当然,虽然这是一个相对安全的过程,因为只需要移动 1 MB,并且原始 Ext2/3/4 FS 可以作为映像使用,但由您决定是否备份。与任何文件系统操作一样,存在数据丢失的固有风险。

您的数据以及您的 Ext4 元数据保持原样。但是,移动了前 1 MB,并在 Ext4 可用空间内创建了一系列 BTRFS 元数据。

部分参考:https : //btrfs.wiki.kernel.org/index.php/Conversion_from_Ext3

  • @XavierT。如果 `fstab` 明确提到 ext2/3/4(只需将其更改为 `auto` 或 `btrfs`)或者它包含特定于 ext 的挂载选项(需要根据具体情况进行评估),则必须编辑它基础上,打开一个问题并发布您的 fstab)或者如果该行不以“0 0”结尾(将其更改为“0 0”)。GRUB 不需要更改,因为它只处理 root,而不处理 home。在没有 fsck 的情况下进行 btrfs-convert 就像在没有事先让机械师检查您的汽车的情况下参加赛车 - 您可能会这样做并成功,但除非您有很好的理由,否则这只是愚蠢的。 (4认同)
  • 也许这需要另一个单独的问题,但我在您的回答中没有看到对 fstab 或 grub 的任何修改。如果我只使用 btrfs-convert ,下次启动会成功吗? (2认同)
  • 并且 btrfs-convert 似乎也已在 Ubuntu 18.04 上删除(我没有检查早期版本)。 (2认同)