我跑了
mdadm -A /dev/md0 /dev/sda1 /dev/sdb1
但仅/dev/sdb1
被加载到数组中。我在相同的两个驱动器上还有更多阵列。每次分区都sda
失败。dmesg
告诉我那sda
不同步...因为这是来自救援 CD。我sda
暂时断开了连接(硬件方面),因为它阻止了我启动。
我应该如何进行?这可能是驱动器损坏的原因吗?前几天我遇到了一些奇怪的文件系统问题,我无法追踪(也许是前兆):丢失的文件后来神奇地重新出现。也许缺少电缆?
主要问题是如何尝试重新同步驱动器?
cat /proc/mdstat
Personalities : [raid10]
md3 : active raid10 sda4[1]
955683840 blocks super 1.2 512K chunks 2 far-copies [2/1] [_U]
md2 : active raid10 sda3[1]
10483712 blocks super 1.2 512K chunks 2 far-copies [2/1] [_U]
md1 : active raid10 sda2[1]
10484736 blocks 512K chunks 2 far-copies [2/1] [_U]
md0 : active raid10 sda1[1]
101376 blocks 512K chunks 2 far-copies [2/1] [_U]
unused devices: <none>
更新
我badblocks
在整个其他驱动器上运行,并进行了长时间的smartctl
测试,没有发现任何问题。
请求输出mdadm -D /dev/md0
(如果需要其他的话我有md0-3)
/dev/md0:
Version : 0.90
Creation Time : Mon May 31 20:24:14 2010
Raid Level : raid10
Array Size : 101376 (99.02 MiB 103.81 MB)
Used Dev Size : 101376 (99.02 MiB 103.81 MB)
Raid Devices : 2
Total Devices : 1
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Mon Oct 25 07:58:25 2010
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
Layout : far=2
Chunk Size : 512K
UUID : 30ffe1d2:f5759995:820bb796:b5530bd2 (local to host slave-iv)
Events : 0.212
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 1 1 active sync /dev/sda1
由于我没有发现驱动器存在任何实际问题,但显然出了问题,我想知道下一步应该做什么?截至今天,重要数据已完成完整备份
更新2每当我尝试添加sda
回原来的内容(至少不擦除它)时,它就会因为内核幻数错误而搞乱我的启动过程。我猜是因为内核版本不同步。目前该驱动器位于外部外壳中sdd
。当该驱动器通过 USB 连接时,我是否应该重新添加(重新同步)该驱动器?这会引起问题吗?
df
Filesystem Size Used Avail Use% Mounted on
udev 10M 284K 9.8M 3% /dev
/dev/md1 9.9G 7.0G 2.4G 75% /
shm 3.0G 1.5M 3.0G 1% /dev/shm
/dev/md0 96M 15M 77M 16% /boot
/dev/md2 9.9G 6.5G 3.0G 69% /var
/dev/md3 898G 451G 402G 53% /home
none 1.0G 45M 980M 5% /tmp
/dev/sdb1 992M 36M 956M 4% /media/D4A4-B7C1
每个md驱动器都有一个对应的sda/sdb。我必须拉出阵列中的 sda 驱动器(或 0 驱动器)。
答案1
好的,显然您的一个磁盘目前在阵列中未处于活动状态。比方说,在当前的枚举下,/dev/md0
缺少/dev/sdb1
.
要添加/dev/sdb1
回之前的状态:
mdadm -a --re-add /dev/md0 /dev/sdb1
您可能需要重新检查数组以确保数据全部一致。
echo check >>/sys/block/md0/md/sync_action
要从头开始重新镜像:
确保它/dev/sdb1
已从阵列中完全删除。
mdadm -f /dev/md0 /dev/sdb1
mdadm -r /dev/md0 /dev/sdb1
擦除配置/dev/sdb1
,以便mdadm
将其添加回阵列,就像它是一个全新的磁盘一样。
mdadm --zero-superblock /dev/sdb1
作为成员添加/dev/sdb1
回数组。
mdadm -a /dev/md0 /dev/sdb1
同步 USB 磁盘的速度很慢。
但是,我猜您的问题是您的引导加载程序未正确安装在第二个驱动器上,这会阻止您在插入时启动。
您可以交换这两个驱动器的顺序,以便您的系统从具有已知良好配置的驱动器启动。
一旦启动并运行并且可以同步两个驱动器,您应该在两个驱动器上重新安装引导加载程序。这样,无论哪个驱动器丢失或首先枚举,您都可以始终启动。
重新安装引导加载程序的方式各不相同:
- 如果您使用
lilo
≥ 22.0,请在 中指定boot = /dev/md0
和并重新运行。如果您使用的是较旧的lilo 配置,请创建两个 lilo 配置,一个用于阵列中的每个磁盘,然后分别安装到每个磁盘。raid-extra-boot = mbr
/etc/lilo.conf
lilo
lilo
lilo
- 如果您使用 Grub,请尝试运行
grub-install /dev/sda
和grub-install /dev/sdb
。如果失败,请尝试使用 Grub shell 来setup (hd0)
查看setup (hd1)
Grubcat /boot/grub/device.map
的硬盘编号。