VMware 提供高效能外掛程式 (HPP),以提升 ESXi 主機上儲存裝置的效能。

HPP 會取代用於高速裝置 (例如 NVMe) 的 NMP。HPP 是宣告 NVMe-oF 目標的預設外掛程式。ESXi 支援沒有端對端 NVMeSCSI 到 NVMe 的模擬。HPP 僅支援主動/主動和隱含 ALUA 目標。

從 vSphere 7.0 Update 2 開始,HPP 將成為本機 NVMe 和 SCSI 裝置的預設外掛程式,但您可以將它取代為 NMP。

HPP 支援 vSphere 7.0 Update 2 及更新版本
儲存裝置 本機 NVMe 和 SCSI

共用 NVMe-oF (僅限主動/主動和隱含 ALUA 目標)

多重路徑
第二層外掛程式
SCSI-3 持續性保留區
採用軟體模擬的 4Kn 裝置

路徑選取配置

若要支援多重路徑,HPP 會在選取 I/O 要求的實體路徑時使用路徑選取配置 (PSS)。

您可以使用 vSphere Clientesxcli 命令來變更預設的路徑選取機制。

如需在 vSphere Client 中設定路徑機制的相關資訊,請參閱變更路徑選取原則。若要使用 esxcli 命令進行設定,請參閱 ESXi esxcli HPP 命令

ESXi 支援下列路徑選取機制。

固定
使用此配置時,會將指定的慣用路徑用於 I/O 要求。如果未指派慣用路徑,該主機會選取在開機時探索到的第一個工作路徑。如果慣用路徑無法使用,主機將選取替代的可用路徑。當該路徑可再次使用時,主機會回到先前定義的慣用路徑。

FIXED 設定為路徑選取機制時,請選取慣用路徑。

LB-RR (負載平衡 - 循環配置資源)
這是由 HPP 宣告的裝置的預設配置。在目前路徑上傳輸指定數量的位元組或 I/O 後,該配置會使用循環配置資源演算法來選取路徑。
若要設定 LB-RR 路徑選取機制,請指定下列內容:
  • IOPS 指出路徑上的 I/O 計數,該計數要用作準則以切換裝置的路徑。
  • Bytes 指出路徑上的位元組計數,該計數要用作準則以切換裝置的路徑。
LB-IOPS (負載平衡 - IOPs)
在目前路徑上傳輸指定數量的 I/O 後 (預設值為 1000),系統會選取具有最少未完成 I/O 數量的最佳路徑。

設定此機制時,請指定 IOPS 參數,以指出路徑上的 I/O 計數,該計數要用作準則以切換裝置的路徑。

LB-BYTES (負載平衡 - 位元組)
在目前路徑上傳輸指定數量的位元組後 (預設值為 10 MB),系統會選取具有最少未完成位元組數量的最佳路徑。

若要設定此機制,請使用位元組參數,以指出路徑上的位元組計數,以作為切換裝置路徑的準則。

負載平衡 - 延遲 (LB-Latency)
若要改善負載平衡結果,該機制會考慮下列路徑特性以動態選取最佳路徑:
  • 延遲評估時間參數指出必須評估路徑延遲的時間間隔 (以毫秒為單位)。
  • 每個路徑的取樣 I/O 參數可控制每個路徑上必須發出多少個樣本 I/O,才能計算路徑的延遲。

HPP 最佳做法

若要透過高速儲存裝置實現最快輸送量,請遵循以下建議。

  • 使用支援 HPP 的 vSphere 版本。
  • 針對本機 NVMe 和 SCSI 裝置以及 NVMe-oF 裝置使用 HPP。
  • 如果您使用 NVMe over Fibre Channel,請遵循光纖通道儲存區的一般建議。請參閱將 ESXi 與光纖通道 SAN 搭配使用
  • 如果您使用 NVMe-oF,請勿混用傳輸類型來存取相同的命名空間。
  • 使用 NVMe-oF 命名空間時,請確保向主機呈現作用中路徑。在探索到作用中路徑之前,無法登錄命名空間。
  • 設定虛擬機器時,可以使用 VMware Paravirtual 控制器或新增 NVMe 控制器。這兩種類型各有優缺點。若要瞭解哪種方式最適合您的環境,請參閱vSphere 虛擬機器管理說明文件中的 SCSI、SATA 和 NVMe 存放控制器條件、限制和相容性
  • 設定延遲敏感臨界值。
  • 如果單一虛擬機器承擔大量共用裝置的 I/O 工作負載,請考慮將 I/O 分散在多個虛擬磁碟之間。將磁碟連結到虛擬機器中的單獨虛擬控制器。

    否則,由於負責在特定虛擬儲存區控制器上處理 I/O 之 CPU 核心飽和,I/O 輸送量可能會受到限制。

