软件 RAID 1 配置

软件 RAID 1 配置

很久以前,我创建了一个软件 RAID 1,它似乎一直对我有用。但是,我不能完全确定我是否已正确配置了所有内容,也没有经验来检查,因此,如果能提供一些建议或只是验证一下到目前为止一切似乎都正确,我将非常感激。

我正在使用 Linux Fedora 20(32 位,计划升级到 64 位)RAID 1 应由两个 1TB SATA 硬盘组成。

这是输出mdadm --detail /dev/md0

/dev/md0:
        Version : 1.2
  Creation Time : Sun Jan 29 11:25:18 2012
     Raid Level : raid1
     Array Size : 976761424 (931.51 GiB 1000.20 GB)
  Used Dev Size : 976761424 (931.51 GiB 1000.20 GB)
   Raid Devices : 2
  Total Devices : 1
    Persistence : Superblock is persistent

    Update Time : Sat Jun  7 10:38:09 2014
          State : clean, degraded 
 Active Devices : 1
Working Devices : 1
 Failed Devices : 0
  Spare Devices : 0

           Name : argo:0  (local to host argo)
           UUID : 1596d0a1:5806e590:c56d0b27:765e3220
         Events : 996387

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8        0        1      active sync   /dev/sda

RAID挂载成功:

friedrich@argo:~ ➤ sudo mount -l | grep md0
/dev/md0 on /mnt/raid type ext4 (rw,relatime,data=ordered)

基本上我的问题是:

  • 为什么我只有 1 个活动设备?
  • removed底层国家是什么意思?

我还注意到在系统启动和关闭时控制台上出现了一些奇怪的错误消息,而且当我使用 Ctrl + Alt + F2 切换时,这些错误消息总是在后台重复出现:

...
ata2: irq_stat 0x00000040 connection status changed
ata2: SError: { CommWake DevExch }
ata2: COMRESET failed (errno=-32)
ata2: exception Emask 0x10 SAct 0x0 SErr 0x4040000 action 0xe frozen
ata2: irq_stat 0x00000040 connection status changed
ata2: SError: { CommWake DevExch }
ata2: exception Emask 0x10 SAct 0x0 SErr 0x4040000 action 0xe frozen
...

这些错误与 RAID 有关吗?SATA 设备似乎出了问题。整个系统运行正常(我可以读取和写入已安装的 RAID),但在启动关机时总是出现这些奇怪的错误(可能总是在后台)。

谢谢你的帮助

答案1

似乎其中一个磁盘已从阵列中掉落。这首先由removed您已经注意到的状态指示,然后由以下行指示:

State : clean, degraded

如果我遇到同样的问题,我会这样做:

  • 仔细检查dmesg磁盘从阵列中掉线的原因。您可以尝试使用dmesg | grep md:dmesg | grep sdb(我假设丢失的磁盘是 sdb)并查看是否记录了错误。我猜发生的事情是您的驱动器在某个时间断开了连接并且从阵列中掉线了。它可能由于任何原因而掉线,例如电缆故障、磁盘控制器损坏或其他原因。

  • 确定从阵列中删除的驱动器的字母,并使用 smartctl 检查是否存在任何问题: 。在和smartctl -a /dev/disk0下查找可能的错误。WHEN_FAILEDSTART OF READ SMART DATA SECTION

  • 如果磁盘运行正常(没有显示错误),您可以将其重新添加到阵列: mdadm -a /dev/md0 /dev/sdb。您可以通过运行来监控重建进度cat /proc/mdstat

当然,我建议你在执行任何这些操作之前请备份您的数据,因为执行错误的命令可能会导致您丢失数据!

相关内容