Vmware-Esxi

RHEL 6 iSCSI LUN

  • August 2, 2014

我有一個 RHEL 系統設置為 iSCSI 目標,通過 /etc/tgt/targets.conf 中的以下配置通過一個目標共享 2 個 lun(我按照 /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 主機。

我最初在 vg ESXi_VG 上為數據儲存創建了一個 4.00 TB LVM 邏輯卷;但是我意識到我需要第二個 LUN 來通過 RDM 對儲存在 ESXi 主機本地儲存上的 vm 進行 Iops 測試。為此,我在同一個卷組上創建了第二個 5.00 GB LVM 邏輯卷,並在上面顯示的目標配置中添加了第二個 LUN 的 LUN 條目。然後我在我的 ESXi 主機上解除安裝了 4.00 Tb LUN,並重新啟動了 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 只是我稍後添加的 5.00 GB LUN。如果我刪除或註釋掉 LUN 條目,它只會顯示 LUN 0,即控制器,而不是 LUN 1。

但是,ESXi 仍然可以看到 4.00 TB LUN,並且可以掛載、格式化等。它看不到的是 5.00 GB 分區,儘管它是通過同一個 iSCSI 目標共享的。

結果我有幾個問題:

  1. tgt-admin 是否只顯示目前未連接到啟動器的 LUN?如果不是,為什麼我的 4.00 TB 數據儲存不再顯示?
  2. 如何讓第二個 LUN 出現在 ESXi 上,以便我可以通過 RDM 將其掛載到 VM 以進行 iops 測試?

這就是我發現的問題所在。由於公司合併而被取消該項目後,它又被扔回了我的盤子,我決定從頭開始。這次我創建了一個 LUN,RH_ISCSI_LV_001,並通過 iscsi 守護程序共享它。我能夠在 vSphere 中掛載和格式化它。

我再次解除安裝了 LUN 並停止 tgtd 進行編輯/etc/tgt/targets.conf以添加第二個測試 LUN,我將通過將其映射到使用 RDM 的來賓來進行性能測試。當我再次啟動 tgtd up 時,只顯示了 1 個 LUN。

我假設這可能是在 VMware 格式化 LUN 後 tgtd 無法讀取 LUN 的問題,因此我嘗試使用 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 都是可見的。

引用自:https://serverfault.com/questions/591141