我使用 4 个 HD 驱动器在 Raid10 阵列 (MD) 上安装了 ubuntu 服务器 10.04。
众所周知,Raid10 是 Raid 1 + Raid 0。因此,两个 HD 驱动器被剥离并且它们被镜像(反之亦然)。
有没有简单的方法可以确定这四个驱动器中的哪两个被剥离了,哪些是镜像的?
输出如下:/proc/mdstat
Personalities : [raid10] [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4]
md0 : active raid10 sda1[0] sdb1[1] sdd1[3] sdc1[2]
388992 blocks 64K chunks 2 near-copies [4/4] [UUUU]
md2 : active raid10 sda7[0] sdb7[1] sdd7[3] sdc7[2]
19529600 blocks 64K chunks 2 near-copies [4/4] [UUUU]
md4 : active raid10 sda9[0] sdb9[1] sdd9[3] sdc9[2]
9762688 blocks 64K chunks 2 near-copies [4/4] [UUUU]
md1 : active raid10 sda6[0] sdb6[1] sdd6[3] sdc6[2]
19529600 blocks 64K chunks 2 near-copies [4/4] [UUUU]
md5 : active raid10 sda10[0] sdb10[1] sdd10[3] sdc10[2]
195309440 blocks 64K chunks 2 near-copies [4/4] [UUUU]
md6 : active raid10 sda11[0] sdb11[1] sdd11[3] sdc11[2]
1558599552 blocks 64K chunks 2 near-copies [4/4] [UUUU]
md3 : active raid10 sda8[0] sdb8[1] sdd8[3] sdc8[2]
146483072 blocks 64K chunks 2 near-copies [4/4] [UUUU]
unused devices: <none>
答案1
可能取决于使用什么选项来制作数组。
阅读 man md (4)。默认值为 n2(近)。以下是手册的一部分:
配置 RAID10 阵列时,需要指定 ... ... 副本应为“近”、“偏移”还是“远”。
当选择“近”副本时,给定块的多个副本将连续分布在阵列的条带上,因此数据块的两个副本很可能位于两个相邻设备上的相同偏移处。当选择“远”副本时,给定块的多个副本会彼此相距很远。所有数据块的第一个副本将以 RAID0 方式跨所有驱动器的早期部分进行条带化,然后所有块的下一个副本将跨所有驱动器的后期部分进行条带化,始终确保任何给定块的所有副本都在不同的驱动器上。
答案2
呃...奇怪的问题,它们都是条纹和镜像的。
基本上,您有两组两个磁盘,每组都被剥离,并且这两组是镜像的,它们是主动-主动的,而不是一组只是放在那里。
答案3
如果问题实际上是从不同的驱动器启动,正如人们从您对 Chopper3 的回答的评论中可能判断的那样,那么答案与 MD 无关,而是与主引导记录位于哪个驱动器上有关,不是吗?
为了回答字面问题,IIRC mdadm 通过 UUID 识别数组成员,因此切换它们应该是安全的。
答案4
这里有两个不同的问题。
--交换磁盘:
这始终有效,因为 md 使用内部 UUID 编号来表示哪个磁盘属于给定阵列,而不是 /dev 路径或物理路径。因此,将磁盘从一个端口移到另一个端口不会产生任何影响,因为 md 可以看到它需要的所有磁盘。检查 mdadm --misc --detail 的输出以获取 UUID 字段。这被视为 md 的一个功能。
--了解哪些磁盘是镜像的以及哪些磁盘对是连接的。
假设采用 1+0 拓扑,其中 b、c、d、e 磁盘大小均相同例如:
[root@of ~]# cat /proc/mdstat
Personalities : [raid10]
md0 : active raid10 sde1[3] sdd1[2] sdc1[1] sdb1[0]
181760 blocks super 1.2 64K chunks 2 near-copies [4/4] [UUUU]
我们面临的问题是如何判断哪些磁盘可以在不导致卷故障的情况下被移除。