alibek Posted January 11, 2022 · Report post Есть старый сервер на RHEL4, на котором крутится Oracle 10g (это к тому, почему обновить или поменять сервер проблемно). Есть СХД (SAN), один том которой смонтирован на сервере (в /extra/net). Скрытый текст /etc/iscsi.conf Continuous=no HeaderDigest=never #DataDigest=never ImmediateData=yes TargetName=iqn.1992-08.com.netapp:2752.600a0980005fb6250000000054997769 DiscoveryAddress=10.102.0.211 После перезагрузки сервера том не подключался автоматически. Методом "тыка" был составлен скрипт, который я запускал вручную после перезагрузки сервера: #!/bin/bash modprobe iscsi_sfnet /etc/init.d/iscsi stop /etc/init.d/iscsi start #modprobe dm-multipath iscsi-rescan mount /extra/net Но какое-то время назад скрипт перестал надежно работать (монтировать диск), пишет "mount: /dev/sdc1 already mounted or /extra/net busy". В логах пишется следующее: Скрытый текст Jan 11 10:56:54 bm-db iscsi: останов iscsid succeeded Jan 11 10:56:54 bm-db kernel: Synchronizing SCSI cache for disk sdb: Jan 11 10:56:55 bm-db kernel: FAILED Jan 11 10:56:55 bm-db kernel: status = 1, message = 00, host = 0, driver = 08 Jan 11 10:56:55 bm-db kernel: Current sd: sense key Illegal Request Jan 11 10:56:55 bm-db kernel: ASC=94 ASCQ= 1 Jan 11 10:56:55 bm-db kernel: iscsi-sfnet:host5: Session dropped Jan 11 10:56:55 bm-db kernel: Synchronizing SCSI cache for disk sdc: Jan 11 10:56:55 bm-db kernel: iscsi-sfnet:host7: Session dropped Jan 11 10:56:55 bm-db iscsi: removing driver succeeded Jan 11 10:56:56 bm-db iscsi: iscsi config check succeeded Jan 11 10:56:56 bm-db kernel: iscsi-sfnet: Loading iscsi_sfnet version 4:0.1.11-3 Jan 11 10:56:56 bm-db kernel: iscsi-sfnet: Control device major number 252 Jan 11 10:56:56 bm-db iscsi: Loading iscsi driver: succeeded Jan 11 10:57:01 bm-db iscsid[8617]: version 4:0.1.11-7 variant (14-Apr-2008) Jan 11 10:57:01 bm-db iscsi: запуск iscsid succeeded Jan 11 10:57:01 bm-db iscsid[8620]: Connected to Discovery Address 10.102.0.211 Jan 11 10:57:01 bm-db kernel: iscsi-sfnet:host9: Session established Jan 11 10:57:01 bm-db kernel: scsi9 : SFNet iSCSI driver Jan 11 10:57:01 bm-db kernel: iscsi-sfnet:host11: Session established Jan 11 10:57:01 bm-db kernel: Vendor: NETAPP Model: INF-01-00 Rev: 0810 Jan 11 10:57:01 bm-db kernel: Type: Direct-Access ANSI SCSI revision: 05 Jan 11 10:57:01 bm-db kernel: scsi11 : SFNet iSCSI driver Jan 11 10:57:01 bm-db kernel: Vendor: NETAPP Model: INF-01-00 Rev: 0810 Jan 11 10:57:01 bm-db kernel: Type: Direct-Access ANSI SCSI revision: 05 Jan 11 10:57:01 bm-db kernel: Vendor: NETAPP Model: INF-01-00 Rev: 0810 Jan 11 10:57:01 bm-db kernel: Type: Direct-Access ANSI SCSI revision: 05 Jan 11 10:57:01 bm-db kernel: Vendor: NETAPP Model: INF-01-00 Rev: 0810 Jan 11 10:57:01 bm-db kernel: Type: Direct-Access ANSI SCSI revision: 05 Jan 11 10:57:01 bm-db kernel: sdb : very big device. try to use READ CAPACITY(16). Jan 11 10:57:01 bm-db kernel: SCSI device sdb: 4294967296 512-byte hdwr sectors (2199023 MB) Jan 11 10:57:01 bm-db kernel: SCSI device sdb: drive cache: write back Jan 11 10:57:01 bm-db kernel: sdb : very big device. try to use READ CAPACITY(16). Jan 11 10:57:01 bm-db kernel: SCSI device sdb: 4294967296 512-byte hdwr sectors (2199023 MB) Jan 11 10:57:01 bm-db kernel: SCSI device sdb: drive cache: write back Jan 11 10:57:01 bm-db scsi.agent[8666]: disk at /devices/platform/host9/target9:0:0/9:0:0:0 Jan 11 10:57:01 bm-db scsi.agent[8716]: disk at /devices/platform/host11/target11:0:0/11:0:0:0 Jan 11 10:57:01 bm-db kernel: sdb:end_request: I/O error, dev sdb, sector 0 Jan 11 10:57:01 bm-db kernel: Buffer I/O error on device sdb, logical block 0 Jan 11 10:57:02 bm-db kernel: end_request: I/O error, dev sdb, sector 0 Jan 11 10:57:02 bm-db kernel: Buffer I/O error on device sdb, logical block 0 Jan 11 10:57:02 bm-db kernel: end_request: I/O error, dev sdb, sector 0 Jan 11 10:57:02 bm-db kernel: Buffer I/O error on device sdb, logical block 0 Jan 11 10:57:03 bm-db kernel: end_request: I/O error, dev sdb, sector 0 Jan 11 10:57:03 bm-db kernel: Buffer I/O error on device sdb, logical block 0 Jan 11 10:57:03 bm-db kernel: end_request: I/O error, dev sdb, sector 0 Jan 11 10:57:03 bm-db kernel: Buffer I/O error on device sdb, logical block 0 Jan 11 10:57:04 bm-db kernel: end_request: I/O error, dev sdb, sector 0 Jan 11 10:57:04 bm-db kernel: Buffer I/O error on device sdb, logical block 0 Jan 11 10:57:04 bm-db kernel: end_request: I/O error, dev sdb, sector 0 Jan 11 10:57:04 bm-db kernel: Buffer I/O error on device sdb, logical block 0 Jan 11 10:57:04 bm-db kernel: unable to read partition table Jan 11 10:57:04 bm-db kernel: Attached scsi disk sdb at scsi9, channel 0, id 0, lun 100 Jan 11 10:57:04 bm-db kernel: sdc : very big device. try to use READ CAPACITY(16). Jan 11 10:57:04 bm-db kernel: SCSI device sdc: 4294967296 512-byte hdwr sectors (2199023 MB) Jan 11 10:57:04 bm-db kernel: SCSI device sdc: drive cache: write back Jan 11 10:57:04 bm-db kernel: sdc : very big device. try to use READ CAPACITY(16). Jan 11 10:57:04 bm-db kernel: SCSI device sdc: 4294967296 512-byte hdwr sectors (2199023 MB) Jan 11 10:57:04 bm-db kernel: SCSI device sdc: drive cache: write back Jan 11 10:57:04 bm-db scsi.agent[8749]: disk at /devices/platform/host9/target9:0:0/9:0:0:100 Jan 11 10:57:04 bm-db kernel: sdc: sdc1 Jan 11 10:57:04 bm-db kernel: Attached scsi disk sdc at scsi11, channel 0, id 0, lun 100 Jan 11 10:57:04 bm-db scsi.agent[8789]: disk at /devices/platform/host11/target11:0:0/11:0:0:100 Jan 11 10:57:07 bm-db kernel: end_request: I/O error, dev sdb, sector 0 Jan 11 10:57:07 bm-db kernel: device-mapper: dm-multipath: Failing path 8:16. Jan 11 10:57:31 bm-db kernel: sdc : very big device. try to use READ CAPACITY(16). Jan 11 10:57:31 bm-db kernel: SCSI device sdc: 4294967296 512-byte hdwr sectors (2199023 MB) Jan 11 10:57:31 bm-db kernel: SCSI device sdc: drive cache: write back Jan 11 10:57:31 bm-db kernel: sdb : very big device. try to use READ CAPACITY(16). Jan 11 10:57:31 bm-db kernel: SCSI device sdb: 4294967296 512-byte hdwr sectors (2199023 MB) Jan 11 10:57:31 bm-db kernel: SCSI device sdb: drive cache: write back Причем иногда скрипт все же работает. Например сейчас я загрузил модуль dm-multipath и пару раз запустил скрипт — и на второй раз он внезапно сработал и в /extra/net смонтировался том. Но хотелось бы определенности и уверенности в том, что в следующий раз это тоже сработает. Сервер устанавливался давно и не мною, система очень старая, при этом в продакшне, поэтому возможности экспериментировать ограничены. Как бы понять, почему iSCSI работает так непонятно и что именно является причиной ошибок? Что означает "I/O error" в логах? Физические ошибки в HDD? Сетевые ошибки? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
naves Posted January 11, 2022 (edited) · Report post multipath -ll что говорит? похожие ошибки могут быть когда таргет отдает несколько путей-адресов своих линков, которые недоступны клиенту. Ну и простой iscsid stop это несколько грубо, нужно сначала убедиться, что том не примонтирован. судя по логу там либо два диска отдаются, либо это два пути одного. полистайте ман от iscsiadm там была команда на список сессий/лунов. ну и собственно монтируется у вас sdc диск, а не общее устройство, что в целом позволяет предположить что эти ошибки были и раньше, или второй линк отвалился/не был вообще подключен, или второй LUN не до конца настроен на самой хранилке. Edited January 11, 2022 by naves Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted January 13, 2022 · Report post В 11.01.2022 в 22:54, naves сказал: что говорит? "multipath: command not found" Слишком старая ОС. iscsiadm тоже нет. Есть iscsi-ls: iscsi-ls ******************************************************************************* SFNet iSCSI Driver Version ...4:0.1.11-7(14-Apr-2008) ******************************************************************************* TARGET NAME : iqn.1992-08.com.netapp:2752.600a0980005fb6250000000054997769 TARGET ALIAS : *** HOST ID : 21 BUS ID : 0 TARGET ID : 0 TARGET ADDRESS : 10.102.0.211:3260,1 SESSION STATUS : ESTABLISHED AT Втр Янв 11 14:20:00 MSK 2022 SESSION ID : ISID 00023d000001 TSIH f ******************************************************************************* TARGET NAME : iqn.1992-08.com.netapp:2752.600a0980005fb6250000000054997769 TARGET ALIAS : *** HOST ID : 23 BUS ID : 0 TARGET ID : 0 TARGET ADDRESS : 10.102.0.212:3260,2 SESSION STATUS : ESTABLISHED AT Втр Янв 11 14:20:00 MSK 2022 SESSION ID : ISID 00023d000003 TSIH 8013 ******************************************************************************* В 11.01.2022 в 22:54, naves сказал: Ну и простой iscsid stop это несколько грубо, нужно сначала убедиться, что том не примонтирован. Наверное да, но я этот скрипт запускаю только вручную, после перезагрузки сервера, когда этот том точно не смонтирован. В 11.01.2022 в 22:54, naves сказал: похожие ошибки могут быть когда таргет отдает несколько путей-адресов своих линков, которые недоступны клиенту. На СХД два независимых контроллера. Но оба они доступны клиенту. В 11.01.2022 в 22:54, naves сказал: ну и собственно монтируется у вас sdc диск, а не общее устройство А вот это не понял, можете пояснить? Я монтирую sdc1 (том). Само блочное устройство sdc появляется в системе после успешного запуска iscsi. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
rm_ Posted January 13, 2022 · Report post On 1/11/2022 at 4:27 PM, alibek said: Но какое-то время назад скрипт перестал надежно работать (монтировать диск), пишет "mount: /dev/sdc1 already mounted or /extra/net busy". Может куда-то кто-то монтирует вместо вас? Если в такой момент сделать: umount /dev/sdc1 umount /extra/net что-то из этого сработает? Ну и если по завершению скрипта, через 5-10 секунд вручную сделать "mount /extra/net" - тоже не сработает? А то может там просто не успевает что-то раздуплиться, и хватило бы добавить sleep. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted January 13, 2022 · Report post Если скрипт (с перезапуском iscsi) один раз сработал нормально, то больше он уже не нужен и монтирование/размонтирование работает без проблем, без каких-либо ограничений по времени действия. То есть и через несколько месяцев все будет работать. Проблемы бывают после перезагрузки сервера, когда скрипт не срабатывает. В этом случае /dev/sdc1 не смонтирован, а при попытке его смонтировать я получаю сообщение "mount: /dev/sdc1 already mounted or /extra/net busy" и ошибки в логах. Ожидание (sleep) не помогает. Подозреваю, что помогают разные эксперименты с загрузкой или выгрузкой модуля dm-multipath. Мой метод "тыка" заключается в том, что если скрипт не сработал, я пробую закомментировать или раскомментировать строчки и в какой-то момент он срабатывает. Вот хотелось бы уйти от "магии" и понять, что происходит. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
rm_ Posted January 13, 2022 · Report post On 1/13/2022 at 10:51 PM, alibek said: Проблемы бывают после перезагрузки сервера, когда скрипт не срабатывает. В этом случае /dev/sdc1 не смонтирован, а при попытке его смонтировать я получаю сообщение "mount: /dev/sdc1 already mounted or /extra/net busy" Это понятно. Но сообщение прочитайте, там же указано "либо одно либо другое", я и предложил два umount'а проверить, если один из них вдруг сработает, стало бы ясно, куда смотреть дальше. А по науке это можно просто посмотреть в /proc/mounts. Может у вас какой systemd автомонтирует /dev/sdc1 по другому пути. Проверить чтобы он в /etc/fstab не был лишний раз упомянут. Или вообще убрать упоминание его оттуда, и монтировать полным синтаксисом (указывая устройство и опции) прямо в скрипте. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
naves Posted January 14, 2022 (edited) · Report post 21 hours ago, alibek said: А вот это не понял, можете пояснить? Я монтирую sdc1 (том). Само блочное устройство sdc появляется в системе после успешного запуска iscsi. По ISCSI отдается один лун двумя путями, поэтому в системе появляются несколько блочных устройств. Монтировать можно любое из них. Но тогда пропадает резервирование (и пропускная спопособность) этого самого multipath. Поэтому монтировать нужно уже устройство собранное из нескольких через тот самый dm-multipath. Вот так это выглядит на настроенной системе: # multipath -ll reserv (36589cfc0000000bd4d857b568a61bc01) dm-20 FreeNAS,iSCSI Disk size=22T features='1 queue_if_no_path' hwhandler='0' wp=rw `-+- policy='round-robin 0' prio=1 status=active |- 20:0:0:0 sdai 66:32 active ready running `- 19:0:0:0 sdah 66:16 active ready running #lsblk sdah 66:16 0 21.8T 0 disk └─reserv 251:20 0 21.8T 0 mpath sdai 66:32 0 21.8T 0 disk └─reserv 251:20 0 21.8T 0 mpath # /lib/udev/scsi_id -g /dev/sdah 36589cfc0000000bd4d857b568a61bc01 # /lib/udev/scsi_id -g /dev/sdai 36589cfc0000000bd4d857b568a61bc01 В целом посмотреть бы dmesg после ребута перед запуском скрипта и после скрипта. Edited January 14, 2022 by naves Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted January 14, 2022 · Report post Ага, теперь понятно. В системе есть sdb и sdc. Я предполагал, что это как раз с multipath связано, но не стал разбираться. Выяснил что sdc1 работал нормально и на этом дальше копаться не стал. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...