LINUX.ORG.RU
решено ФорумAdmin

LVM over iSCSI и fstab

 , ,


0

1

Все привет!

Есть target, отдающий lun и initiator, получающий его в качестве /dev/sdb. На обоих машинах Gentoo.

На клиенте поверх /dev/sdb сделан lvm, один из томов которого монтируется через fstab.

Проблема в том, что после перезагрузки клиента описанный в fstab-е раздел не монтируется автоматически.

# /etc/fstab

/dev/vg1/src	/usr/src	ext4	_netdev,noatime	0 0

Вероятно, как только появляется сеть, одновременно:

  1. iscsi логинится на target (повторяет неудачную попытку с некоторой задеркой)
  2. netmount пробует монтировать раздел из fstab, не дожидаясь появления девайса /dev/sdb и подхвата его lvm-ом.

Для systemd можно в опции монтирования дописать x-systemd.requires=iscsid.service.

А как решить данную проблему в случае openrc?



Последнее исправление: Drew0 (всего исправлений: 2)

Для systemd можно в опции монтирования дописать x-systemd.requires=iscsid.service. А как решить данную проблему в случае openrc?

Изучить закоментированные описания и примеры в /etc/rc.conf и реализовать аналогичное поведение, дополнительно определив зависимости сервисов друг от друга. Но для начала было бы неплохо отключить параллельную загрузку, чтобы исключить «гонку», включить загрузку интерактивную, включить логи загрузки, если ещё не сделано, и разобраться, что же всё таки мешает монтировать.

Jameson ★★★★★
()

А в каком состоянии vg после загрузки?

IMHO после подключения iscsi нужно чтобы кто-то сказал «vgscan && vgchange -a y» и только после этого можно будет монтировать lv.

vgscan и vgchange скорее всего можно сделать в виде правил для udev (если это еще не сделано).

Я бы монтирование в autofs запихнул, а autofs запускал после iscsi

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

vg похватывается после успешного логина iscsi когда появляется новое блочное устройство, на котором виден header от lvm


[    8.594921] scsi host19: iSCSI Initiator over TCP/IP
[    8.642457] scsi 19:0:0:0: Direct-Access     LIO-ORG  ihc              4.0  PQ: 0 ANSI: 6
[    8.852172] sd 19:0:0:0: [sdb] 10485760 512-byte logical blocks: (5.37 GB/5.00 GiB)
[    8.865673] sd 19:0:0:0: [sdb] Write Protect is off
[    8.865687] sd 19:0:0:0: [sdb] Mode Sense: 43 00 10 08
[    8.893738] sd 19:0:0:0: [sdb] Write cache: enabled, read cache: enabled, supports DPO and FUA
[    8.907186] sd 19:0:0:0: [sdb] Preferred minimum I/O size 512 bytes
[    8.907199] sd 19:0:0:0: [sdb] Optimal transfer size 4294967288 logical blocks > dev_max (65535 logical blocks)
[    9.000451] sd 19:0:0:0: [sdb] Attached SCSI disk

Думал про autofs, но как-то некрасиво. Можно и в /etc/local.d, но тоже не очень. Нативно бы.

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

Там не нужно колхозить, там нужно определить что после чего стартует и после какого статуса. Вангую из за включённой по умолчанию параллельной загрузки возникает «гонка», или порядок запуска сервисов неверный. Благо это всё отлаживается и настраивается, нужно только научиться это делать.

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

Значит у тебя сканирование томов lvm должно срабатывать после полного старта iscsi. Действительно не нужно колхозить в local.d, хотя и можно в качестве последнего средства. Просто отключи параллельную загрузку на время отладки, включи логи самой загрузки, посмотри что после чего у тебя стартует, и переопредели если нужно в /etc/rc.conf.

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

Вообще вот это вот разумно кстати. Не очень правильно в цикле загрузки завязываться на действия которые происходят по сети, с непредсказуемыми задержками в процессе. Пускай уж действительно всё прогрузится и устаканится, а монтировать уже гарантированно в конце балета, скриптом из local.d, в который можно и проверочку встроить какую угодно, с контролем ошибок, ожидайкой и повторами например. Скрипты из local.d гарантированно отрабатывают самыми последними, когда уже всё что могло в процессе загрузки взлететь — взлетело и залогинилось.

Тащемто автомонтирование сетевых fs одновременно с локальными не есть хорошая практика, действительно. Локальные фс пусть себе автомонтируются из fstab, и это вполне может происходить раньше чем сетевые сервисы взлетят. А вот сетевые лучше бы с noauto, скриптом в самом конце, да.

Jameson ★★★★★
()
Последнее исправление: Jameson (всего исправлений: 3)
Ответ на: комментарий от Drew0

Докладываю что отловил в интерактивном режиме.

Порядок запуска следующий:

- ...
- localmount (boot)
- ...
- net.eth0 (default)
- iscsid (default)
- netmount (default)

Т.е. netmount в правильном месте вызывается.

Если в ручном режиме подождать секунду-другую после запуска iscsid, то но успевает залогониться, и тогда после запуска netmount партиция lv@lvm@iscsi успешно монтируется.

А в rc_interactive="NO" на момент вызова netmount еще не успел произойти логин iscsid, следовательно блочный девайс не появился и lvm не видит группу.

Дожидаться (синхронно) успешного логина в iscsid не стоит, т.к. заблокируется загрузка.

Я бы добавил паузу в пару секунд (за это время логин iscsid проценов на 95 произойдет), а потом контрольную проверку в local.d. Наверное, так и сделаю.

Спасибо всем за участие и за полезные советы!

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

не успел произойти логин iscsid

А, не, напутал я, дело не в этом. Логин происходит синхронно, т.е. стартап-скрипт ожидает до таймаута и блокирует загрузку.

Похоже, что после успешного логина новое блочное устройство не успевает подхватиться device mapper-ом до запуска netmount.

В любом случае, пауза в 2 секунды после запуска iscsid спасает.

Drew0
() автор топика

А как решить данную проблему в случае openrc?

Правилом udev. Когда увидел iSCSI и LV (а может вообще хватит только LV) вызывай mount. И можно тогда даже в fstab не вносить - навесить метки (теги) на LV и на их основании сработать

no-dashi-v2 ★★★
()

На самой машине локальные ФС идут тоже через LVM? Если нет - можно в rc.conf добавить:

rc_lvm_need="iscsid"

Но это костыль, предложения по udev явно лучше, потому что они событийные. И пригодятся, например, для перемонтирования при отвале сети (хотя по-хорошему надо делать multipath и 2 линка до таргета)

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 3)