我决定尝试一下 btrfs 突袭功能。我设置了一个 btrfs
sudo mkfs.btrfs -m raid10 -d raid10 /dev/sda9 /dev/sdb9 /dev/sdc9 /dev/sdd9
Run Code Online (Sandbox Code Playgroud)
现在我想克隆我现有的 btrfs 分区(它位于 linux-raid 之上)。不能使用简单的cp -a
,因为有超过 40 个基于快照的备份(我希望保留这些备份),而且我只会多次填充我可以备用的所有存储。
到目前为止,我可以看到两个选项:
partclone.btrfs -s /path/to/original/fs -o /dev/sda9 -b
Run Code Online (Sandbox Code Playgroud)
我想我还需要 btrfs balance start /dev/sda9
和
do:增量复制,cp -a
尽可能多地放入存储中,然后用于bedup
去重文件,然后循环。
什么是首选(即最佳实践)方法?我更喜欢第一个;它应该花费更少的时间。或者也许在任何这些程序中都潜伏着一些邪恶的“陷阱”(当然,除了 btrfs 是实验性的这一事实)
第一个问题简直是无稽之谈;无论多么出色的工具partclone.btrfs
,它显然都不支持多设备文件系统。:-(
2年前我问过一个类似的问题。
但是,就我而言,我只打算将单个设备复制到 raid0 上。
我最终找到了解决方案。当时您无法从raid0 转换为raid10,但看起来从内核3.3 开始,您现在可以了。因此,该解决方案最终可能对您有用。
这种方法的一个问题是它复制了 fsuid。这意味着您不能在同一台机器上安装 FS 及其副本。当时,没有工具可以改变fsuid
FS 的,但现在可能已经改变了。
这个想法是在原始设备的顶部添加一个写时复制层,以便它可以被写入,但任何修改都在其他地方完成,您可以稍后丢弃。这意味着您需要额外的存储空间(例如在外部驱动器上)。
然后挂载 COW 的 FS 而不是原始文件,为 FS 副本添加设备并删除 COW 的设备。
对于写时复制,您可以使用设备映射器。
对于写入区域的一次性副本,这里我使用循环设备。
假设你想克隆/dev/sda
到/dev/sd[bcde]
:
创建 COW 后台存储:
truncate -s 100G /media/STORE/snap-store
losetup /dev/loop0 /media/STORE/snap-store
Run Code Online (Sandbox Code Playgroud)
现在卸载原始 FS(如果已安装)并modprobe -r btrfs
确保它不会干扰并使其忘记其设备扫描。
然后制作 COW 设备:
echo "echo 0 $(blockdev --getsize /dev/sda) snapshot /dev/sda /dev/loop0 N 8 | dmsetup create cowed
Run Code Online (Sandbox Code Playgroud)
现在/dev/mapper/cowed
就像/dev/sda
除了写入它的任何东西都会结束/dev/loop0
并且/dev/sda
不会被触及。
现在,您可以挂载它:
mount /dev/mapper/cowed /mnt
Run Code Online (Sandbox Code Playgroud)
添加其他设备:
btrfs dev add /dev/sd[bcde] /mnt
Run Code Online (Sandbox Code Playgroud)
并删除旧的:
btrfs dev del /dev/mapper/cowed /mnt
Run Code Online (Sandbox Code Playgroud)
当这一切结束时,您可能想要关闭并拔掉/dev/sda
电源或使其成为只读,因为它与其他的 fsuid 具有相同的 fsuid,btrfs
可能仍然会弄乱它。
现在,如果我理解正确,假设您最近使用了 btrfs-prog,您应该能够执行以下操作:
btrfs balance start -d convert=raid10 /mnt
Run Code Online (Sandbox Code Playgroud)
转换为raid10。理论上,这应该确保每个数据块都被复制到至少 2 个磁盘上。
我强烈建议您首先在循环设备上对虚拟 btrfs 进行测试,因为所有这些都来自记忆,我可能弄错了(例如,请参阅我编辑前的初始答案)。
请注意,从内核 3.6 开始,btrfs 实现了类似于 zfs 的发送/接收。这可能是你的一个选择。
归档时间: |
|
查看次数: |
14583 次 |
最近记录: |