我打算在 Linux 的 mdadm 下用 RAID5 中的几个 SSD 构建一个新存储。我现在正在考虑购买 5 或 6 个 SSD。
如果我将来添加另一个 SSD,将它添加到 RAID5 是否需要对所有当时使用的 SSD 进行完整写入?SSD 的写入能力有限,这对我来说是一个小指标,可以让我现在购买更多可用空间。我不确定是否必须重新排列数据才能增加数组。
我打算在 Linux 的 mdadm 下用 RAID5 中的几个 SSD 构建一个新存储。我现在正在考虑购买 5 或 6 个 SSD。
如果我将来添加另一个 SSD,将它添加到 RAID5 是否需要对所有当时使用的 SSD 进行完整写入?SSD 的写入能力有限,这对我来说是一个小指标,可以让我现在购买更多可用空间。我不确定是否必须重新排列数据才能增加数组。
我有一个 3.7TiB 的实时 btrfs 文件系统,已满 90%,包括旧快照和新的 4TB 备份硬盘。如何将所有现有快照复制到备份硬盘?
我试过了
# btrfs send home_1 home_2 home_3 share_1 share_2 share_3 ...
但在传输 2/3 的快照之前备份硬盘已满。所以我做了一些研究:
# ### create test image
# dd bs=1M count=1000 > btrfs_test.dd
# mkfs.btrfs btrfs_test.dd
# ### create snapshots
# btrfs subvol create testvol/
# btrfs subvol snapshot -r testvol/ testvol_0/
# ### (copy some ISO image)
# btrfs subvol snapshot -r testvol/ testvol_1/
# ### (proceed until testvol_3)
然后我的测试文件系统已满 91%,使用了 818MiB。
# btrfs send testvol_* | wc -c
At subvol testvol_0
At subvol testvol_1
At subvol testvol_2
At subvol testvol_3
1466441978 # 1398MiB >> 1000MiB
当简单地用 1 个命令发送所有快照时,数据被复制,并且流的大小以及接收端的快照大小超过了原始使用的空间和硬盘的容量。
所以实际的问题变成了:如何复制多个快照而不复制其中两个或多个快照中包含的数据?
对于这个简单的测试用例,我成功地尝试了增量方法:
# ( btrfs send testvol_0; btrfs send -p testvol_0 testvol_1; btrfs send -p testvol_1 testvol_2; btrfs send -p testvol_2 testvol_3 ) | wc -c
At subvol testvol_0
At subvol testvol_1
At subvol testvol_2
At subvol testvol_3
838778546 # 800 MiB < 1000MiB
但是在真实的文件系统上有多个子卷,每个子卷都有多个快照。我无法定义任何与 一起使用的顺序-p
。如果一个数据块在子卷之间共享home_1
,当然我只想传输和存储一次home_2
。share_3
任何想法如何做到这一点?