如需有關僅支援 NGUID 識別碼格式的 NVMe 裝置的裝置識別碼資訊,請參閱具有 NGUID 裝置識別碼的 NVMe 裝置

啟用高效能外掛程式和路徑選取配置

高效能外掛程式 (HPP) 是預設外掛程式,可宣告本機 NVMe 和 SCSI 裝置以及 NVMe-oF 目標。如有必要,您可以將其取代為 NMP。在 vSphere 7.0 Update 1 版及更早版本中,NMP 將保持為本機 NVMe 和 SCSI 裝置的預設外掛程式,但您可以將它取代為 HPP。

使用 esxcli storage core claimrule add 命令,在 ESXi 主機上啟用 HPP 或 NMP。

若要執行 esxcli storage core claimrule add,您可以使用 ESXi Shell 或 vSphere CLI。如需詳細資訊,請參閱ESXCLI 入門ESXCLI 參考

本主題中的範例示範了如何啟用 HPP 及設定路徑選取配置 (PSS)。
備註: 在透過 PXE 開機的 ESXi 主機上不支援啟用 HPP。

必要條件

設定 VMware NVMe 儲存區環境。如需詳細資訊,請參閱 關於 VMware NVMe 儲存區

程序

  1. 透過執行 esxcli storage core claimrule add 命令建立 HPP 宣告規則。
    使用以下其中一種方式增加宣告規則。
    方法 說明
    根據 NVMe 控制器型號 esxcli storage core claimrule add –-type vendor --nvme-controller-model

    例如,esxcli storage core claimrule add --rule 429 --type vendor --nvme-controller-model "ABCD*" --plugin HPP

    根據 PCI 廠商識別碼和子廠商識別碼 esxcli storage core claimrule add –-type vendor –-pci-vendor-id –-pci-sub-vendor-id

    例如,esxcli storage core claimrule add --rule 429 --type vendor --pci-vendor-id 8086 --pci-sub-vendor-id 8086 --plugin HPP

  2. 設定 PSS。
    使用下列其中一種方法。
    方法 說明
    根據裝置識別碼設定 PSS esxcli storage hpp device set

    例如,esxcli storage hpp device set --device=device --pss=FIXED --path=preferred path

    根據廠商/型號設定 PSS 使用 --config-string 選項搭配 esxcli storage core claimrule add 命令。

    例如,esxcli storage core claimrule add -r 914 -t vendor -V vendor -M model -P HPP --config-string "pss=LB-Latency,latency-eval-time=40000"

  3. 將主機重新開機以使變更生效。

設定延遲敏感臨界值

將 HPP 用於儲存裝置時,請設定該裝置的延遲敏感臨界值,以便 I/O 可避免 I/O 排程器。

依預設,ESXi會透過 I/O 排程器傳遞每個 I/O。不過,使用排程器可能會建立內部佇列,這對於高速儲存裝置來說無效。

您可以設定延遲敏感臨界值,並啟用可協助 I/O 略過排程器的直接提交機制。透過啟用此機制,I/O 會直接從 PSA 通過 HPP 傳遞至裝置驅動程式。

為了使直接提交正常運作,觀察的平均 I/O 延遲必須低於您指定的延遲臨界值。如果 I/O 延遲超過延遲臨界值,系統會停止直接提交,並暫時還原為使用 I/O 排程器。如果平均 I/O 延遲再次低於延遲臨界值,會恢復直接提交。

您可以為 HPP 宣告的裝置系列設定延遲臨界值。使用廠商和型號配對、控制器型號,或 PCIe 廠商識別碼與子廠商識別碼配對來設定延遲臨界值。

