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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.