Vmware-Esx

從 ESXi 4 上的 VM 分配和移除多個 LUN

  • January 23, 2010

我們目前有一個測試環境,我們在連接 SAN 的儲存陣列上創建數百個 LUN,將它們導出到一個或多個(物理)伺服器,對 LUN 上包含的數據執行測試,然後銷毀它們並重複。

我們想使用虛擬機作為伺服器,但是在手動為每個單獨的虛擬機分配數百個 LUN 時遇到了問題(與以前的物理伺服器一樣,我們可以設置分區來執行此操作並重新掃描 HBA) .

關於如何處理這種情況的任何建議?一種解決方案可能是 VM 直接路徑 IO(但我們目前沒有所需的硬體),或者設置一個腳本來自動重新掃描 ESX 級別的新 LUN,然後自動將 LUN 分配給特定的虛擬機(我認為可以通過 API 完成?)。

我不明白為什麼您不能使用任何標準 ESX\ESXi 設置來執行此操作。

您應該能夠使用原始設備映射來做到這一點。假設 SAN 端的分區和 LUN 呈現過程保持不變,您可以使用 vmkfstools 告訴 ESX 在主機級別重新掃描和檢測新 LUN。一旦找到,您就可以創建 VMDK 並將它們添加到 VM 或將整個卷顯示為原始設備映射 (RDM)。

使用 ESX,您可以在服務控制台命令行上編寫腳本,但對於 ESXi,您需要使用 PowerCLI (Powershell) 或 Perl CLI 工具。vSphere 管理設備是一個 Linux 設備,如果您想採用該方法,它會預先打包所有工具。可以在此處找到所有三種 CLI 方法的文件。

您要做的事情的大致輪廓是:

1. 重新掃描主機上的新 LUN。

vicfg-rescan [vmhbaX]   

您可能只想掃描提供 LUN 的相關 HBA,以便將 vmhbaX 替換為連接到 SAN 的相關 HBA 名稱。

2. 創建一個映射到新 LUN 的 RDM 存根

vmkfstools –a lsilogic -r /vmfs/devices/disks/vmhba1:0:0:0 /vmfs/volumes/storage1/testluns/testrdmlun.vmdk

您需要確定 LUN 的 LUN 引用,並將 vmdk 設置為在您的環境中有意義的位置和名稱。這有幾個語法變體,我沒有在 ESXi 4 上使用它,但這種格式過去在 3.5 上對我來說很好用。有兩種 RDM 模式,如果您需要更多 SCSI 功能,那麼裸設備映射直通模式可能更適合您,在這種情況下,將 -r 替換為 -x。

3. 將新磁碟呈現給您的虛擬機。

以這種方式準備好磁碟後,有幾種方法可以將它們呈現給 VM 中的作業系統。您可以編輯 VM 配置並為此設備添加一個條目,或者您可以在 VM 中已配置此特定目標 vmdk,並且您可以在 VM 關閉時執行上述發現步驟。如果您想要一個更動態的機制,那麼執行您想做的事情的最佳方法是使用VMware Disk Mount 實用程序- 這允許您從來賓作業系統中直接掛載 RDM(或任何其他 VMDK),而不必搞砸使用虛擬機配置。

如果您將遠端 CLI 用於重新掃描和 vmkfstools 部分,您可能必須將目標主機和身份驗證憑據指定為命令的一部分。

相同的方法可用於標準 VMDK 文件,但您需要先將 LUN 格式化為 VMFS,然後在其上創建合適的 VMDK。據我從您的描述中可以看出,這樣做對您沒有任何好處。

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