我正在运行一个 Ubuntu Linux NAS 服务器,该服务器有 4 个 2TB 驱动器,采用软件 RAID 10。
我在安装期间创建了阵列(使用 Ubuntu Server 光盘),但布局是near
且块大小是64
。
我想将块大小更改为256
并将布局更改为far
。我该怎么做?
以下是 mdstat 的输出:
root@server:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid10 sde1[3] sdd1[2] sdc1[1] sdb1[0]
3907026816 blocks 64K chunks 2 near-copies [4/4] [UUUU]
我希望以非破坏性的方式进行更改,以节省再次复制数据的时间,但数据已备份,因此破坏性更改也是可以的。
感谢您的任何帮助。
答案1
唯一的方法是销毁数组,然后使用新参数重新创建。Neil Brown 在他最近发布的 md 路线图中写道:
支持 RAID10 阵列重塑。
RAID10 阵列目前根本无法重塑。可以将“近”模式 RAID10 转换为 RAID0,但仅此而已。一些真正的重塑是可能的,应该实施。
完整路线图如下:http://lwn.net/Articles/428206/
答案2
我也想尝试一下,现在有几个注意事项。正如 Pawel 所说,如果不重建,就无法完成。没有捷径,我所做的只是禁用阵列,使用相同的分区重建,然后尝试挂载,希望奇迹般地一切会成功(但并没有)。如果你真的尝试了,你会得到一个内核恐慌(是的,我试过了,这就是发生的事情)。所以如果你有一个远程服务器并且没有 KVM 远程/重启(幸运的是我有,但很多人没有),这是一个非常糟糕的主意。
另一个需要注意的是,我很惊讶地发现 --layout=f2 中的相同分区比实际小了数百个块。为什么这是个问题?如果您使用的是 DRBD 之类的东西,其大小必须完全相同,那么这将是一个难题。
举一个有关 mdadm 的 DRBD 问题的例子,请参见此处(f2 布局中 512 个块的差异较小):RAID10 --layout=n2 size:数组大小:897500160(855.92 GiB 919.04 GB)RAID10 --layout=f2 size:数组大小:897500672(855.92 GiB 919.04 GB)
我实际上希望 mdadm 在 RAID10 中默认使用 --layout=f2。本质上,要获得真正的 RAID1 性能,您需要在 f2 布局中执行双磁盘 RAID10(非常愚蠢),但至少这是一个选择。