跳至主要内容

Longhorn V2 資料引擎

Longhorn V2 資料引擎利用 Storage Performance Development Kit (SPDK) 的強大功能,顯著降低 I/O 延遲,同時大幅提升 IOPS 和吞吐量。其結果是一個能夠滿足多樣化工作負載需求的高效能儲存解決方案。

警告

Longhorn V2 資料引擎是一項 實驗性 (Experimental) 功能,不應在生產環境中使用。

先決條件​

每個啟用 Longhorn V2 資料引擎的節點都需要以下專用資源:

  • 1 個 CPU 核心供 Longhorn instance-manager pod 使用
  • 2 GiB RAM(配置為 1024 個 2 MiB huge pages)
  • 至少一個用於資料儲存的本機 NVMe 磁碟

限制​

備註

Longhorn V2 資料引擎目前不支援以下操作:

  • Backing Image 的建立與使用
  • 卷冊複製 (Volume cloning)
  • 卷冊加密 (Volume encryption)
  • 卷冊擴充 (Volume expansion)
  • 無法建立 V2 卷冊的快照,因為 Harvester 中的快照和還原功能依賴於卷冊複製。

  • SSD 和其他非 NVMe 磁碟是使用 SPDK AIO bdev 驅動程式管理的,該驅動程式不支援 unmap 操作。如果您使用的是非 NVMe 磁碟,請避免對檔案系統執行 trim(修剪)操作,因為這會導致 I/O 錯誤並使虛擬機器暫停。例如,在 Linux 虛擬機器上建立 ext4 檔案系統時,請使用 mkfs.ext4 -E nodiscard /dev/vdb(假設 /dev/vdb 是您的裝置路徑)。在 Windows 虛擬機器上,您可以執行指令 fsutil behavior set disabledeletenotify NTFS 1 來停用 NTFS 的 trim 功能。

使用 Longhorn V2 資料引擎​

Longhorn V2 資料引擎僅適用於新建立的卷冊和映像檔。現有的卷冊、虛擬機器映像檔和虛擬機器根卷冊將繼續使用 V1 資料引擎。

  1. 在 Harvester UI 上,前往 Advanced > Settings。

  2. 將 longhorn-v2-data-engine-enabled 設定為 true。

    Harvester 會自動載入 Longhorn V2 資料引擎所需的 kernel 模組,並嘗試在所有節點上配置 1024 個 2 MiB 大小的 huge pages(即 2 GiB 的 RAM)。

    變更此設定會自動重新啟動所有節點上的 RKE2,但不會影響執行中的虛擬機器工作負載。

    提示

    如果您遇到包含 "not enough hugepages-2Mi capacity"(hugepages-2Mi 容量不足)詞句的錯誤訊息,請稍待一段時間讓錯誤解決。如果錯誤持續存在,請重新啟動受影響的節點。

    若要在特定節點(例如處理能力和記憶體資源較少的節點)上停用 Longhorn V2 資料引擎,請前往 Hosts 畫面,並為目標節點新增以下標籤:

    • 標籤 (Label): node.longhorn.io/disable-v2-data-engine
    • 值 (Value): true
  3. 前往 Hosts 畫面,然後按照 多磁碟管理 (Multi-disk Management) 中的說明為每個節點新增額外磁碟。

    將每個額外磁碟的 Provisioner 設定為 Longhorn V2 (CSI)。

    important

    Harvester 將 Longhorn 磁碟驅動程式 設定為 auto,以便 NVMe 磁碟使用 SPDK NVMe bdev 驅動程式,這能提供最佳效能並支援進階操作,如 trim(也稱為 discard)。

    SSD 和其他非 NVMe 磁碟是使用 SPDK AIO bdev 驅動程式管理的,該驅動程式要求磁碟大小必須是 4096 bytes 的偶數倍。不符合此大小要求的非 NVMe 磁碟將無法新增。此外,SPDK AIO bdev 驅動程式不支援 unmap 操作。如果您使用的是非 NVMe 磁碟,請避免對檔案系統執行 trim 操作,因為這會導致 I/O 錯誤並使虛擬機器暫停。

  4. 前往 Advanced > Storage Classes,然後按照 建立 StorageClass 中的說明新增一個新的 StorageClass。

    將 Provisioner 設定為 Longhorn V2 (CSI)。

  5. 使用新的 StorageClass:

    • 建立新卷冊時(在 Volumes 畫面上或在建立虛擬機器期間)
    • 在 Images 畫面上建立映像檔時

    使用新 StorageClass 建立的卷冊和映像檔將由 Longhorn V2 資料引擎支援。

