如何将 btrfs 卷移动到更大的驱动器?

如何将 btrfs 卷移动到更大的驱动器?

我的驱动器上有一个 btrfs 分区,我想将其移至更大的新驱动器。我想按原样移动卷,保留所有子卷和(快照程序)快照。

最好的方法是什么,最好是通过某种方法来检查副本的完整性和保真度?

我看过的一些事情:

Btrfs 发送

我不确定如何重建快照结构(我必须手动指定父级?),如何一次发送多个子卷,如何最好地检查完整性(也许只是包括 .snapshot 目录在内的目录的差异?) ,或者我是否应该使用“克隆”参数及其作用。

巴特辛克

看来是被抛弃了。专为备份而设计。不确定它是否提供比 btrfs send 更多的功能。

BTRBK

专为备份而设计,不确定它是否适合我的用例。

DD

可能级别太低,可能存在块大小、分区大小等问题。

我目前的印象是“btrfs send”后跟 diff 是最好的选择,但我不知道如何处理发送每个子卷上的大量快照。

答案1

假设原始 btrfs 分区和新的、更大的驱动器或分区位于同一系统上,最简单/最好的方法可能是使用btrfs replace.

man btrfs-replace详情请参阅。这是摘录,稍微重新格式化以提高可读性:

btrfs replace start [options] <srcdev>|<devid> <targetdev> <path>

替换 btrfs 文件系统的设备。

在实时文件系统上,将当前存储在源设备上的数据复制到目标设备。

如果源设备不再可用,或者-r设置了该选项,则仅使用 RAID 冗余机制构建数据。操作完成后,源设备将从文件系统中删除。

如果<srcdev>是数值,则假定为挂载在 的文件系统的设备 ID <path>,否则为源设备的路径。如果源设备与系统断开连接,则必须使用 devid 参数格式。

需要<targetdev>与 尺寸相同或更大<srcdev>

笔记必须调整文件系统的大小才能充分利用更大的目标设备;这可以通过以下方式实现

btrfs filesystem resize <devid>:max /path


顺便说一句,即使您想为此 btrfs 卷使用所有新驱动器,我也建议您创建一个包含一个大分区的分区表,而不是仅使用裸露的未分区驱动器。这是一种标记和保留磁盘空间的便捷方法,这样其他程序就不会认为它是未使用的可用空间,并有助于为您提供分区和格式化服务。

相关内容