Есть шанс, что систему клинит в процессе сохранения в свап на этом же райде при нехватке оперативки.
В моём случае это практически исключено, так как расход физической памяти ни разу ещё не поднимался выше 50%.
Пользователь решил продолжить мысль 24 Марта 2012, 15:18:10:
В общем, что сделано, то сделано. Есть условия, которые описаны в первом сообщении и надо как-то спасать ситуацию исходя их того, что имеем. Я подумал-подумал и вот что придумал.
1. Оба раза сбой происходил, когда я записывал на md1 объёмные файлы.
2. Во время сбоя выходила из строя та часть md0, которая находилась на тех же физических дисках, что и md1, при этом md1 не страдал.
Из этих фактов я строю предположение, что во время записи на md1 (sdc2, sdd2), диски были на столько сильно заняты этим процессом, что массив md0 не смог вовремя получать доступ к sdc1 и sdd1, то есть той части массива, которая расположена на тех же физических дисках, что и md1. А раз система не могла получить доступ, то она посчитала, что эта часть RAID вышла из строя. Но беда в том, что мой RAID10 был создан следующей командой:
mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
А это значит, что было создано два зеркальных массива RAID1 A (sda1, sdb1) и RAID1 B (sdc1, sdd1), потом из двух RAID1 был создан последовательный RAID0, он же RAID10. В случае одновременного отказа двух дисков, RAID10 будет оставаться работоспособных, если эти два диска не будут принадлежать одному и тому же зеркалу. В моём же случае отказывали два диска, как раз принадлежащие одного и тому же зеркалу RAID1 B. А раз вылетел целый RAID1, то погибал и весь RAID10.
Получается, что нужно сделать так, чтобы первый RAID1 располагался на дисках sda1 и sdc1, в второй RADI1 на дисках sdb1 и sdd1. Но части sda1 и sdd1 уже и так располагаются там, где нужно, поэтому нужно поменять местами лишь части sdb1 и sdc1. Сделать это можно так:
sudo mdadm /dev/md0 –f /dev/sdb1 #Помечаем раздел sdb1 как сбойный
sudo mdadm /dev/md0 -r /dev/sdb1 #Удаляем раздел sdb1 из массива
sudo mdadm --zero-superblock /dev/sdb1 #Удаляем информацию с раздела sdb1 о принадлежности к RAID
sudo mdadm /dev/md0 –f /dev/sdc1 #Помечаем раздел sdc1 как сбойный
sudo mdadm /dev/md0 -r /dev/sdc1 #Удаляем раздел sdс1 из массива
sudo mdadm --zero-superblock /dev/sdc1 ##Удаляем информацию с раздела sdc1 о принадлежности к RAID
sudo mdadm --add /dev/md0 /dev/sdc1 #Добавляем в RAID вначале раздел sdc1,
sudo mdadm --add /dev/md0 /dev/sdb1 #а потом sdb1
После того как прошёл resync, диски выстроились в нужной последовательности. Естественно, прежде чем производить данную процедуру, нужно сделать backup, а то мало ли что.