软件 RAID 在几天后将磁盘设置为故障,直到下次重新启动

软件 RAID 在几天后将磁盘设置为故障,直到下次重新启动

我的 Debian(杰西) 系统运行几天后,我的一个 RAID 磁盘出现故障。如果我重新启动机器,几天后一切都会恢复正常,直到问题再次出现。

这是我的环境:

系统正在运行Debian Jessie 64位并有两个物理磁盘,用作RAID1管理

该系统还使用逻辑卷管理器以便更加灵活地处理分区。

在 - 的里面VirtualBox 5.1.10 环境有两个虚拟机正在运行。这些机器的 .VDI 文件也位于逻辑卷管理器上文提到的。

现在我遇到的问题是,几天后其中一个磁盘似乎出现错误 - 至少 RAID 控制器将该磁盘设置为故障。在过去两个月中,两个物理磁盘都已更换为新磁盘,但问题仍然存在。因此,我想知道这些是真正的磁盘故障还是软件 RAID 控制器将磁盘设置为故障,尽管它们没有问题。

这种软件 RAID、LVM 和 Virtualbox 组合是否存在已知错误?

一些命令输出:

~# cat /proc/mdstat

Personalities : [raid1]                                                                                                                                                             
md3 : active raid1 sda3[0] sdb3[2](F)                                                                                                                                               
      1458846016 blocks [2/1] [U_]                                                                                                                                                  

md1 : active raid1 sda1[0] sdb1[2](F)                                                                                                                                               
      4194240 blocks [2/1] [U_]                                                                                                                                                     

unused devices: <none>

~# mdadm -D /dev/md1

/dev/md1:                                                                                                                                                                           
        Version : 0.90                                                                                                                                                              
  Creation Time : Sat May 14 00:24:24 2016                                                                                                                                          
     Raid Level : raid1                                                                                                                                                             
     Array Size : 4194240 (4.00 GiB 4.29 GB)                                                                                                                                        
  Used Dev Size : 4194240 (4.00 GiB 4.29 GB)                                                                                                                                        
   Raid Devices : 2                                                                                                                                                                 
  Total Devices : 2                                                                                                                                                                 
Preferred Minor : 1                                                                                                                                                                 
    Persistence : Superblock is persistent                                                                                                                                          

    Update Time : Sun Dec  4 00:59:17 2016                                                                                                                                          
          State : clean, degraded 
 Active Devices : 1
Working Devices : 1
 Failed Devices : 1
  Spare Devices : 0

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync
       2       0        0        2      removed

       2       8       17        -      faulty   /dev/sdb1

~# mdadm -D /dev/md3

/dev/md3:
        Version : 0.90
  Creation Time : Sat May 14 00:24:24 2016
     Raid Level : raid1
     Array Size : 1458846016 (1391.26 GiB 1493.86 GB)
  Used Dev Size : 1458846016 (1391.26 GiB 1493.86 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 3
    Persistence : Superblock is persistent

    Update Time : Sun Dec  4 00:59:16 2016
          State : clean, degraded 
 Active Devices : 1
Working Devices : 1
 Failed Devices : 1
  Spare Devices : 0

    Number   Major   Minor   RaidDevice State
       0       8        3        0      active sync
       2       0        0        2      removed

       2       8       19        -      faulty   /dev/sdb3

~# cat /etc/fstab

/dev/md1        /               ext3    defaults        1 1
/dev/sda2       none            swap    sw              
/dev/sdb2       none            swap    sw              
/dev/vg00/usr   /usr            ext4    defaults        0 2
/dev/vg00/var   /var            ext4    defaults        0 2
/dev/vg00/home  /home           ext4    defaults        0 2
#/dev/hdd/data  /data           ext4    defaults        0 2
devpts          /dev/pts        devpts  gid=5,mode=620  0 0
none            /proc           proc    defaults        0 0
none            /tmp    tmpfs   defaults        0 0

答案1

首先,我们想从系统日志中查看一些信息。当内核从 RAID 阵列中取出磁盘时,将要记录一些信息。在我能找到的最近一次事件中,关键行是

Nov 21 08:45:49 lory kernel: md/raid1:md1: Disk failure on sdb2, disabling device.

很可能会立即记录一些其他信息这表明存在非常严重的问题;在我的例子中,它们看起来像

Nov 21 08:45:49 lory kernel: end_request: I/O error, dev sdb, sector 1497413335
Nov 21 08:45:49 lory kernel: sd 1:0:0:0: [sdb]  Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
Nov 21 08:45:49 lory kernel: sd 1:0:0:0: [sdb] CDB: Write(10): 2a 00 59 40 b6 bf 00 00 18 00
Nov 21 08:45:49 lory kernel: end_request: I/O error, dev sdb, sector 1497413311
Nov 21 08:45:49 lory kernel: sd 1:0:0:0: [sdb]  Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
Nov 21 08:45:49 lory kernel: sd 1:0:0:0: [sdb] CDB: Write(10): 2a 00 59 40 b6 a7 00 00 18 00

因此,如果不是最近两三个 RAID 事件的话,至少从最近的 RAID 事件中查看这些信息会非常有用(请澄清在这些日志之间是否发生过 HDD 更换)。我无法告诉您在 Debian 下会记录在哪里,恐怕您需要知道这一点。

其次,我同意你的观点,你已经更换了两个硬盘。我同意,这意味着两个硬盘都不太可能有问题,尽管我仍然会smartctl -t long /dev/sdX优先对它们运行一次(不是请同时更换两块硬盘!)。不过,这确实让我怀疑电缆的问题。下次发生这种情况时,您可以考虑在关机重启时交换两块硬盘之间的电缆。如果问题互换了,您就有一个非常有力的候选者。或者,如果您负担得起,只需立即更换坏驱动器的电缆,使用已知良好的或全新的替换件即可。

最后顺便提一下,为什么你不镜像交换?如果持久存储镜像但不交换,那么如果驱动器发生故障(并且虚拟机处于负载状态),你很可能会遇到内核崩溃并重新启动,而 RAID 设备故障时间正是你希望发生无人值守、非计划的重启。

相关内容