Для open-iscsi-2.0.871-alt3 (в Sisyphus, M51) имя lock-файла отличается от имени init-скрипта. Т.е., в /etc/rc.d/init.d/open-iscsi указано LOCKFILE=/var/lock/subsys/iscsi В то же время, в /etc/rc.d/rc из пакета startup для остановки сервиса используется следущий код (строки 56-73): --------- # First, run the KILL scripts. for i in "/etc/rc.d/rc$runlevel.d"/K*; do ..... # Check if the subsystem is already up. [ -f "/var/lock/subsys/$subsys" -o -f "/var/lock/subsys/$subsys.init" ] || continue .... done ------------------ Т.е., для open-iscsi и соответствующих ссылкок K87open-iscsi проверяется наличие lock-файла LOCKFILE=/var/lock/subsys/open-iscsi. И ввиду отсутствия последнего остановка сервиса при, например, выключении машины не производится. Как следствие, подмонтированные тома ISCSI остаются активными на момент остановки сети и вызывают зависание процесса остановки системы на этапе окончательного размонтирования локальных файловых систем. Т.е., требуется изменить название LOCKFILE'а на /var/lock/subsys/open-iscsi
Я думаю вы ошибаетесь. 60 subsys=${i#/etc/rc.d/rc$runlevel.d/K??} 61 62 splash_update "$subsys" 63 64 # Check if the subsystem is already up. 65 [ -f "/var/lock/subsys/$subsys" -o -f "/var/lock/subsys/$subsys.init" ] || continue В данном случае проверяется $subsys.init, т.е. open-iscsi.init Вы пробовали переименовать как вы предлагаете и проблема решается?
(In reply to comment #1) > 60 subsys=${i#/etc/rc.d/rc$runlevel.d/K??} Здесь subsys становится равным 'open-iscsi', после чего > 65 [ -f "/var/lock/subsys/$subsys" -o -f "/var/lock/subsys/$subsys.init" ] || continue развёртывается в [ -f "/var/lock/subsys/open-iscsi" -o -f "/var/lock/subsys/open-iscsi.init" ] || continue LOCKFILE создаётся как /var/lock/subsys/iscsi - т.е., оба условия не выполняются и идёт переход на очередной шаг цикла, без остановки сервиса. Эта проблема остановки сервиса именно в процессе выключения/перезагрузки машины, непосредственно вызов '/etc/init.d/open-iscsi stop', разумеется, отработает. А etc/rc.d/rc, для определения, что нужно останавливать, проверяет список K* в соответствующем rcN.d/ (который есть для всех установленных в систему сервисов, в т.ч. и выключенных), и по их именам определяет имена соответствующего lock-файлов. И останавливает только те, для которых lock-файлы присутствуют - т.е. те, которые можно считать работающими. Как я понимаю, имя LOCKFILE'а осталось после переименования скрипта из iscsi.init. С текущим именем LOCKFILE'а при выключении/перезагрузке машины вызова 'service open-iscsi stop' не выполняется. Замена вида ------------------------------ --- a/rc.d/init.d/open-iscsi +++ b/rc.d/init.d/open-iscsi @@ -26,7 +26,7 @@ ISCSID=iscsid ISCSIADM=iscsiadm PIDFILE=/var/run/iscsid.pid -LOCKFILE=/var/lock/subsys/iscsi +LOCKFILE=/var/lock/subsys/open-iscsi RETVAL=0 attach_nodes() ------------------------------ проблему решает.
open-iscsi-2.0.871-alt4 (текущий Sisyphus, t6/p6) - без изменений. С текущим значением LOCKFILE=/var/lock/subsys/iscsi в init-скрипте при перезапуске/выключении системы остановка сервиса не происходит, в итоге при наличии смонтированных томов ISCSI они остаются до выключения сети, и система виснет на этапе размонтирования локальных файловых систем.
Установил open-iscsi-2.0.871-alt4, поднял соединение с SAN, настроил на автозагрузку. После этого машина стала сильно (минуты две) задумываться при перезагрузке (выключать не пробовал) между "Stopping kernel logger service: [OK]" и "Stopping syslog-ng service: [OK]". Заметил, что в списке останавливаемых сервисов не присутствует ничего связаного с iscsi. Попробовал до перезагрузки сказать service open-iscsi stop - помогло. Попробовал применить указанный патч. Помогло. Теперь система не тупит при перезапуске И в списке останавливаемых сервисов есть open-iscsi и мой IQN.
Fixed in 2.0.871-alt5
А можно alt5 в t6 положить? Для исправления проблемы с остановкой сервиса при выключении/перезагрузке...