Добавьте новый диск в /etc/tgt/targets.conf и перезагрузите без воздействия на другие диски/инициаторные хосты.

Вопрос или проблема

Я добавил новый диск на сервер:

[root@ns1 tgt]# lsblk |grep sdh
sdh           8:112  0  600M  0 disk

Также я создал новую запись для /dev/sdh в /etc/tgt/targets.conf

[root@ns1 tgt]# cat /etc/tgt/targets.conf |grep /dev/
                                         direct-store /dev/sdb
                                         direct-store /dev/sdc
                                         direct-store /dev/sdd
                                         direct-store /dev/sde
                                         direct-store /dev/sdf
                                         direct-store /dev/sdg
                                         direct-store /dev/sdh
[root@ns1 tgt]#

Как я могу перезагрузить новую конфигурацию и сделать доступным новый LUN? Я пробовал systemctl reload tgtd, tgt-admin -e и tgt-admin --ready ALL, но ни один не сработал. Ниже видно, что еще нет /dev/sdh.

[root@ns1 tgt]# tgtadm --mode target --op show|grep /dev/
            Backing store path: /dev/sdb
            Backing store path: /dev/sdc
            Backing store path: /dev/sdd
            Backing store path: /dev/sde
            Backing store path: /dev/sdf
            Backing store path: /dev/sdg
[root@ns1 tgt]#

Я протестировал с systemctl restart tgtd, и это сработало, но это повлияло на хосты инициаторов. То есть после перезагрузки tgtd (лог с некоторого хоста инициатора):

Jun  6 18:20:41 rac1 kernel: connection1:0: detected conn error (1020)
Jun  6 18:20:41 rac1 iscsid: iscsid: Kernel reported iSCSI connection 1:0 error (1020 - ISCSI_ERR_TCP_CONN_CLOSE: TCP connection closed) state (3)
Jun  6 18:20:43 rac1 iscsid: iscsid: Kernel reported iSCSI connection 1:0 error (1020 - ISCSI_ERR_TCP_CONN_CLOSE: TCP connection closed) state (2)
Jun  6 18:20:43 rac1 kernel: connection1:0: detected conn error (1020)
Jun  6 18:20:45 rac1 kernel: connection1:0: detected conn error (1020)
Jun  6 18:20:45 rac1 iscsid: iscsid: Kernel reported iSCSI connection 1:0 error (1020 - ISCSI_ERR_TCP_CONN_CLOSE: TCP connection closed) state (2)
Jun  6 18:20:46 rac1 kernel: session1: session recovery timed out after 5 secs
Jun  6 18:20:47 rac1 multipathd: checker failed path 8:112 in map data1
Jun  6 18:20:47 rac1 multipathd: data1: remaining active paths: 0
Jun  6 18:20:47 rac1 kernel: device-mapper: multipath: Failing path 8:112.
Jun  6 18:20:47 rac1 kernel: device-mapper: multipath: Failing path 8:80.
Jun  6 18:20:47 rac1 kernel: device-mapper: multipath: Failing path 8:96.
Jun  6 18:20:47 rac1 multipathd: checker failed path 8:80 in map fra2
Jun  6 18:20:47 rac1 multipathd: fra2: remaining active paths: 0
Jun  6 18:20:47 rac1 multipathd: checker failed path 8:96 in map fra3
Jun  6 18:20:47 rac1 multipathd: fra3: remaining active paths: 0
Jun  6 18:20:47 rac1 iscsid: iscsid: Kernel reported iSCSI connection 1:0 error (1020 - ISCSI_ERR_TCP_CONN_CLOSE: TCP connection closed) state (2)
Jun  6 18:20:47 rac1 kernel: connection1:0: detected conn error (1020)
Jun  6 18:20:49 rac1 iscsid: iscsid: connection1:0 is operational after recovery (4 attempts)

Вы пробовали указать файл конфигурации? например.

tgt-admin --update ALL -c /etc/tgt/targets.conf

Я также заметил в логах моего сервера (49 целей), что systemd завершал работу при запуске, оставляя состояние несогласованным. Создание /etc/systemd/system/tgt.service.d/extend-timeout.conf таким образом позволило чистый старт:

[Service]
TimeoutStartSec=5m

кстати: bs-type aio для LUN также помогло со временем запуска.

Как предложено в ответе Билла МакГонигла, я думаю, что что-то вроде…

tgt-admin --update tid=1

