Вопрос или проблема
Я добавил новый диск на сервер:
[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
, чтобы внести изменения в текущую конфигурацию.
-
Добавление нового логического устройства:
Используйте
tgtadm
для создания нового логического устройства без перезагрузки всего сервера:tgtadm --op new --mode logicalunit --tid 1 --lun 8 --backing-store /dev/sdh
Примечание: Проверьте идентификатор
tid
, который соответствует вашему новому диску. Убедитесь, чтоlun
уникален. -
Конфигурация параметров устройства (по желанию):
Если необходимо, вы можете использовать
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, обеспечивая бесперебойную работу других устройств и инициатив.