Jump to content
Калькуляторы

RHEL4 - ошибки подключения iSCSI

Есть старый сервер на 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? Сетевые ошибки?

Share this post


Link to post
Share on other sites

multipath -ll

что говорит?

похожие ошибки могут быть когда таргет отдает несколько путей-адресов своих линков, которые недоступны клиенту.

Ну и простой iscsid stop это несколько грубо, нужно сначала убедиться, что том не примонтирован.

судя по логу там либо два диска отдаются, либо это два пути одного.

полистайте ман от iscsiadm там была команда на список сессий/лунов.

ну и собственно монтируется у вас sdc диск, а не общее устройство, что в целом позволяет предположить что эти ошибки были и раньше, или второй линк отвалился/не был вообще подключен, или второй LUN не до конца настроен на самой хранилке.

Edited by naves

Share this post


Link to post
Share on other sites

В 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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Если скрипт (с перезапуском iscsi) один раз сработал нормально, то больше он уже не нужен и монтирование/размонтирование работает без проблем, без каких-либо ограничений по времени действия. То есть и через несколько месяцев все будет работать.

Проблемы бывают после перезагрузки сервера, когда скрипт не срабатывает. В этом случае /dev/sdc1 не смонтирован, а при попытке его смонтировать я получаю сообщение "mount: /dev/sdc1 already mounted or /extra/net busy" и ошибки в логах. Ожидание (sleep) не помогает.

Подозреваю, что помогают разные эксперименты с загрузкой или выгрузкой модуля dm-multipath. Мой метод "тыка" заключается в том, что если скрипт не сработал, я пробую закомментировать или раскомментировать строчки и в какой-то момент он срабатывает.

Вот хотелось бы уйти от "магии" и понять, что происходит.

Share this post


Link to post
Share on other sites

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 не был лишний раз упомянут.

Или вообще убрать упоминание его оттуда, и монтировать полным синтаксисом (указывая устройство и опции) прямо в скрипте.

Share this post


Link to post
Share on other sites

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 by naves

Share this post


Link to post
Share on other sites

Ага, теперь понятно.

В системе есть sdb и sdc. Я предполагал, что это как раз с multipath связано, но не стал разбираться.

Выяснил что sdc1 работал нормально и на этом дальше копаться не стал.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.