從 Harvester v1.4.x 升級​

在 Harvester v1.4(使用 Longhorn v1.7)中,V2 卷冊不支援線上移轉 (live migration),V2 資料引擎也無法用於虛擬機器映像檔,這意味著 VM 開機卷冊無法使用 V2 資料引擎。

從 Harvester v1.5.0 和 Longhorn v1.8.1 開始,這些限制已被移除,但僅適用於系統升級 後 建立的卷冊和映像檔。任何在 Harvester v1.4.0 建立的 V2 StorageClass,其 migratable(可移轉)選項都將被設定為 "false",且如同其他 StorageClass 屬性,一旦設定後即無法變更。同樣地,任何現有的 V2 卷冊在升級後仍將保持不可移轉。如果您在 Harvester v1.4 上使用了 V2 資料引擎,並隨後升級到 Harvester v1.5,您將需要建立一個新的 V2 StorageClass,其預設的 migratable 選項將設定為 "true"。使用 此 StorageClass 建立的卷冊和映像檔 將可 進行線上移轉。

important
  • 如果您使用的是 SPDK AIO bdev 驅動程式(即您的磁碟是使用 /dev/sd* 裝置路徑新增的),在升級前建立的 V2 卷冊在升級後將無法使用,且無法復原。如需更多詳細資訊,請參閱 https://github.com/longhorn/longhorn/issues/10461。

  • 如果您使用的是 SPDK NVMe bdev 驅動程式(即您的磁碟是使用 /dev/nvme* 裝置路徑新增的),在升級前建立的 V2 卷冊在升級後仍可運作,但將繼續使用 Longhorn v1.7.x 引擎。如上所述,這些卷冊將保持不可移轉,但可以匯出資料並建立新的可移轉卷冊(詳情請見下文)。

  • 在升級至 Harvester v1.5.0 之前,所有掛載 V2 卷冊的虛擬機器都需要停止。如果在升級過程中有任何 V2 卷冊處於活動狀態,升級程序將在 "upgrading system services"(升級系統服務)階段停滯。apply-manifests pod 的日誌將顯示類似以下的重複訊息:

    instance-manager (aio)(v2) (image=longhornio/longhorn-instance-manager:v1.8.1) state is not running on node harvester-node-0, will retry...

    停止所有使用 V2 卷冊的虛擬機器將使升級得以繼續進行。

如果您現有的虛擬機器掛載了 V2 不可移轉卷冊,且您使用的是 SPDK NVMe bdev 驅動程式(即您的磁碟是使用 /dev/nvme* 裝置路徑新增的),則可以按照以下步驟轉換為可線上移轉的卷冊:

  1. 停止虛擬機器。
  2. 對於掛載在虛擬機器上的每個 V2 卷冊,使用 Export Image(匯出映像檔)選項將該卷冊匯出為使用新 V2 StorageClass(migratable 設定為 "true")的映像檔。這可能需要一段時間,具體取決於需要複製的資料量。
  3. 完成後,編輯虛擬機器並在 Volumes(卷冊)頁籤上:
    • 移除現有的 V2 卷冊。
    • 使用 "Add VM Image"(新增 VM 映像檔)按鈕新增在上一步驟中匯出的映像檔。
  4. 啟動 VM。這同樣可能需要一段時間,具體取決於需要複製的資料量。
  5. 刪除原始卷冊和匯出的映像檔,因為這些應該不再需要保留。