У меня есть система RHEL, настроенная как цель iSCSI с 2 логическими объектами, совместно используемыми через одну цель, с помощью следующей конфигурации в /etc/tgt/targets.conf (которую я построил после закомментированных примеров в /etc/tgt/targets.conf ):
<target iqn.2014-04.com.local.box:ESXi.target1>
backing-store /dev/ESXi_VG/ESXi_LUN_01 #LUN01
backing-store /dev/ESXi_VG/TEST_LUN_01 #LUN02
</target>
Они предназначены для совместного использования на паре хостов ESXi в качестве хранилища данных.
Первоначально я создал один логический том LVM 4,00 ТБ на vg ESXi_VG для хранилища данных; однако я понял, что мне понадобится второй LUN для тестирования Iops через RDM на виртуальную машину, хранящуюся в локальном хранилище на хосте ESXi. С этой целью я создал второй логический том LVM 5,00 ГБ в той же группе томов и добавил запись LUN для второго LUN в целевой конфигурации, которую я показал выше. Затем я отключил LUN 4,00 ТБ на моем хосте ESXi и перезапустил tgtd.
Я сейчас вижу некоторые странные вещи. Во-первых, вот вывод команды tgt-admin -s для отображения текущих LUN:
[root@box ~]# tgt-admin -s
Target 1: iqn.2014-04.com.local.box:ESXi.target1
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: IET 00010000
SCSI SN: beaf10
Size: 0 MB, Block size: 1
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: null
Backing store path: None
Backing store flags:
LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 5369 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: rdwr
Backing store path: /dev/ESXi_VG/TEST_LUN_01
Backing store flags:
Account information:
ACL information:
ALL
Как вы можете видеть, отображается только 1 LUN, а не 2, а отображаемый LUN - это только LUN объемом 5,00 ГБ, который я добавил позже. Если я удалю или закомментирую запись LUN, она покажет только LUN 0, контроллер, а не LUN 1.
Тем не менее, ESXi может видеть LUN 4,00 ТБ и монтировать его, форматировать и т. Д. То, что он не видит, так это раздел 5,00 ГБ, несмотря на то, что он совместно используется через ту же цель iSCSI.
В результате у меня возникла пара вопросов:
Tgt-admin показывает только LUN, которые в данный момент не подключены к инициатору? Если нет, то почему мое хранилище данных объемом 4,00 ТБ больше не отображается?
Как я могу заставить второй LUN отображаться в ESXi, чтобы я мог подключить его к виртуальной машине через RDM для тестирования iops?
Вот что я обнаружил, что проблема была. После того, как меня отозвали из этого проекта из-за корпоративного слияния, он был снова брошен мне на тарелку, и я решил начать с нуля. На этот раз я создал LUN, RH_ISCSI_LV_001, и поделился им с помощью демона iscsi. Мне удалось смонтировать и отформатировать его в vSphere.
Я снова отключил LUN и остановил tgtd для редактирования /etc/tgt/targets.conf
чтобы добавить второй тестовый LUN, который я бы использовал для тестирования производительности, сопоставив его гостю с помощью RDM. Еще раз, когда я запустил tgtd up, отображался только 1 LUN.
Я предположил, что проблема может заключаться в том, что LUN не читается tgtd после того, как VMware отформатировал его, поэтому я попытался уничтожить его с помощью lvremove. он выдал ошибку ioctl (device-mapper: remove ioctl on failed: Device or resource busy
) и не удалял.
Покопавшись, я выполнил команду lsof /dev/ESXi_VG/RH_ISCSI_LV_001
и обнаружил, что pid 2251 был процессом блокировки. быстрый ps -ef
и я узнал, что tgtd в какой-то момент не закрылся чисто, и, поскольку ничто не мешало запуску второго процесса tgtd (очевидно), он сохранил «право собственности» на LUN и, таким образом, не позволял каждому последующему процессу tgtd, который я порождал, касаться его . быстрое убийство -9 и service tgtd start
позже, и оба моих LUN были видны ESXi.