我有一个 CentOS 设置,其中有 sw RAID5 来保存我的数据。服务器坏了,所以我买了另一个盒子来迁移我的驱动器。唯一的问题是,我无法重建 RAID 阵列(甚至不确定它是否需要重建,可能只需要创建 /dev/md0 映射……但我甚至不知道如何确定我需要什么!)
一些细节:
- RAID5 软件(使用 mdadm)
- 4x 250GB 驱动器(2 个为 SATA,2 个为 EIDE - 这有关系吗?它在另一个盒子里运行良好...)
- 最新的 CentOS 发行版
- 使用 mdadm 构建
我对标准 Linux 的东西有相当多的经验,但硬件层面的东西让我很困惑。我花了一些时间在 SF 上谷歌搜索和其他地方,所以请对我的新手问题多多包涵 :)。
我的问题是:我该如何诊断问题?据我所知,当我尝试重建阵列时,我使用了错误的设备块,但我找不到仅显示具有某些物理连接的设备的命令。
是否有一些简单的方法可以让我运行 mdadm,让它扫描我所有的物理驱动器,然后说“嘿,驱动器 2、5、6、7 是一个软件阵列,要我安装它吗?”
我基本上只是从旧盒子中取出驱动器并将其放入新盒子中。它们显示在 BIOS 中。我需要采取哪些步骤才能启动、运行和安装阵列?
提前致谢!
答案1
如果您没有数据备份,则应谨慎行事。这些都不是特别困难,但如果它是数据的单一副本,那么缓慢而慎重地行动肯定是值得的。如果你做错了事,你的数据很容易就会被丢弃。
理论上,该mdadm --assemble --scan --auto-update-homehost
命令会执行您想要的操作。它会盲目地尝试自动组装和更新任何检测到的阵列。如果您有阵列的备份并且不介意冒险,您可以尝试一下。
如果您想“手动”执行操作,则首先需要找到存储阵列的所有设备。您可以查看的输出以dmesg
查找设备。查找类似 的条目hdg: 488397168 sectors (250059 MB) ...
。您应该能够识别连接到系统的所有设备。
使用该fdisk -l
命令显示磁盘上的分区。以下是一些示例输出:
[root@srv02 ~]# fdisk -l
...
Disk /dev/hdg: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hdg1 1 30401 24961765 fd Linux raid autodetect
...
我剪辑了输出以显示单个示例设备(一个 250GB 磁盘,上面有一个 Linux 软件 RAID 分区)。您应该看到列出了几个设备的分区表。
您可以使用以下命令检查分区上的超级块mdadm --examine device
,例如:
[root@srv02 ~]# mdadm --examine /dev/hdg1
/dev/hdg1:
Magic : a92b4efc
Version : 00.90.00
UUID : 3c8b281e:715ce6bb:39297707:3bc149b6
Creation Time : Mon Dec 17 17:28:35 2005
Raid Level : raid5
Used Dev Size : 243593472 (232.31 GiB 249.44 GB)
Array Size : 1217967360 (1161.54 GiB 1247.20 GB)
Raid Devices : 6
Total Devices : 6
Preferred Minor : 1
Update Time : Mon Mar 22 20:45:56 2010
State : clean
Active Devices : 6
Working Devices : 6
Failed Devices : 0
Spare Devices : 0
Checksum : 6d966f24 - correct
Events : 0.10988
Layout : left-symmetric
Chunk Size : 256K
Number Major Minor RaidDevice State
this 1 34 3 1 active sync /dev/hdg1
0 0 33 3 0 active sync /dev/hde1
1 1 34 3 1 active sync /dev/hdg1
2 2 56 3 2 active sync /dev/hdi1
3 3 57 3 3 active sync /dev/hdk1
4 4 88 3 4 active sync /dev/hdm1
5 5 89 3 5 active sync /dev/hdo1
您可以看到阵列的所有组件卷的设备都已写入超级块。您的新安装可能没有将相同的设备分配给卷,因此阵列无法自动组装。
按照上述步骤检查您预期成为 RAID 集一部分的所有分区。给定阵列的所有组件卷将具有相同的 UUID。找到所有部分后,使用命令重新组装阵列,将mdadm --assemble
新设备写回到超级块,如下所示(/dev/mdX
用您希望组装阵列的 MD 设备替换,用阵列的成员卷替换 /dev/partition0 等):
mdadm --assemble --update=homehost /dev/mdX /dev/partition0 /dev/partition1 ... /dev/partition6
这将重新组装阵列并使用新的主机名和设备更新超级块。完成此操作后,您可以cat /proc/mdstat
查看阵列的状况。最后,您可以mdadm --detail --scan >> /etc/mdadm.conf
将阵列的详细信息写入 /etc/mdadm.conf 文件。