我正在运行 Ubuntu 16.04 服务器。该系统上的数据存储使用软件 raid 6 上的 lvm,而操作系统安装在带有 lvm 的单独 raid 1 上。raid 6 由 7 个磁盘上的 7 个分区组成。在其中一个磁盘上出现大量智能错误后,我决定在阵列降级之前将此磁盘换成新磁盘。
在更换磁盘之前,我做了sudo mdadm /dev/md2 --fail /dev/sdd4
,然后是。下次启动后,一切似乎都正常,所以我开始对新磁盘进行分区。我做了以调整其他磁盘的分区。sudo mdadm /dev/md2 --remove /dev/sdd4
sudo parted --list
这时出现了一个奇怪的问题,parted 无法访问一个旧磁盘。我注意到另一个驱动器从阵列中消失了,几秒钟后又有一个驱动器消失了。阵列出现故障。我非常震惊,关闭了系统以防止进一步出现错误。
稍后我尝试重新启动系统并出现了如下奇怪的故障:
ata2: irq_stat 0x00000040, connection status changed
ata2: SError: { CommWake DevExch }
此时我只有一个应急控制台,因此我启动了实时 Linux 以进一步检查问题。我读到我可以安全地执行mdadm --assemble --scan
以尝试修复阵列,但它仍处于奇怪的状态,因此我仅从mdadm.conf
和中删除了该阵列fstab
。
该 raid 现在显示为具有 7 个备用驱动器的 raid0,但在剩余的 RAID1 中的最后几个小时里,驱动器似乎运行正常。
我不知道现在该做什么,我预计会丢失所有数据,但我也希望有机会挽救至少一部分数据。我有备份,但只有一部分,因为它是一个 19TB 阵列。
交换磁盘前的状态
chris@uranus:~$ sudo mdadm --detail /dev/md2
/dev/md2:
Version : 1.2
Creation Time : Thu Aug 6 00:45:41 2015
Raid Level : raid6
Array Size : 18723832320 (17856.44 GiB 19173.20 GB)
Used Dev Size : 3744766464 (3571.29 GiB 3834.64 GB)
Raid Devices : 7
Total Devices : 7
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Fri Jul 13 17:39:04 2018
State : clean
Active Devices : 7
Working Devices : 7
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : uranus:2 (local to host uranus)
UUID : 607914eb:666e2a46:b2e43557:02cc2983
Events : 2738806
Number Major Minor RaidDevice State
0 8 20 0 active sync /dev/sdb4
1 8 36 1 active sync /dev/sdc4
2 8 52 2 active sync /dev/sdd4
6 8 1 3 active sync /dev/sda1
5 8 68 4 active sync /dev/sde4
8 8 97 5 active sync /dev/sdg1
7 8 81 6 active sync /dev/sdf1
实际状态
chris@uranus:/$ sudo mdadm --detail /dev/md2
/dev/md2:
Version : 1.2
Raid Level : raid0
Total Devices : 6
Persistence : Superblock is persistent
State : inactive
Name : uranus:2 (local to host uranus)
UUID : 607914eb:666e2a46:b2e43557:02cc2983
Events : 2739360
Number Major Minor RaidDevice
- 8 1 - /dev/sda1
- 8 20 - /dev/sdb4
- 8 36 - /dev/sdc4
- 8 68 - /dev/sde4
- 8 81 - /dev/sdf1
- 8 97 - /dev/sdg1
澄清事实
6 个驱动器没有故障,第 7 个驱动器有错误,但我将其换成了新的。更换这个故障驱动器后,所有驱动器的智能数据都正常。没有错误、没有坏块、没有待处理、无法纠正或重新分配的扇区。
我最后--detail
只显示 6 个驱动器,因为我没有将新驱动器添加到现有阵列。
操作系统所依赖的 raid 1 基本上是 7 个磁盘中的 3 个 + 1 个备用磁盘,但这些磁盘有自己的分区。当我删除 /dev/sdd 时,备用驱动器取代了它的位置,因此它现在由 3 个分区组成,没有备用分区。其中 3 个磁盘上还有启动分区,其中 2 个磁盘上的 raid 1 中有交换分区。
问题是,mdadm 现在将此阵列显示为具有 7 个备用驱动器的 raid 0 cat /proc/mdstat
,我必须将其恢复到原始 raid6 配置,其中 7 个驱动器中有 6 个处于降级状态。配置似乎有问题,但我没有对此进行任何更改。之后,并且只有在我可以恢复阵列的情况下,我才会将切换的第 7 个分区添加回阵列以获取我原来的第 7 个驱动器 raid6。
如果我正确阅读了手册页,则会mdadm --assemble --scan
根据配置恢复阵列信息,/proc/mdstat
但这些似乎已经是错误的。
更多输出
cat /proc/mdstat
- 现在
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md2 : inactive sdg1[8](S) sdf1[7](S) sdb4[0](S) sda1[6](S) sde4[5](S) sdc4[1](S)
22468633600 blocks super 1.2
md129 : active raid1 sdb3[0] sde3[4] sdc3[1]
146353024 blocks super 1.2 [3/3] [UUU]
md128 : active raid1 sdb2[0] sde2[4](S) sdc2[1]
15616896 blocks super 1.2 [2/2] [UU]
unused devices: <none>
cat /etc/mdadm/mdadm.conf
- 现在
#DEVICE partitions containers
# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes
# automatically tag new arrays as belonging to the local system
HOMEHOST <system>
# instruct the monitoring daemon where to send mail alerts
MAILADDR root
# definitions of existing MD arrays
ARRAY /dev/md128 metadata=1.2 UUID=6813258b:250929d6:8a1e9d34:422a9fbd name=uranus:128
spares=1
ARRAY /dev/md129 metadata=1.2 UUID=ab06d13f:a70de5a6:c83a9383:b1beb84c name=uranus:129
ARRAY /dev/md2 metadata=1.2 UUID=607914eb:666e2a46:b2e43557:02cc2983 name=uranus:2
# This file was auto-generated on Mon, 10 Aug 2015 18:09:47 +0200
# by mkconf $Id$
#ARRAY /dev/md/128 metadata=1.2 UUID=6813258b:250929d6:8a1e9d34:422a9fbd name=uranus:128
# spares=2
#ARRAY /dev/md/129 metadata=1.2 UUID=ab06d13f:a70de5a6:c83a9383:b1beb84c name=uranus:129
# spares=1
#ARRAY /dev/md/2 metadata=1.2 UUID=607914eb:666e2a46:b2e43557:02cc2983 name=uranus:2
cat /etc/fstab
- 现在
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/mapper/vgSystem-vRoot / ext4 errors=remount-ro 0 1
# swap was on /dev/md128 during installation
UUID=5a5b997d-9e94-4391-955f-a2b9a3f63820 none swap sw 0 0
#/dev/vgData/vData /srv ext4 defaults 0 0
#10.10.0.15:/srv/BackupsUranusAutomatic/data /mnt/mars/uranus/automatic/data nfs clientaddr=10.10.0.10,vers=4,noatime,addr=10.10.0.15,noauto 0 0
#10.10.0.15:/srv/BackupsUranusAutomatic/media /mnt/mars/uranus/automatic/media nfs clientaddr=10.10.0.10,vers=4,noatime,addr=10.10.0.15,noauto 0 0
#/srv/shares/Videos/Ungesichert/Videorecorder /srv/vdr/video bind bind 0 0
#/dev/sdh1 /mnt/usbdisk ntfs noatime,noauto 0 0
磁盘和分区 - 问题发生之前
Medium /dev/sda: 3,7 TiB, 4000787030016 Bytes, 7814037168 Sektoren
Einheiten: sectors von 1 * 512 = 512 Bytes
Sektorengröße (logisch/physisch): 512 Bytes / 4096 Bytes
I/O Größe (minimal/optimal): 4096 Bytes / 4096 Bytes
Typ der Medienbezeichnung: gpt
Medienkennung: 98C35BD3-BFBC-4A4B-AEC9-6D4AFB775AF4
Gerät Start Ende Sektoren Größe Typ
/dev/sda1 2048 7489808383 7489806336 3,5T Linux RAID
/dev/sda2 7489808384 7791525887 301717504 143,9G Linux RAID
Medium /dev/sdb: 3,7 TiB, 4000787030016 Bytes, 7814037168 Sektoren
Einheiten: sectors von 1 * 512 = 512 Bytes
Sektorengröße (logisch/physisch): 512 Bytes / 4096 Bytes
I/O Größe (minimal/optimal): 4096 Bytes / 4096 Bytes
Typ der Medienbezeichnung: gpt
Medienkennung: 49102EF7-9FA2-4990-8C30-6C5B463B917E
Gerät Start Ende Sektoren Größe Typ
/dev/sdb1 2048 20479 18432 9M BIOS boot
/dev/sdb2 20480 31270911 31250432 14,9G Linux RAID
/dev/sdb3 31270912 324239359 292968448 139,7G Linux RAID
/dev/sdb4 324239360 7814035455 7489796096 3,5T Linux RAID
Medium /dev/sdc: 3,7 TiB, 4000787030016 Bytes, 7814037168 Sektoren
Einheiten: sectors von 1 * 512 = 512 Bytes
Sektorengröße (logisch/physisch): 512 Bytes / 4096 Bytes
I/O Größe (minimal/optimal): 4096 Bytes / 4096 Bytes
Typ der Medienbezeichnung: gpt
Medienkennung: 6A037D00-F252-4CA0-8D68-430734BCA765
Gerät Start Ende Sektoren Größe Typ
/dev/sdc1 2048 20479 18432 9M BIOS boot
/dev/sdc2 20480 31270911 31250432 14,9G Linux RAID
/dev/sdc3 31270912 324239359 292968448 139,7G Linux RAID
/dev/sdc4 324239360 7814035455 7489796096 3,5T Linux RAID
Medium /dev/sdd: 3,7 TiB, 4000787030016 Bytes, 7814037168 Sektoren
Einheiten: sectors von 1 * 512 = 512 Bytes
Sektorengröße (logisch/physisch): 512 Bytes / 4096 Bytes
I/O Größe (minimal/optimal): 4096 Bytes / 4096 Bytes
Typ der Medienbezeichnung: gpt
Medienkennung: EADC29D6-C2E9-4AC8-B1B2-F01A5233467C
Gerät Start Ende Sektoren Größe Typ
/dev/sdd1 2048 20479 18432 9M BIOS boot
/dev/sdd2 20480 31270911 31250432 14,9G Linux RAID
/dev/sdd3 31270912 324239359 292968448 139,7G Linux RAID
/dev/sdd4 324239360 7814035455 7489796096 3,5T Linux RAID
Medium /dev/sde: 3,7 TiB, 4000787030016 Bytes, 7814037168 Sektoren
Einheiten: sectors von 1 * 512 = 512 Bytes
Sektorengröße (logisch/physisch): 512 Bytes / 4096 Bytes
I/O Größe (minimal/optimal): 4096 Bytes / 4096 Bytes
Typ der Medienbezeichnung: gpt
Medienkennung: 3D7EBBFD-C00D-4503-8BF1-A71534F643E1
Gerät Start Ende Sektoren Größe Typ
/dev/sde1 2048 20479 18432 9M Linux filesystem
/dev/sde2 20480 31270911 31250432 14,9G Linux filesystem
/dev/sde3 31270912 324239359 292968448 139,7G Linux filesystem
/dev/sde4 324239360 7814035455 7489796096 3,5T Linux filesystem
Medium /dev/sdf: 3,7 TiB, 4000787030016 Bytes, 7814037168 Sektoren
Einheiten: sectors von 1 * 512 = 512 Bytes
Sektorengröße (logisch/physisch): 512 Bytes / 4096 Bytes
I/O Größe (minimal/optimal): 4096 Bytes / 4096 Bytes
Typ der Medienbezeichnung: gpt
Medienkennung: FCA42FC2-C5E9-45B6-9C18-F103C552993D
Gerät Start Ende Sektoren Größe Typ
/dev/sdf1 2048 7489824767 7489822720 3,5T Linux RAID
/dev/sdf2 7489824768 7791525887 301701120 143,9G Linux RAID
Medium /dev/sdg: 3,7 TiB, 4000787030016 Bytes, 7814037168 Sektoren
Einheiten: sectors von 1 * 512 = 512 Bytes
Sektorengröße (logisch/physisch): 512 Bytes / 4096 Bytes
I/O Größe (minimal/optimal): 4096 Bytes / 4096 Bytes
Typ der Medienbezeichnung: gpt
Medienkennung: 8FF8C4CC-6788-47D7-8264-8FA6EF912555
Gerät Start Ende Sektoren Größe Typ
/dev/sdg1 2048 7489824767 7489822720 3,5T Linux RAID
/dev/sdg2 7489824768 7791525887 301701120 143,9G Linux RAID
Medium /dev/md2: 17,4 TiB, 19173204295680 Bytes, 37447664640 Sektoren
Einheiten: sectors von 1 * 512 = 512 Bytes
Sektorengröße (logisch/physisch): 512 Bytes / 4096 Bytes
I/O Größe (minimal/optimal): 524288 Bytes / 2621440 Bytes
Medium /dev/md128: 14,9 GiB, 15991701504 Bytes, 31233792 Sektoren
Einheiten: sectors von 1 * 512 = 512 Bytes
Sektorengröße (logisch/physisch): 512 Bytes / 4096 Bytes
I/O Größe (minimal/optimal): 4096 Bytes / 4096 Bytes
Medium /dev/md129: 139,6 GiB, 149865496576 Bytes, 292706048 Sektoren
Einheiten: sectors von 1 * 512 = 512 Bytes
Sektorengröße (logisch/physisch): 512 Bytes / 4096 Bytes
I/O Größe (minimal/optimal): 4096 Bytes / 4096 Bytes
Medium /dev/mapper/vgSystem-vRoot: 74,5 GiB, 79997960192 Bytes, 156246016 Sektoren
Einheiten: sectors von 1 * 512 = 512 Bytes
Sektorengröße (logisch/physisch): 512 Bytes / 4096 Bytes
I/O Größe (minimal/optimal): 4096 Bytes / 4096 Bytes
Medium /dev/mapper/vgData-vData: 17,4 TiB, 19173199577088 Bytes, 37447655424 Sektoren
Einheiten: sectors von 1 * 512 = 512 Bytes
Sektorengröße (logisch/physisch): 512 Bytes / 4096 Bytes
I/O Größe (minimal/optimal): 524288 Bytes / 2621440 Bytes
Medium /dev/mapper/vgSystem-testBtrfs: 5 GiB, 5368709120 Bytes, 10485760 Sektoren
Einheiten: sectors von 1 * 512 = 512 Bytes
Sektorengröße (logisch/physisch): 512 Bytes / 4096 Bytes
I/O Größe (minimal/optimal): 4096 Bytes / 4096 Bytes
磁盘、分区、 RAID 设备和卷 - 问题发生之前
NAME UUID FSTYPE MOUNTPOINT LABEL SIZE
sda 3,7T
├─sda1 607914eb-666e-2a46-b2e4-355702cc2983 linux_raid_member uranus:2 3,5T
│ └─md2 OTNyDe-fNAP-aLzy-Uwat-yYVH-E11D-d1LyzH LVM2_member 17,4T
│ └─vgData-vData a9b3d18d-e45f-4d0f-ab3d-9fe8bfa42157 ext4 /srv data 17,4T
└─sda2 143,9G
sdb 3,7T
├─sdb1 9M
├─sdb2 6813258b-2509-29d6-8a1e-9d34422a9fbd linux_raid_member uranus:128 14,9G
│ └─md128 5a5b997d-9e94-4391-955f-a2b9a3f63820 swap [SWAP] 14,9G
├─sdb3 ab06d13f-a70d-e5a6-c83a-9383b1beb84c linux_raid_member uranus:129 139,7G
│ └─md129 7QXSVM-dauj-RUQ1-uoQp-IamT-TTZo-slzArT LVM2_member 139,6G
│ ├─vgSystem-vRoot fb4bfbb3-de6c-47ef-b237-27af04fa2f4c ext4 / root 74,5G
│ └─vgSystem-testBtrfs 27bbab4c-3c9f-4743-83ac-61e8b41f2bd3 btrfs 5G
└─sdb4 607914eb-666e-2a46-b2e4-355702cc2983 linux_raid_member uranus:2 3,5T
└─md2 OTNyDe-fNAP-aLzy-Uwat-yYVH-E11D-d1LyzH LVM2_member 17,4T
└─vgData-vData a9b3d18d-e45f-4d0f-ab3d-9fe8bfa42157 ext4 /srv data 17,4T
sdc 3,7T
├─sdc1 9M
├─sdc2 6813258b-2509-29d6-8a1e-9d34422a9fbd linux_raid_member uranus:128 14,9G
│ └─md128 5a5b997d-9e94-4391-955f-a2b9a3f63820 swap [SWAP] 14,9G
├─sdc3 ab06d13f-a70d-e5a6-c83a-9383b1beb84c linux_raid_member uranus:129 139,7G
│ └─md129 7QXSVM-dauj-RUQ1-uoQp-IamT-TTZo-slzArT LVM2_member 139,6G
│ ├─vgSystem-vRoot fb4bfbb3-de6c-47ef-b237-27af04fa2f4c ext4 / root 74,5G
│ └─vgSystem-testBtrfs 27bbab4c-3c9f-4743-83ac-61e8b41f2bd3 btrfs 5G
└─sdc4 607914eb-666e-2a46-b2e4-355702cc2983 linux_raid_member uranus:2 3,5T
└─md2 OTNyDe-fNAP-aLzy-Uwat-yYVH-E11D-d1LyzH LVM2_member 17,4T
└─vgData-vData a9b3d18d-e45f-4d0f-ab3d-9fe8bfa42157 ext4 /srv data 17,4T
sdd 3,7T
├─sdd1 9M
├─sdd2 6813258b-2509-29d6-8a1e-9d34422a9fbd linux_raid_member uranus:128 14,9G
│ └─md128 5a5b997d-9e94-4391-955f-a2b9a3f63820 swap [SWAP] 14,9G
├─sdd3 ab06d13f-a70d-e5a6-c83a-9383b1beb84c linux_raid_member uranus:129 139,7G
│ └─md129 7QXSVM-dauj-RUQ1-uoQp-IamT-TTZo-slzArT LVM2_member 139,6G
│ ├─vgSystem-vRoot fb4bfbb3-de6c-47ef-b237-27af04fa2f4c ext4 / root 74,5G
│ └─vgSystem-testBtrfs 27bbab4c-3c9f-4743-83ac-61e8b41f2bd3 btrfs 5G
└─sdd4 607914eb-666e-2a46-b2e4-355702cc2983 linux_raid_member uranus:2 3,5T
└─md2 OTNyDe-fNAP-aLzy-Uwat-yYVH-E11D-d1LyzH LVM2_member 17,4T
└─vgData-vData a9b3d18d-e45f-4d0f-ab3d-9fe8bfa42157 ext4 /srv data 17,4T
sde 3,7T
├─sde1 9M
├─sde2 6813258b-2509-29d6-8a1e-9d34422a9fbd linux_raid_member uranus:128 14,9G
│ └─md128 5a5b997d-9e94-4391-955f-a2b9a3f63820 swap [SWAP] 14,9G
├─sde3 ab06d13f-a70d-e5a6-c83a-9383b1beb84c linux_raid_member uranus:129 139,7G
│ └─md129 7QXSVM-dauj-RUQ1-uoQp-IamT-TTZo-slzArT LVM2_member 139,6G
│ ├─vgSystem-vRoot fb4bfbb3-de6c-47ef-b237-27af04fa2f4c ext4 / root 74,5G
│ └─vgSystem-testBtrfs 27bbab4c-3c9f-4743-83ac-61e8b41f2bd3 btrfs 5G
└─sde4 607914eb-666e-2a46-b2e4-355702cc2983 linux_raid_member uranus:2 3,5T
└─md2 OTNyDe-fNAP-aLzy-Uwat-yYVH-E11D-d1LyzH LVM2_member 17,4T
└─vgData-vData a9b3d18d-e45f-4d0f-ab3d-9fe8bfa42157 ext4 /srv data 17,4T
sdf 3,7T
├─sdf1 607914eb-666e-2a46-b2e4-355702cc2983 linux_raid_member uranus:2 3,5T
│ └─md2 OTNyDe-fNAP-aLzy-Uwat-yYVH-E11D-d1LyzH LVM2_member 17,4T
│ └─vgData-vData a9b3d18d-e45f-4d0f-ab3d-9fe8bfa42157 ext4 /srv data 17,4T
└─sdf2 143,9G
sdg 3,7T
├─sdg1 607914eb-666e-2a46-b2e4-355702cc2983 linux_raid_member uranus:2 3,5T
│ └─md2 OTNyDe-fNAP-aLzy-Uwat-yYVH-E11D-d1LyzH LVM2_member 17,4T
│ └─vgData-vData a9b3d18d-e45f-4d0f-ab3d-9fe8bfa42157 ext4 /srv data 17,4T
└─sdg2
阵列设备超级块
mdadm --examine /dev/sd<array-member-harddrives>
- 现在
只有 6 个驱动器,因为第 7 个“新”驱动器尚未添加到阵列中。
chris@uranus:/$ sudo mdadm --examine /dev/sda1
[sudo] Passwort für chris:
/dev/sda1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x1
Array UUID : 607914eb:666e2a46:b2e43557:02cc2983
Name : uranus:2 (local to host uranus)
Creation Time : Thu Aug 6 00:45:41 2015
Raid Level : raid6
Raid Devices : 7
Avail Dev Size : 7489544192 (3571.29 GiB 3834.65 GB)
Array Size : 18723832320 (17856.44 GiB 19173.20 GB)
Used Dev Size : 7489532928 (3571.29 GiB 3834.64 GB)
Data Offset : 262144 sectors
Super Offset : 8 sectors
Unused Space : before=262064 sectors, after=11264 sectors
State : active
Device UUID : 49c6404e:ee9509ba:c980942a:1db9cf3c
Internal Bitmap : 8 sectors from superblock
Update Time : Fri Jul 13 22:34:48 2018
Checksum : aae603a7 - correct
Events : 2739360
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 3
Array State : AA.AAAA ('A' == active, '.' == missing, 'R' == replacing)
chris@uranus:/$ sudo mdadm --examine /dev/sdb4
/dev/sdb4:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x1
Array UUID : 607914eb:666e2a46:b2e43557:02cc2983
Name : uranus:2 (local to host uranus)
Creation Time : Thu Aug 6 00:45:41 2015
Raid Level : raid6
Raid Devices : 7
Avail Dev Size : 7489533952 (3571.29 GiB 3834.64 GB)
Array Size : 18723832320 (17856.44 GiB 19173.20 GB)
Used Dev Size : 7489532928 (3571.29 GiB 3834.64 GB)
Data Offset : 262144 sectors
Super Offset : 8 sectors
Unused Space : before=262064 sectors, after=1024 sectors
State : clean
Device UUID : 61d97294:3ce7cd84:7bb4d5f1:d301c842
Internal Bitmap : 8 sectors from superblock
Update Time : Fri Jul 13 22:42:15 2018
Checksum : 890fbe3d - correct
Events : 2739385
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 0
Array State : AA..A.. ('A' == active, '.' == missing, 'R' == replacing)
chris@uranus:/$ sudo mdadm --examine /dev/sdc4
/dev/sdc4:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x1
Array UUID : 607914eb:666e2a46:b2e43557:02cc2983
Name : uranus:2 (local to host uranus)
Creation Time : Thu Aug 6 00:45:41 2015
Raid Level : raid6
Raid Devices : 7
Avail Dev Size : 7489533952 (3571.29 GiB 3834.64 GB)
Array Size : 18723832320 (17856.44 GiB 19173.20 GB)
Used Dev Size : 7489532928 (3571.29 GiB 3834.64 GB)
Data Offset : 262144 sectors
Super Offset : 8 sectors
Unused Space : before=262064 sectors, after=1024 sectors
State : clean
Device UUID : ee70c4ab:5b65dae7:df3a78f0:e8bdcead
Internal Bitmap : 8 sectors from superblock
Update Time : Fri Jul 13 22:42:15 2018
Checksum : 6d171664 - correct
Events : 2739385
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 1
Array State : AA..A.. ('A' == active, '.' == missing, 'R' == replacing)
chris@uranus:/$ sudo mdadm --examine /dev/sde4
/dev/sde4:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x1
Array UUID : 607914eb:666e2a46:b2e43557:02cc2983
Name : uranus:2 (local to host uranus)
Creation Time : Thu Aug 6 00:45:41 2015
Raid Level : raid6
Raid Devices : 7
Avail Dev Size : 7489533952 (3571.29 GiB 3834.64 GB)
Array Size : 18723832320 (17856.44 GiB 19173.20 GB)
Used Dev Size : 7489532928 (3571.29 GiB 3834.64 GB)
Data Offset : 262144 sectors
Super Offset : 8 sectors
Unused Space : before=262064 sectors, after=1024 sectors
State : clean
Device UUID : 6ce5311f:084ded8e:ba3d4e06:43e38c67
Internal Bitmap : 8 sectors from superblock
Update Time : Fri Jul 13 22:42:15 2018
Checksum : 572b9ac7 - correct
Events : 2739385
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 4
Array State : AA..A.. ('A' == active, '.' == missing, 'R' == replacing)
chris@uranus:/$ sudo mdadm --examine /dev/sdf1
/dev/sdf1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x1
Array UUID : 607914eb:666e2a46:b2e43557:02cc2983
Name : uranus:2 (local to host uranus)
Creation Time : Thu Aug 6 00:45:41 2015
Raid Level : raid6
Raid Devices : 7
Avail Dev Size : 7489560576 (3571.30 GiB 3834.66 GB)
Array Size : 18723832320 (17856.44 GiB 19173.20 GB)
Used Dev Size : 7489532928 (3571.29 GiB 3834.64 GB)
Data Offset : 262144 sectors
Super Offset : 8 sectors
Unused Space : before=262064 sectors, after=27648 sectors
State : clean
Device UUID : 7c4fbe19:d63eced4:1b40cf79:e759fe4b
Internal Bitmap : 8 sectors from superblock
Update Time : Fri Jul 13 22:36:17 2018
Checksum : ef93d641 - correct
Events : 2739381
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 6
Array State : AA..A.A ('A' == active, '.' == missing, 'R' == replacing)
chris@uranus:/$ sudo mdadm --examine /dev/sdg1
/dev/sdg1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x1
Array UUID : 607914eb:666e2a46:b2e43557:02cc2983
Name : uranus:2 (local to host uranus)
Creation Time : Thu Aug 6 00:45:41 2015
Raid Level : raid6
Raid Devices : 7
Avail Dev Size : 7489560576 (3571.30 GiB 3834.66 GB)
Array Size : 18723832320 (17856.44 GiB 19173.20 GB)
Used Dev Size : 7489532928 (3571.29 GiB 3834.64 GB)
Data Offset : 262144 sectors
Super Offset : 8 sectors
Unused Space : before=262064 sectors, after=27648 sectors
State : clean
Device UUID : 36d9dffc:27699128:e84f87e7:38960357
Internal Bitmap : 8 sectors from superblock
Update Time : Fri Jul 13 22:35:47 2018
Checksum : 9f34d651 - correct
Events : 2739377
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 5
Array State : AA..AAA ('A' == active, '.' == missing, 'R' == replacing)
答案1
发生以下情况时,您有一个驱动器 (您正在更换的那个驱动器) 发生故障:
这时出现了一个奇怪的问题,parted 无法访问一个旧磁盘。我注意到另一个驱动器从阵列中消失了,几秒钟后又有一个驱动器消失了。阵列出现故障。我非常震惊,关闭了系统以防止进一步出现错误。
如果故障是致命的,则需要 3 次驱动器。
您说操作系统在 RAID 1 上,我假设那是 2 个磁盘,而其他 7 个磁盘在 RAID 6 上。
RAID 6 可以承受阵列中两个磁盘的丢失。如果 RAID 6 阵列中发生 3 次故障(假设所有故障磁盘均不属于 RAID 1),并且磁盘状态不佳,则数据很可能丢失。
您可以使用以下命令验证每个磁盘的状态:
sudo smartctl -a /dev/sdX
然后你就可以发现这 3 个磁盘是否都出来了或者是否只是侥幸。如果这只是一个意外,而且你确定一切都好,你的 mdadm.conf 和 fstab 是正确的,因为你的数组似乎是不活跃,那么你可以尝试使用(强制重新组装警告:危险,请阅读以下免责声明):
sudo mdadm --stop /dev/md2
sudo mdadm --assemble --scan --force
注意:最后的--detail
输出显示 6 个磁盘,而不是 7 个/dev/sdd
。似乎丢失了。
您可以粘贴您的配置文件,文件系统以及 LVM VG、LV 和分区以帮助理解配置。
免责声明:尝试使用损坏的 RAID 进行操作非常危险,我根据您提供的可用信息推荐一些步骤,但我无法保证它会起作用或不会破坏您的数据。请自行承担责任和风险。
答案2
mdadm 用于superblocks
确定如何组装磁盘等。在这种情况下,查看物理驱动器的实际超级块数据总是非常有帮助和有用的前正在做任何行动写对磁盘进行某些操作(例如mdadm --assemble --scan --force
,它将更新 mdadm 超级块)。
用于mdadm --examine /dev/sd<your-array-member-harddrives>
查看超级块包含的内容。它应该可以让您了解发生故障时的情况、写入时磁盘之间的偏移量等等。
在清楚了解了是根据物理驱动器的当前状态,您可以制定策略来修复问题。
但首先,我还认为主板/sata 控制器/scsi 控制器/... 存在物理缺陷。如此多的磁盘在很短的时间内发生故障是不寻常的(除非有人想出了一个好主意,使用来自同一制造商的所有磁盘和生产批次来构建 raid 系统),这可能表明存在控制器问题。在最终发生故障的硬盘控制器上重建/重新同步损坏的 raid 只会导致灾难。
答案3
我仅提供一些关于如何/分析什么以了解当前状态的想法:
第一部分不是很有趣,并且对于所有数组成员来说都应该相同。
Magic : a92b4efc
Version : 1.2
Feature Map : 0x1
Array UUID : 607914eb:666e2a46:b2e43557:02cc2983
Name : uranus:2 (local to host uranus)
Creation Time : Thu Aug 6 00:45:41 2015
Raid Level : raid6
Raid Devices : 7
Avail Dev Size : 7489544192 (3571.29 GiB 3834.65 GB)
Array Size : 18723832320 (17856.44 GiB 19173.20 GB)
Used Dev Size : 7489532928 (3571.29 GiB 3834.64 GB)
仍然不是很有趣,如果磁盘大小不相等,偏移量可能会有所不同。UUID 是硬盘 UUID,并且对于每个驱动器都是唯一的。
Data Offset : 262144 sectors
Super Offset : 8 sectors
Unused Space : before=262064 sectors, after=11264 sectors
State : active
Device UUID : 49c6404e:ee9509ba:c980942a:1db9cf3c
Internal Bitmap : 8 sectors from superblock
这里开始变得有趣了,评论开头是#
:
Update Time : Fri Jul 13 22:34:48 2018 # last write activity on the drive
Checksum : aae603a7 - correct # should be equal on all disks, when the state is clean
Events : 2739360 # Events on the disk, in bock/chunk units
Layout : left-symmetric # could be relevant for rebuilding the array, left-symmetric is default for x86
Chunk Size : 512K
下一节对于重建数组很有趣,特别是在形成命令时,这一点Device Role
很重要。
Device Role : Active device 3
Array State : AA.AAAA ('A' == active, '.' == missing, 'R' == replacing)
数组状态仅提供信息,但不会有太大帮助。
首先我们想了解一下How far have disks run apart during the failure?
50
如果我没记错的话,在尝试时,mdadm 代码中有一个事件阈值assemble --force
。这意味着,如果事件有差异,>50
assemble --force
将不再起作用。尽管<50
事件有差异也不能保证强制组装会起作用。在这种情况下,唯一的可能性是使用与现有参数完全相同的参数重新创建数组,并指示 mdadm --create --assume-clean
。当一个人处于所有超级块都可用并且可以读取的“幸运”情况下时,这应该相当“容易”但要小心。
事件计数看起来像是第一个磁盘首先出局,然后是最后一个,然后是倒数第二个。不同之处在于<50
,它最终可能会变得相当容易。
Events : 2739360
Events : 2739385
Events : 2739385
Events : 2739385
Events : 2739381
Events : 2739377
Array State
只有关注Events
计数 &才有可能正确地解释Drive Role
。
Device Role : Active device 3
Device Role : Active device 0
Device Role : Active device 1
Device Role : Active device 4
Device Role : Active device 6
Device Role : Active device 5
Array State : AA.AAAA ('A' == active, '.' == missing, 'R' == replacing)
Array State : AA..A.. ('A' == active, '.' == missing, 'R' == replacing)
Array State : AA..A.. ('A' == active, '.' == missing, 'R' == replacing)
Array State : AA..A.. ('A' == active, '.' == missing, 'R' == replacing)
Array State : AA..A.A ('A' == active, '.' == missing, 'R' == replacing)
Array State : AA..AAA ('A' == active, '.' == missing, 'R' == replacing)
mdadm
从 开始计数0
。驱动器2
首先发生故障,然后是驱动器3
,然后是驱动器,5
最后是驱动器6
。请注意,驱动器5
仍将驱动器列为6
活动驱动器,驱动器也将和3
列为活动驱动器。因此,当另一个驱动器发生故障时,很可能驱动器尚未更新超级块。3
5
6
在看到之后Array States
,我确实认为自动操作assemble --force
不会很好地发挥作用,因为 上的 5 个设备之间没有一致性Array State
。阵列有raid6
7 个磁盘,因此在这种情况下,我们需要有 5 个磁盘在 上一致,Array State
并且事件差异小于 50,但事实并非如此。
请记住,mdadm
/ 的raid
构建目的是不丢失数据。因此,代码中存在一些机制,可以防止mdadm
可能损害数据的操作。即使使用 --force,自动重组也只会触发很可能成功的操作。如果超级块中没有足够/一致的信息供 mdadm 做出保存决定,它将失败。如果您真的知道自己在做什么,您可以简单地重写超级块以及create --assume-clean
将 raid 重新投入运行所需的所有信息。但这将是一项手动任务,您作为管理员/用户必须指示软件具体要做什么。
我不会在这里提供复制和粘贴命令,因为我认为在这种情况下,在执行“repair-my-raid”命令之前,了解自己要做什么是至关重要的。为了加深知识,阅读 Linux RAID Wiki 上与 RAID Recovery 相关的整个文章是必不可少的,这是我对此答案的结论。
https://raid.wiki.kernel.org/index.php/Linux_Raid#When_Things_Go_Wrogn https://raid.wiki.kernel.org/index.php/RAID_Recovery https://raid.wiki.kernel.org/index.php/Recovering_a_failed_software_RAID
答案4
1. Would you suggest first trying --assemble --force, maybe with an overlay file?
在我看来,这绝对是第一个值得尝试的选项。是否使用覆盖文件取决于您的数据和风险承受能力。到目前为止,我在这种情况下都有备份,因此没有使用覆盖选项。如果您想稳妥行事,请使用它。在这方面我想强调几点:
不要考虑使用 mdadm
< 4.0
版本。制作反向移植版或编译版本>= 4.0
。 中存在一些错误3.x
,导致assemble --force
与 配合良好的操作失败4.0
。当尝试
assemble --force
使用时--verbose
,它将为您提供一组很好的信息,这些信息有助于采取进一步的步骤并了解发生了什么或失败了什么。
2. If i use a --create --assume-clean, is it a better choice to create the last functioning setup with 6 disks or maybe a setup with only 5 drives that have the highest event count? The Is this even possible? My goal is restoring some important data from the array and no permanent solution.
在您的情况下,事件偏移量如此之小,我认为用 6/7 个磁盘重新创建阵列没有任何问题。如果您怀疑 HBA(sata/ide/scsi 控制器)可能有问题,最终应该考虑忽略可疑端口。但这取决于硬件和接线。是的,这是可能的,但取决于 raid 类型。使用 raid6,您可以尝试仅使用 5/7 个磁盘进行重建,从技术上讲,这样做应该没有任何限制。重要的是,如果您使用 5/7 重新创建它,驱动器肯定不会再发生故障。
3. I have details about the array before the crash occured. According to this i would come up with a mdadm --create --assume-clean --level=6 --raid-devices=7 --size=3744766464 /dev/sdb4 /dev/sdc4 missing /dev/sda1 /dev/sde4 /dev/sdg1 /dev/sdf1 for 6 drives, respectively mdadm --create --assume-clean --level=6 --raid-devices=7 --size=3744766464 /dev/sdb4 /dev/sdc4 missing missing /dev/sde4 /dev/sdg1 /dev/sdf1 on a 5 drive solution. Would you agree with this?
我还没有核实细节(驱动器顺序、大小、缺失位置等),但命令看起来不错。不过,正如 Linux Raid Wiki 上提到的那样,重新创建应该被视为最后的求助。当需要这样做时,我总是尽量做到尽可能具体。只需记住,我上次查看了 mdadm 手册页并添加了所有我知道数据的选项(例如,甚至是块大小、对齐方式等)。有很多默认值可以省略,但是当确定值时,为什么不具体一点呢。
针对您的情况,我会尝试以下方法:
- 调
mdadm
出一个版本>=4.0
- 停止阵列(如果正在运行)。检查
/proc/mdstat
并使用mdadm --stop ...
。 - 验证磁盘和 HBA(sata/ide/scsi 控制器)。检查
dmesg
和smartctl
记录。尝试从磁盘读取(例如。。dd if=/dev/hda1 of=/dev/null bs=1M count=2048
重新检查dmesg
和smartctl
记录。重复此操作,添加一些ibs=
和skip=
。重新检查dmesg
和记录。如果您在 HBA上smartctl
看到任何内容,请停止使用该硬件的磁盘上的任何程序。resets|timeouts|failures
ata|sata|scsi|...
- 在所有磁盘上重复验证磁盘和 HBA。
- 运行
mdadm --assemble --scan --verbose
。这很可能会失败,但它可以让您很好地了解 mdadm 发现了什么,并让您了解当您force
这样做时会发生什么。 - 研究上述输出,检查您所看到的内容是否与您已经收集的有关驱动器/阵列的信息相符。
- 停止阵列(如果它正在运行或者已启动)。
- 如果您对 mdadm 的操作感到满意
--assemble --scan --verbose
,请尝试一下--force
。 - 如果所有这些都失败了,请进行全盘备份(或创建覆盖文件),然后返回到最后的采取并重新创建整个阵列,使用assume-clean和从阵列收集的所有信息。