运行 mdadm 16 x 8TB Raid 6 的 Ubuntu 22.04.3 LTS - 是否可以升级单个磁盘并在不使用 LVM 的情况下立即使用空间?

运行 mdadm 16 x 8TB Raid 6 的 Ubuntu 22.04.3 LTS - 是否可以升级单个磁盘并在不使用 LVM 的情况下立即使用空间?

更多背景信息...我有 4 个实时阵列(始终在运行供我使用) - 2 个重要的大阵列(40TB [已使用 20TB] 和 112TB [已使用 105TB] 正在备份到 16 x 8TB Raid6 阵列(112TB 可用总存储空间 - 如您所见,我需要备份的内容多于我有的空间)。所以,我需要更多存储空间...

我更好的解决方案是购买另一个 SuperMicro 24bay JBOD,但自从疫情爆发后,价格已经翻了一番,现在更便宜的方法是升级我的硬盘。但是,我买不起 16 x 16TB Exos 硬盘……对于家用服务器来说,这太贵了。:)

那么,是什么促使我尝试寻找一种方法来升级这一切呢?

我昨天确实购买了 3 个 16TB Exos。我在备份阵列上运行了以下命令...

#UPGRADE AN ARRAY *******************************************************
#FIRST ADD SPARES
mdadm /dev/md4 --add /dev/sdan  (a 16TB drive)
mdadm /dev/md4 --add /dev/sdao  (a 16TB drive)

#SECOND REPLACE DISKS (2 at a time)  replace 2 8TB drives with 16TB drives.
mdadm /dev/md4 --replace /dev/sdah /dev/sdai --with /dev/sdan /dev/sdao

问题 1:我没有使用 LVM。只是一个普通的 mdadm raid6,上面有一个 ext4 文件系统。因此,我的假设是... 在所有 8TB 驱动器升级到 16TB 之前,我无法使用额外的空间...问题 1:这是正确的吗?


我在想... 另一种方法是... 一旦我获得 9 x 16TB 驱动器,我就可以创建一个新阵列并将所有内容从这个 16 x 8TB 阵列直接复制到 9 x 16TB 阵列中,因为它们的大小相同,然后我就可以像以前一样扩展阵列... 一旦我有了 9 个磁盘阵列.. 很容易向其中添加内容...

mdadm --grow --raid-devices=10 --backup-file=/root/md4_grow.bak /dev/md4

进而...

resize2fs /dev/md4

所以,我只是不知道 mdadm 的局限性。我知道在我的 synology nas 中,我可以混合升级并立即充分利用任何驱动器……但是,即使我无法对文件系统进行混合控制,我还是更喜欢 mdadm。我想我可以在 raid6 之上添加 LVM……但是,我以前从未使用过它……不确定我是否可以将我现在拥有的当前阵列转换为 LVM,或者我是否必须清除所有内容。它是一个备份阵列……所以,从技术上讲我可以销毁它……但是,可怕的事情变成了……我不再有备份了。如果我在重建这个新阵列时主阵列发生故障怎么办?那么我会丢失大量数据。

我知道 raid 不是备份,但是这个备份阵列大部分时间都是关闭的。它只在备份时打开,然后又关闭。

对于超级重要的数据...我将其复制粘贴到几个不在磁盘阵列中的 10TB Exos 驱动器上,并将它们放在一个盒子里“以防万一”发生什么事情。遗憾的是,我必须选择以这种方式备份什么,因为我有太多数据无法正确备份...所以,我的备份阵列是唯一接近备份实时阵列所需大小的阵列...


假设性问题 #2:假设我最终用 16 个 16TB Exos 硬盘替换了我所有的 16 个 8TB IronWolfs……我是否只需要运行

resize2fs /dev/md4

mdadm 会看到...“嘿,你只使用了 16TB 中的 8TB!!!!让我们解决这个问题!!!”然后继续扩展以填满所有空间?还是说一旦升级了所有驱动器,我是否必须执行其他命令?

我读到,grow 可以取一个大小,但是...我从来没有用过它...我只用 grow 来向阵列添加另一个驱动器...例如从 --raid-devices=9 到 --raid-devices=10...然后运行

resize2fs /dev/md4

获取新发现的空间...


比我更有经验的用户的想法是什么?

(感谢 Gerald 格式化代码,我已经好几年没有问过问题并且忘记了这件事了)。

相关内容