LINUX.ORG.RU

При перезагрузке не всегда собирается RAID1 mdadm

 , ,


0

1

Приветствую участников форума!

Есть массив RAID1 на mdadm. Диски массива (SATA) подключены через контроллер LSI SAS3041E. Некоторое время назад обнаружил, что диски работают в режиме SATA1. Оказалось, что причина в старой прошивке - диски SATA3 она не распознаёт и подключает как SATA1. Перепрошил контроллер прошивкой, обещавшей SATA3 - диски вообще перестали определяться, а система стала грузиться только в Recovery Mode. После перепрошивки самой последней прошивкой диски определились и стали работать как SATA2, но возникла другая проблема. При перезагрузке RAID периодически (не всегда) запускается только с одним диском sdb. Причём происходит это очень интересно. Во-первых, это может произойти, если при перезагрузке контроллер LSI в таблице обнаруженных устройств почему-то выводит только один диск. Вроде бы логично - второй диск из-за какого-то глюка не подключился - вот его и нет в массиве. Но оказалось, что в этом случаев второй диск (sdc) в системе всё равно присутствует, инициализируется операционной системой, но самостоятельно к RAID не прицепляется. Однако его можно легко вернуть в RAID командой mdadm --add, после чего всё прекрасно работает, причём без пересинхронизации массива. Значит, несмотря на отсутствие в загрузочной таблице устройств контроллера, диск всё равно подключается. Во-вторых, даже если в таблице контроллера при перезагрузке показаны оба диска - всё равно массив может (но не всегда) точно так же перезапуститься без диска sdc. Естественно, я перед каждой перезагрузкой массив восстанавливал командой --add. В логах загрузки я обнаружил интересную закономерность. Когда всё нормально подключается, лог выглядит так:

[   10.137986] scsi6 : ioc0: LSISAS1064E B3, FwRev=01210000h, Ports=1, MaxQ=483, IRQ=16
[   10.160346] mptsas: ioc0: attaching sata device: fw_channel 0, fw_id 0, phy 2, sas_addr 0x3d3b5a2a78ad6ba7
[   10.163956] scsi 6:0:0:0: Direct-Access     ATA      TOSHIBA DT01ACA2 ABB0 PQ: 0 ANSI: 5
[   10.170663] sd 6:0:0:0: Attached scsi generic sg1 type 0
[   10.172067] mptsas: ioc0: attaching sata device: fw_channel 0, fw_id 1, phy 3, sas_addr 0x3d49361f799c6f86
[   10.172808] sd 6:0:0:0: [sdb] 3907029168 512-byte logical blocks: (2.00 TB/1.81 TiB)
[   10.176243] scsi 6:0:1:0: Direct-Access     ATA      TOSHIBA DT01ACA2 ABB0 PQ: 0 ANSI: 5
[   10.183782] sd 6:0:1:0: Attached scsi generic sg2 type 0
[   10.186225] sd 6:0:1:0: [sdc] 3907029168 512-byte logical blocks: (2.00 TB/1.81 TiB)
[   10.369742] sd 6:0:0:0: [sdb] Write Protect is off
[   10.369747] sd 6:0:0:0: [sdb] Mode Sense: 73 00 00 08
[   10.372277] sd 6:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[   10.381896] sd 6:0:1:0: [sdc] Write Protect is off
[   10.381900] sd 6:0:1:0: [sdc] Mode Sense: 73 00 00 08
[   10.384449] sd 6:0:1:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[   10.563566]  sdb: sdb1
[   10.575719]  sdc: sdc1
[   10.755577] sd 6:0:0:0: [sdb] Attached SCSI disk
[   10.767716] sd 6:0:1:0: [sdc] Attached SCSI disk
[   10.915176] md: bind<sdc1>
[   10.915627] md: bind<sdb1>
[   10.916724] md: raid1 personality registered for level 1
[   10.917033] md/raid1:md1: active with 2 out of 2 mirrors
[   10.917144] created bitmap (15 pages) for device md1
[   10.917471] md1: bitmap initialized from disk: read 1 pages, set 0 of 29807 bits
[   10.976640] md1: detected capacity change from 0 to 2000263643136
[   10.979867]  md1: p1
[   11.003883] PM: Starting manual resume from disk
[   11.003889] PM: Hibernation image partition 8:6 present
[   11.003890] PM: Looking for hibernation image.
[   11.004072] PM: Image not found (code -22)
[   11.004075] PM: Hibernation image not present or could not be loaded.
[   11.062530] random: nonblocking pool is initialized
[   11.114199] EXT4-fs (sda7): mounted filesystem with ordered data mode. Opts: (null)
А вот если диск sdc при перезагрузке не присоединяется к массиву, то лог получается примерно такой:
[   12.609997] scsi6 : ioc0: LSISAS1064E B3, FwRev=01210000h, Ports=1, MaxQ=483, IRQ=16
[   12.631103] mptsas: ioc0: attaching sata device: fw_channel 0, fw_id 0, phy 2, sas_addr 0x3d3b5a2a78ad6ba7
[   12.634735] scsi 6:0:0:0: Direct-Access     ATA      TOSHIBA DT01ACA2 ABB0 PQ: 0 ANSI: 5
[   12.641472] sd 6:0:0:0: Attached scsi generic sg1 type 0
[   12.643869] sd 6:0:0:0: [sdb] 3907029168 512-byte logical blocks: (2.00 TB/1.81 TiB)
[   12.837197] sd 6:0:0:0: [sdb] Write Protect is off
[   12.837201] sd 6:0:0:0: [sdb] Mode Sense: 73 00 00 08
[   12.839738] sd 6:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[   13.031021]  sdb: sdb1
[   13.249021] sd 6:0:0:0: [sdb] Attached SCSI disk
[   13.250232] mptsas: ioc0: attaching sata device: fw_channel 0, fw_id 1, phy 3, sas_addr 0x3d49361f799c6f86
[   13.254109] scsi 6:0:1:0: Direct-Access     ATA      TOSHIBA DT01ACA2 ABB0 PQ: 0 ANSI: 5
[   13.261389] sd 6:0:1:0: Attached scsi generic sg2 type 0
[   13.262350] sd 6:0:1:0: [sdc] 3907029168 512-byte logical blocks: (2.00 TB/1.81 TiB)
[   13.389653] md: bind<sdb1>
[   13.390763] md: raid1 personality registered for level 1
[   13.391070] md/raid1:md1: active with 1 out of 2 mirrors
[   13.391164] created bitmap (15 pages) for device md1
[   13.391487] md1: bitmap initialized from disk: read 1 pages, set 0 of 29807 bits
[   13.452440] md1: detected capacity change from 0 to 2000263643136
[   13.455656]  md1: p1
[   13.460522] sd 6:0:1:0: [sdc] Write Protect is off
[   13.460527] sd 6:0:1:0: [sdc] Mode Sense: 73 00 00 08
[   13.463190] sd 6:0:1:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[   13.480245] PM: Starting manual resume from disk
[   13.480250] PM: Hibernation image partition 8:6 present
[   13.480252] PM: Looking for hibernation image.
[   13.480455] PM: Image not found (code -22)
[   13.480457] PM: Hibernation image not present or could not be loaded.
[   13.581850] EXT4-fs (sda7): mounted filesystem with ordered data mode. Opts: (null)
[   13.654339]  sdc: sdc1
[   13.874445] random: nonblocking pool is initialized
[   13.875680] sd 6:0:1:0: [sdc] Attached SCSI disk
Т.е., насколько я понимаю своим дилетантским умом, диск sdc в «аварийном» случае в системе всё равно присутствует, но не успевает полностью проинициализироваться до момента сборки массива mdadm и потому не попадает в массив. После сборки он «доинициализируется» и потому может быть присоединён вручную. Кстати, если система запускается нормально, то fdisk показывает все диски «правильном» порядке: sda, sdb, sdc, md. А вот если система запускается без диска sdc в массиве, то fdisk выводит диски так: sda, sdb, md, sdc. Т.е., как я понимаю, fdisk отображает диски в порядке их появления в системе. Отсюда у меня такие вопросы: 1. почему диск sdc периодически «опаздывает» и появляется в системе уже после md, 2. связано ли это с контроллером или это вызвано какими-то процессами, произошедшими в системе при первой (неудачной) прошивке и «развале» массива? 3. как это исправить?

