cat /proc/mdstat
Personalities : [raid1] [raid10] [raid0] [raid6] [raid5] [raid4]
md0 : active raid1 sdb1[1] sda1[0]
4200896 blocks [2/2] [UU]
md1 : active raid1 sdb2[1] sda2[0]
2104448 blocks [2/2] [UU]
md2 : active raid1 sdb3[1] sda3[0]
306263040 blocks [2/2] [UU]
[==========>..........] resync = 51.7% (158425088/306263040) finish=51.3min speed=47962K/sec
unused devices:
Очевидно, у нас три массива - /dev/md0, /dev/md1, /dev/md2. Каждый из которых, соответственно, состоит из двух физических дисков - md0 из /dev/sda1, /dev/sdb1, md1 из /dev/sda2, /dev/sdb2, md2 из /dev/sda3, /dev/sdb3.
Допустим, у нас физически отказал диск /dev/sda и в результате этого сервер начинает работать крайне нестабильно (да, несмотря на raid), поэтому сбойный жесткий диск необходимо выбросить из массива и дождаться плановой его замены. Но как это сделать?
Разбор массива осуществляется двумя шагами - метим диск как faulty (отказ) ключом -f, а потом выбрасываем ключом -r. Например, для массива /dev/md0 это выглядит так:
mdadm /dev/md0 -f /dev/sda1
mdadm /dev/md0 -r /dev/sda1
После этого массив /dev/md0 перейдет в однодисковый (DEGRADED) режим:
cat /proc/mdstat
Personalities : [raid1] [raid10] [raid0] [raid6] [raid5] [raid4]
md0 : active raid1 sdb1[1]
4200896 blocks [2/1] [_U]
Повторяем аналогичную операцию для других массивов (/dev/md1 и /dev/md2) и все, сбойный диск исключен из массива.
А как определить что именно sda дал сбой?
ReplyDeleteФормально - никак. Если масив в статусе ресинхронизации, то, к сожалнию, нельзя узнать, какой диск сейчас хранит исходные данные, а какой перезаписывается повторно. Тут просто опытным путем производится и если на массиве стоит /, то основной диск выбросить не даст. Вот как-то так.
ReplyDeleteЯ так понял sda ето гланий диск масива, а sdb ето как би зеркало первого.
ReplyDeleteЕсли вилетит sda, как правильно его заменить, чтоб данние били продублирование с sdb на новоподключенний sda, а не наоборот с пустого sda на диск с данними sdb?
Тут рейд сам разберется, помогать ему не потребуется.
ReplyDelete