Я использую сервер на Ubuntu 10.04.4 LTS (Linux xxxx 2.6.32-67-server # 134-Ubuntu SMP, среда, 24 сентября, 18:55:00 UTC 2014 x86_64 GNU / Linux) с двумя жесткими дисками в программном рейде 1 .
У меня неоднократно возникала проблема, заключающаяся в том, что система полностью перестала отвечать на запросы в течение значительного количества времени (> 1 часа), что фактически отключало сервер. Рейд сохраняет неисправный диск в массиве, иногда запускает перестроение. У меня была такая же проблема на трех разных машинах (одинаковая установка).
Есть ли простой способ предотвратить такие простои? Сам по себе отказавший диск меня не сильно беспокоит (все они работают без остановки в течение нескольких лет), но время простоя меня беспокоит. У меня создалось впечатление, что raid 1 будет поддерживать работу системы даже при выходе из строя одного жесткого диска. Было бы прекрасно, если бы рейд-контроллер просто выбил диск из массива, и система продолжала бы работать. Еще лучше было бы, если бы он попытался решить проблемы в фоновом режиме, без зависаний. Некоторое снижение производительности также не будет проблемой, пока система остается работоспособной.
Вот пример записи в журнале такого события:
Nov 14 14:00:10 xxxx kernel: [2137088.775542] ata2.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
Nov 14 14:00:10 xxxx kernel: [2137088.788591] ata2.00: irq_stat 0x40000001
Nov 14 14:00:10 xxxx kernel: [2137088.801879] ata2.00: failed command: READ DMA EXT
Nov 14 14:00:10 xxxx kernel: [2137088.814988] ata2.00: cmd 25/00:80:d1:b9:89/00:00:16:00:00/e0 tag 0 dma 65536 in
Nov 14 14:00:10 xxxx kernel: [2137088.814991] res 51/40:00:d3:b9:89/00:00:16:00:00/e0 Emask 0x9 (media error)
Nov 14 14:00:10 xxxx kernel: [2137088.867197] ata2.00: status: { DRDY ERR }
Nov 14 14:00:10 xxxx kernel: [2137088.880205] ata2.00: error: { UNC }
Nov 14 14:00:10 xxxx kernel: [2137088.906336] ata2.00: configured for UDMA/133
Nov 14 14:00:10 xxxx kernel: [2137088.906345] sd 1:0:0:0: [sdb] Unhandled sense code
Nov 14 14:00:10 xxxx kernel: [2137088.906347] sd 1:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
Nov 14 14:00:10 xxxx kernel: [2137088.906351] sd 1:0:0:0: [sdb] Sense Key : Medium Error [current] [descriptor]
Nov 14 14:00:10 xxxx kernel: [2137088.906356] Descriptor sense data with sense descriptors (in hex):
Nov 14 14:00:10 xxxx kernel: [2137088.906358] 72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00
Nov 14 14:00:10 xxxx kernel: [2137088.906367] 16 89 b9 d3
Nov 14 14:00:10 xxxx kernel: [2137088.906371] sd 1:0:0:0: [sdb] Add. Sense: Unrecovered read error - auto reallocate failed
Nov 14 14:00:10 xxxx kernel: [2137088.906376] sd 1:0:0:0: [sdb] CDB: Read(10): 28 00 16 89 b9 d1 00 00 80 00
Nov 14 14:00:10 xxxx kernel: [2137088.906385] end_request: I/O error, dev sdb, sector 378124755
Nov 14 14:00:10 xxxx kernel: [2137088.919172] ata2: EH complete
Это настройка рейда (cat / proc / mdstat):
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] [linear] [multipath]
md2 : active raid1 sda3[0] sdb3[1]
726266432 blocks [2/2] [UU]
md1 : active raid1 sdb2[1] sda2[0]
2104448 blocks [2/2] [UU]
md0 : active raid1 sdb1[1] sda1[0]
4200896 blocks [2/2] [UU]
unused devices: <none>
Заранее большое спасибо!
Вы используете программный RAID. У вас нет «RAID-контроллера», чтобы «выкинуть диск из массива». Вместо этого у вас есть ядро, управляющее контроллерами ATA, и когда диски не отвечают (в данном случае из-за ошибок носителя), ядро ждет. Ситуация такого типа не всегда вызывает видимые симптомы, но, безусловно, может.
Проще всего использовать аппаратный RAID-контроллер. Даже в этом случае всегда есть шанс, что странные краевые отказы могут создать видимый симптом, но это намного менее вероятно. У настоящего аппаратного RAID-контроллера гораздо больше шансов сохранить работоспособность машины даже в случае ошибок носителя.