P.S. SMART'ы в порядке, ошибок при работе массива тоже вроде как нет.


Вы правильно понимаете, что по какой-то причине на момент сборки md диск не доступен. ИМХО, это может быть вобще не связано с прошивкой контроллера, просто совпало. Может проблемы с БП и одному из дисков не хватает питания при одновременном запуске. Может и с шлейфом проблемы, хотя, тогда наверное были бы сбои и при работе. И не понятно, у вас проблемы с одним и тем же диском или случайно какой то из двух не распознается.

Вы smart винтов внимательно сравнивали, по всяким там Spin_Up_Time, Power_Cycle_Count и т.д.?

А может всё нормально работает, просто нужна задержка, boot-параметр rootdelay ведь не просто так придумали.

mky ★★★★★
()
Ответ на: комментарий от mky

Спасибо за ответ! От момента запуска дисков до начала загрузки там порядочно времени проходит - вряд ли диск не успевает раскрутиться. Отваливается всегда один и тот же диск sdc. Может, попробовать поменять SATA-портами sdb и sdc? Если начнёт сбоить sdb, значит, это как-то связано с портом и контроллером, а если продолжит sdc - с диском. Насколько я понимаю, для Линукса же не имеет значения, что куда воткнуто?
Кабели стоят качественные и проверенные тестером на сопротивление при помощи выпаяных из дохлой матери SATA-разъемов.Да и обычно если кабель плохой, то в SMART растут всякие UDMA CRC-error, а тут по нулям.
Spin_Up_Time и Power_Cycle_Count (sdb/sdc): 267/274 и 280/280. Так что тут вроде как проблемы тоже нет.

Попробую увеличить rootdelay.

IlyaZD
() автор топика
Ответ на: комментарий от IlyaZD

Всегда будет отваливаться sdc, потому что первому обнаруженному будет назначено sdb. Это нужно по серийникам винтов смотреть какой отвалился — первый или второй порт.

Ну ещё посмотрите Start_Stop_Count и Spin_Retry_Count.

mky ★★★★★
()

Тред не читай, советы давай: не используйте буквенные имена дисков (sdX), давно придуманы UUID, например.

ephecaff ★
()

Хорошая практика, когда ядерные модули младше даты выпуска мажорной версии прошивки для критичного железа. Может поставить ядро посвежее из backports?

Perspective
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.