长版本:我正在运行带有软件 raid1(mdadm)的 Red Hat Enterprise Linux 5(REHL5)机器。
几天前,我去备份一些 MySQL 数据,突然间我无法再登录机器了。我输入用户名登录,然后它就一直呆在那里。如果按下控制序列,它们会出现在屏幕上,但永远不会登录。它也没有响应 ctrl+alt+delete。所以我硬关机了。
我重新启动它并通过以下方式监控 raid1 阵列:
mdadm --detail /dev/md1
该数组保存根挂载点。
它开始重新同步阵列。我不确定这是因为崩溃还是因为我硬关机。无论如何我让它完成了:
[f@mysqldatanode ~]# mdadm --detail /dev/md1
/dev/md1:
Version : 00.90.03
Creation Time : Thu Apr 19 15:28:52 2007
Raid Level : raid1
Array Size : 479893568 (457.66 GiB 491.41 GB)
Device Size : 479893568 (457.66 GiB 491.41 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 1
Persistence : Superblock is persistent
Update Time : Fri Dec 25 10:03:50 2009
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
UUID : ab4849de:1f4f41c4:defd01e8:a4979ca6
Events : 0.78
Number Major Minor RaidDevice State
0 8 2 0 active sync /dev/sda2
1 8 18 1 active sync /dev/sdb2
我查看了一些日志(/var/log/messages*),发现了几条类似下面的消息,表明硬盘出现故障:
Dec 21 11:39:47 localhost kernel: sd 0:0:1:0: SCSI error: return code = 0x08000002
Dec 21 11:39:47 localhost kernel: sdb: Current: sense key: Medium Error
Dec 21 11:39:47 localhost kernel: Additional sense: Unrecovered read error
Dec 21 11:39:47 localhost kernel: Info fld=0x3348912
Dec 21 11:39:47 localhost kernel: end_request: I/O error, dev sdb, sector 53774610
Dec 21 11:39:47 localhost kernel: raid1:md1: read error corrected (8 sectors at 53565760 on sdb2)
Dec 21 11:39:48 localhost kernel: raid1: sdb2: redirecting sector 53565648 to another mirror
因此我尝试寻找坏块并且它又以同样的方式锁定了。
[f@mysqldatanode ~]# badblocks -s /dev/md1
Checking for bad blocks (read-only test): 0/ 479893568
那么我应该如何评估这两个驱动器的运行状况?由于有问题的阵列保存根挂载点,我是否需要将它们移动到另一台机器上进行分析?
答案1
您可以通过 mdadm 使 /dev/sdb 设备故障(最好确保使整个设备故障,即所有在其上运行的 mds 都故障),然后检查是否有错误,但从您描述的情况来看,您最好只是更换该设备。
我经常遇到 ide 设备出现故障的情况,我不断重新添加被拒绝的设备,直到最后计算机开始像您描述的那样挂起。更换故障设备解决了问题。
无论哪种情况,您都应该尽快进行备份。
答案2
读取错误很常见,但磁盘可以自行纠正大部分错误。有些磁盘会撒谎并在 SMART 信息中报告读取良好,有些会报告正确的错误数量和恢复的 ECC 数量。有些磁盘(尤其是垂直磁盘)可能会出现数百万个读取错误,并且恢复的 ECC 比例可达 99.99999%(或更多)。
但是这次/dev/sdb2无法正确读取8个扇区。
然后,softraid 只需从其他磁盘获取丢失的扇区并重写它们即可恢复。然后它确定一切又正常了。
这可能是硬盘损坏的迹象,但也可能是偶然的错误、灰尘颗粒或其他原因。在报废此硬盘之前,请等待并观察是否会出现更多错误。