…сделает то, что вам нужно, хотя текст помощи указывает, что --force необходимо, если к цели подключены инициаторы.

В противном случае вы можете использовать tgtadm для изменения конфигурации целевой системы на ходу без перезапуска tgtd:

tgtadm --op new --mode logicalunit --tid 1 --lun 8 --backing-store /dev/sdh

Обратите внимание, что tgtadm не предоставляет параметр --direct-store. targets.conf.example описывает директиву direct-store как…

# "direct-store" считывает параметры привода с помощью команды sg_inq и задает их для
# цели.
# Параметры, извлекаемые с sg_inq:
# - Идентификация производителя
# - Идентификация продукта
# - Уровень ревизии продукта
# - Серийный номер блока (если присутствует)

…так что вы можете самостоятельно запросить те же параметры…

sg_inq /dev/sdh

…а затем установить их на вновь созданной логической единице, используя --op update:

tgtadm --op update --mode logicalunit --tid 1 --lun 8 --params vendor_id=VENDOR123,product_id=PRODUCT123,product_rev=123,scsi_sn=SERIAL123

Смотря как tgt-admin создает direct store, я вижу, что он также может задать параметры optimal_xfer_gran, optimal_xfer_len, lbppbe и la_lba на логической единице, так что вы можете рассмотреть возможность сделать то же самое.

Конфигурационные изменения, сделанные выше с помощью tgtadm, будут потеряны, когда tgtd завершит работу, поэтому эквивалентная логическая единица, определенная вами в targets.conf, все еще необходима.

.

Ответ или решение

Добавление нового диска в конфигурацию iSCSI без влияния на существующие диски и инициаторы — задача, требующая осторожного подхода. Давайте рассмотрим последовательные шаги, которые помогут решить вашу проблему.

Шаг 1: Подготовка нового диска

Вы уже добавили новый диск /dev/sdh на сервер, и он отображается утилитой lsblk. Убедитесь, что диск готов к использованию в качестве логического устройства. Проверьте, что все настройки, такие как файловая система и разметка, соответствуют вашему сценарию использования.

Шаг 2: Обновление конфигурации /etc/tgt/targets.conf

Вы уже внесли запись в файл конфигурации targets.conf, что является правильным шагом:

     direct-store /dev/sdh

Шаг 3: Обновление конфигурации без перезагрузки демона tgtd

С учетом того, что стандартные методы перезагрузки демона и административные команды не дали нужного результата, мы воспользуемся tgtadm, чтобы внести изменения в текущую конфигурацию.

  1. Добавление нового логического устройства:

    Используйте tgtadm для создания нового логического устройства без перезагрузки всего сервера:

    tgtadm --op new --mode logicalunit --tid 1 --lun 8 --backing-store /dev/sdh

    Примечание: Проверьте идентификатор tid, который соответствует вашему новому диску. Убедитесь, что lun уникален.

  2. Конфигурация параметров устройства (по желанию):

    Если необходимо, вы можете использовать sg_inq для получения данных устройства и настроить их аналогичным образом:

    sg_inq /dev/sdh

    Затем обновите параметры:

    tgtadm --op update --mode logicalunit --tid 1 --lun 8 --params vendor_id=<ваш_значение>,product_id=<ваш_значение>,product_rev=<ваш_значение>,scsi_sn=<ваш_значение>

Шаг 4: Проверка конфигурации

Убедитесь в том, что новые изменения успешно применены:

tgtadm --mode target --op show | grep /dev/

Вы должны увидеть данные для /dev/sdh.

Шаг 5: Долгосрочные изменения

Помните, что изменения, внесенные с помощью tgtadm, будут потеряны после перезапуска tgtd. Файл targets.conf необходимо сохранить с актуальной информацией для долгосрочной стабильности.

Дополнительно: Обработка таймаутов

Если возникли проблемы с тайм-аутом во время процесса, вы можете увеличить время ожидания для корректной работы демона через создание файла extend-timeout.conf:

[Service]
TimeoutStartSec=5m

Заключение

Внесение изменений через tgtadm позволяет обновить конфигурацию iSCSI без необходимости перезагрузки tgtd, минимизируя влияние на существующие соединения. Всегда проверяйте конфигурации после изменений и документируйте все модификации для будущего использования.

Эти шаги помогут вам добавить новый диск в существующую инфраструктуру iSCSI, обеспечивая бесперебойную работу других устройств и инициатив.

Оцените материал
Добавить комментарий

Капча загружается...