程序

  1. 透過執行下列命令來設定裝置的延遲敏感臨界值:
    esxcli storage core device latencythreshold set -t value in milliseconds

    使用下列其中一個選項。

    選項 範例
    廠商/型號 針對具有指定廠商和型號的所有裝置,設定延遲敏感臨界值參數:esxcli storage core device latencythreshold set -v 'vendor1' -m 'model1' -t 10
    NVMe 控制器型號 針對具有指定控制器型號的所有 NVMe 裝置,設定延遲敏感臨界值:esxcli storage core device latencythreshold set -c 'controller_model1' -t 10
    PCIe 廠商/子廠商識別碼 針對具有 0x8086 為 PCIe 廠商識別碼和 0x8086 為 PCIe 子廠商識別碼的裝置,設定延遲敏感臨界值。esxcli storage core device latencythreshold set -p '8086' -s '8086' -t 10
  2. 確認已設定延遲臨界值:
    esxcli storage core device latencythreshold list
    Device                Latency Sensitive Threshold
    --------------------  ---------------------------
    naa.55cd2e404c1728aa               0 milliseconds
    naa.500056b34036cdfd               0 milliseconds
    naa.55cd2e404c172bd6              50 milliseconds
    
  3. 監控延遲敏感臨界值的狀態。檢查 VMkernel 記錄中的下列項目:
    • Latency Sensitive Gatekeeper turned on for device device. Threshold of XX msec is larger than max completion time of YYY msec
    • Latency Sensitive Gatekeeper turned off for device device. Threshold of XX msec is exceeded by command completed in YYY msec

ESXi esxcli HPP 命令

您可以使用 ESXi Shell 或 vSphere CLI 命令來設定和監控高效能外掛程式。

請分別參閱 ESXCLI 入門ESXCLI 參考,以瞭解相關簡介以及 esxcli 命令使用的詳細資料。

命令 說明 選項
esxcli storage hpp path list 列出目前由高效能外掛程式宣告的路徑。 -d|--device=device 顯示特定裝置的資訊。

-p|--path=path 限制特定路徑的輸出。

esxcli storage hpp device list 列出目前受高效能外掛程式控制的裝置。 -d|--device=device 顯示特定裝置。
esxcli storage hpp device set 對 HPP 裝置進行設定。 -B|--bytes=long 路徑上的最大位元組數,在此之後便切換路徑。

--cfg-file 使用新設定更新組態檔和執行階段。如果裝置由另一個 PSS 宣告,請在套用至執行階段組態時忽略任何錯誤。

-d|--device=device 賴以運作的 HPP 裝置。使用裝置報告的任何 UID。必要。

-I|--iops=long 路徑上的最大 IOPS,在此之後便切換路徑。

-T|--latency-eval-time=long 控制必須評估路徑延遲的時間間隔 (以毫秒為單位)。

-L|--mark-device-local=bool 設定 HPP,以決定是否將裝置視為本機。

-M|--mark-device-ssd=bool 指定 HPP 是否將裝置視為 SSD。

-p|--path=str 要設定為裝置慣用路徑的路徑。

-P|--pss=pss_name 要指派給裝置的路徑選取配置。如果未指定值,則系統會選取預設值。如需路徑選取配置的說明,請參閱 VMware 高效能外掛程式和路徑選取配置。選項包括:
  • FIXED

    使用 -p|--path=str 子選項來設定慣用路徑。

  • LB-Bytes

    使用 -B|--bytes=long 子選項來指定輸入。

  • LB-IOPs

    使用 -I|--iops=long 子選項來指定輸入。

  • LB-Latency

    子選項包括:

    -T|--latency-eval-time=long

    -S|--sampling-ios-per-path=long

  • LB-RR Default

    子選項包括:

    -B|--bytes=long

    -I|--iops=long

-S|--sampling-ios-per-path=long 控制每個路徑上必須發出多少範例 I/O,才能計算路徑的延遲。

-U|--use-ano=bool 將選項設定為 true,以包含作用中路徑集 (用於在此裝置上發出 I/O) 中的非最佳化路徑。否則,請將選項設定為 false

esxcli storage hpp device usermarkedssd list 列出使用者標記或取消標記為 SSD 的裝置。 -d|--device=device 限制特定裝置的輸出。