ext4 到 btrfs 转换:如果我在转换过程中意外断电,我会丢失数据吗?

ext4 到 btrfs 转换:如果我在转换过程中意外断电,我会丢失数据吗?

我想将 3TB 80% 完整的 ext4 块设备转换为 btrfs,并且我想估计该过程中涉及的风险。

如果我在转换过程中意外断电,数据会丢失吗?

根据我使用 btrfs 的两年经验,事实证明该文件系统在断电事故期间仅具有中等安全性 - 如果连续断电两次或更多次,它会破坏我的一些数据。

答案1

数据丢失很可能是由于控制器对磁盘的写操作失败,同时也有可能整个磁盘分区表被损坏。

正如所说,事先进行备份,但转换操作本身是这样设计的,不会触及原始数据。 Btrfs 制作原始 FS 版本的快照,并使用空闲块进行进一步操作。

如果您将在 100GB 分区上创建新的 ext4 FS 并运行

#df -h
Filesystem                        Size  Used Avail Use% Mounted on
/dev/sda3                          99G   60M   94G   1% /ext4convert2btrfs

然后卸载并运行转换:

#unmount /ext4convert2btrfs
#btrfs-convert /dev/sda3
creating btrfs metadata.
creating ext2fs image file.
cleaning up system chunk.
conversion complete.

然后再次mount run df,你会看到类似这样的内容:

Filesystem                        Size  Used Avail Use% Mounted on
/dev/sda3                         100G  1.8G   66G   3% /ext4convert2btrfs

其余空间由主 FS 快照使用。只有系统管理员才能决定何时可以安全地删除快照并允许覆盖原始数据。

要恢复可用空间并使转换永久化,请执行以下操作:

#cd /ext4convert2btrfs
#btrfs subvol delete ext2_saved
#btrfs balance start /ext4convert2btrfs
#df -h
Filesystem                        Size  Used Avail Use% Mounted on
/dev/sda3                         100G  544K   99G   1% /ext4convert2btrfs

就是这样 :)

答案2

如果分区转换期间断电,您的数据可能会损坏。为此,始终建议在执行此类操作之前进行备份。

但是,Btrfs-convert 有一个-r用于恢复转换的开关,因此您可以使用该开关,以防deconvert必须取消它。我还发现一位用户报告说,在此处的答案之一中恢复通常要快得多:https://askubuntu.com/questions/256652/ext4-to-btrfs-conversion-how-long-can-it-take-space-requirements

转换速度相对较快,因此您不应期望运行它需要几天的时间。我最近在 SSD 驱动器上转换了约 20Gb 的分区,只花了几秒钟。假设这 3TB 数据位于 HDD 中,则需要更长的时间。

相关内容