Мы с коллегой создали программный RAID 1 с mdadm, состоящим из двух физических дисков, с двумя разделами на виртуальном устройстве. Настройка прошла нормально, и загрузка непосредственно с одного из дисков RAID привела к следующему:
# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md127 : active raid1 sda1[0] sdb1[1]
92094464 blocks super 1.2 [2/2] [UU]
md1 : active (auto-read-only) raid1 sda2[0] sdb2[2]
4069376 blocks super 1.2 [2/2] [UU]
unused devices: <none>
Чтобы проверить наши настройки, мы затем выключили машину, отсоединили один из дисков и перезапустили. Система подошла нормально, естественно в ухудшенном состоянии:
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md127 : active raid1 sda1[1]
92094464 blocks super 1.2 [2/1] [_U]
md1 : active (auto-read-only) raid1 sda2[2]
4069376 blocks super 1.2 [2/1] [_U]
unused devices: <none>
Затем мы снова выключили машину, снова подключили отключенный диск и отключили другой диск. Опять все прошло нормально, со следующим ожидаемым состоянием:
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md127 : active raid1 sda1[0]
92094464 blocks super 1.2 [2/1] [U_]
md1 : active (auto-read-only) raid1 sda2[0]
4069376 blocks super 1.2 [2/1] [U_]
unused devices: <none>
Наконец, мы закрылись в последний раз, все переподключили, но мы получили следующее:
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md1 : active (auto-read-only) raid1 sdb2[2] sda2[0]
4069376 blocks super 1.2 [2/2] [UU]
md127 : active raid1 sdb1[1]
92094464 blocks super 1.2 [2/1] [_U]
unused devices: <none>
Как видите, первый раздел (вторая запись, они почему-то поменялись местами) находится в ухудшенном состоянии (второй - нет, но это просто раздел подкачки). Мы не были особенно обеспокоены этим. В конце концов, ожидается, что эти два раздела уже не будут точно одинаковыми после смоделированного чередующегося сбоя дисков. Мы добавили отсутствующий раздел следующим образом:
# mdadm --manage /dev/md127 --add /dev/sda1
mdadm: re-added /dev/sda1
Мы ожидали, что раздел в /dev/sda
синхронизирует (будет перезаписан) раздел в /dev/sdb
. Вместо этого мы получили поврежденную файловую систему (многочисленные ошибки в течение нескольких секунд).
После этого я перезагрузился с третьего диска, повторно инициализировал файловую систему в /dev/md127
(с опцией -c
для mkfs.ext4 для хорошей меры) и перезагрузился обратно в теперь снова работающий RAID. Затем мы снова выключились, отключили один диск, загрузились, снова выключились, снова подключили диск, и на этот раз мы также оставили другой диск подключенным и загрузились. Теперь мы получили это:
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md127 : active raid1 sda1[0]
92094464 blocks super 1.2 [2/1] [U_]
md1 : active (auto-read-only) raid1 sdb2[2] sda2[0]
4069376 blocks super 1.2 [2/2] [UU]
unused devices: <none>
Теперь мы боимся, что то же самое случится снова, если мы просто используем опцию --add
как указано выше.
У меня есть два вопроса:
- Что вызвало повреждение файловой системы после симуляции чередующегося сбоя? Я предполагаю, что это как-то связано с тем, что оба диска выходят из состояния перед первым отключением, и это каким-то образом
mdadm --add
в том, что он не выполняет повторную синхронизацию . Какова была бы правильная последовательность команд, чтобы указать mdadm использовать смонтированное состояние как удостоверяющее и синхронизировать добавленный диск с ним? - В нашей текущей ситуации (один смоделированный сбой с последующим переподключением, т. Е. Только один из дисков вышел из состояния незадолго до отсоединения), как правильно добавить недостающее устройство? Могу ли я просто использовать команду добавления, как указано выше, и она будет синхронизироваться? Почему он не синхронизируется автоматически?
Если это поможет, вот текущий вывод из mdadm --examine
:
# mdadm --examine /dev/sda1
/dev/sda1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 726d9204:889a4c89:b7a1bdb9:a77d8130
Name : testhost:0 (local to host testhost)
Creation Time : Mon Feb 4 14:39:21 2019
Raid Level : raid1
Raid Devices : 2
Avail Dev Size : 184188928 (87.83 GiB 94.30 GB)
Array Size : 92094464 (87.83 GiB 94.30 GB)
Data Offset : 131072 sectors
Super Offset : 8 sectors
Unused Space : before=130984 sectors, after=0 sectors
State : clean
Device UUID : 46077734:6a094293:96f92dc3:0a09706e
Update Time : Tue Feb 5 13:36:59 2019
Bad Block Log : 512 entries available at offset 72 sectors
Checksum : 139d1d09 - correct
Events : 974
Device Role : Active device 0
Array State : A. ('A' == active, '.' == missing, 'R' == replacing)
# mdadm --examine /dev/sdb1
/dev/sdb1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 726d9204:889a4c89:b7a1bdb9:a77d8130
Name : testhost:0 (local to host testhost)
Creation Time : Mon Feb 4 14:39:21 2019
Raid Level : raid1
Raid Devices : 2
Avail Dev Size : 184188928 (87.83 GiB 94.30 GB)
Array Size : 92094464 (87.83 GiB 94.30 GB)
Data Offset : 131072 sectors
Super Offset : 8 sectors
Unused Space : before=130984 sectors, after=0 sectors
State : clean
Device UUID : dcffbed3:147347dc:b64ebb8d:97ab5956
Update Time : Tue Feb 5 10:47:41 2019
Bad Block Log : 512 entries available at offset 72 sectors
Checksum : e774af76 - correct
Events : 142
Device Role : Active device 1
Array State : AA ('A' == active, '.' == missing, 'R' == replacing)