2026年7月27日 星期一

[專案分享] jt-pve 系列儲存外掛:NetApp、Pure、Dell EMC

 


2018 年我曾經整理過幾位開發者所撰寫的 Proxmox VE Storage Plugin,當時受限於手邊沒有對應的儲存設備,僅能作資料彙整,無法實際驗證。

這幾年陸續有機會搭配 NetApp、Pure Storage、Dell EMC 等企業級儲存陣列,並協助客戶導入,加上客戶有快照與精簡配置等實際需求,因此著手開發對應的 Proxmox VE 儲存外掛。

於是就有了這三套外掛:jt-pve-storage-netappjt-pve-storage-purestoragejt-pve-storage-dellemc,均採用 MIT 授權開源釋出。







為什麼要自己寫


我在之前的「Proxmox VE 儲存架構表」一文中整理過各種儲存架構的選擇,其中共用儲存的部分,iSCSI 與 FC SAN 搭配 LVM 是最常見的作法。

這種作法可靠、相容性好,但有個結構性的落差:Proxmox VE 看到的只是一顆很大的 LUN,然後在上面切 LVM。陣列本身的快照、複製、精簡配置這些能力,是以整顆 LUN 為單位在運作的,沒辦法對應到單一台 VM。

換句話說,企業級陣列所具備的進階功能,在這樣的架構下難以對應到 Proxmox VE 的 VM 層級,使用上受到相當程度的限制。

這三套外掛想解決的就是這件事:讓每一顆 VM 磁碟直接對應到陣列上的一個 Volume,如此一來,陣列原生的快照、Clone、壓縮、複寫等能力,就能夠精確地作用在單一台 VM 上。






三套外掛的共同設計


雖然對應的陣列品牌不同,但三套外掛的設計理念是一致的:

  • 一顆 VM 磁碟對應一個陣列 Volume
    不再是「一顆大 LUN 切 LVM」,而是直接向陣列申請獨立的 Volume,陣列端的功能因此能精確作用到單一 VM
     
  • 快照與 Linked Clone 走陣列原生機制
    快照的建立、刪除、還原都交給陣列處理,速度快且不佔用額外空間
     
  • Multipath 自動處理
    自動探索裝置並建立多路徑,不需要手動維護對應關係
     
  • 支援叢集與線上遷移
    儲存設定為叢集層級,VM 可在節點之間進行線上遷移
     
  • 同時支援 iSCSI 與 FC
    依現場環境選擇,部分產品線另支援 SAS 或 NVMe/TCP
     
  • MIT 授權
    完全開源,可自由取用與修改
     

三套外掛皆需要 Proxmox VE 9.1 以上版本。






jt-pve-storage-netapp:NetApp ONTAP


這套外掛透過 ONTAP REST API 整合 NetApp 儲存系統,支援 iSCSI 與 FC 兩種協定。

架構上採用「一顆 VM 磁碟 = 一個 LUN = 一個 FlexVol」的 1:1:1 模型,因此可以直接使用 ONTAP 的 Volume Snapshot 做快照與還原,Linked Clone 則是透過 FlexClone 技術實作,建立範本 VM 幾乎是瞬間完成,而且不佔額外空間。

環境需求


  • ONTAP 9.8 以上,並啟用 REST API
  • 已完成 iSCSI 授權與 SVM(Storage Virtual Machine)iSCSI 服務設定
  • 節點需安裝 open-iscsimultipath-toolssg3-utilspsmisc 與相關 Perl 函式庫

加入儲存


pvesm add netappontap netapp1 \
    --ontap-portal 192.168.1.100 \
    --ontap-svm svm0 \
    --ontap-aggregate aggr1 \
    --ontap-username pveadmin \
    --ontap-password 'YourPassword' \
    --content images,rootdir

另外還有幾個常用選項:ontap-protocol 可切換 iscsi 或 fc、ontap-thin 控制精簡配置、ontap-igroup-mode 可選擇 per-node 或 shared 的存取控制模式。

驗證狀況方面,iSCSI 協定已完成客戶端的實際上線運作驗證;FC 協定雖已實作完成,但尚未完整驗證,若需採用 FC 請務必先於測試環境確認。






jt-pve-storage-purestorage:Pure Storage FlashArray


這套是三者之中功能最完整的一套,需搭配 Purity//FA 2.26 以上版本。iSCSI 協定已完成實際上線運作,並在客戶的 Lab 環境完成實測驗證。

它同樣採用直接配置 Volume 的方式,每顆 VM 磁碟就是 FlashArray 上的一個獨立 Volume,中間不再經過 LUN 的間接層。

主要功能


  • 線上擴容
    不需要關機或重啟 VM 即可擴充磁碟容量
     
  • 原生快照與 Linked Clone
    建立、刪除、還原皆透過 Pure 原生快照機制完成
     
  • 記憶體快照與設定備份
    建立快照時會一併將 VM 設定檔備份至 Pure Storage
     
  • ActiveCluster Pod 支援
    可搭配同步複寫架構,並透過 Pod 做容量隔離
     
  • 自動主機註冊
    FC 環境下可自動偵測 WWN 並完成註冊
     

加入儲存


驗證方式可使用 API Token,或是傳統的帳號密碼:

pvesm add purestorage pure1 \
    --pure-portal 192.168.1.100 \
    --pure-api-token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --pure-protocol iscsi \
    --content images,rootdir

需要留意的是,Full Clone 因為 Proxmox VE 架構上的設計,仍然是走資料複製而非陣列端的原生 Clone,這點與 Linked Clone 不同。

本套外掛的測試環境由 Pure Storage 與邁達特(MetaAge)協助提供,在此致謝。






jt-pve-storage-dellemc:Dell EMC


Dell EMC 的產品線較廣,因此這套外掛採用「共用主機端邏輯、各產品線獨立外掛」的架構,目前涵蓋三個系列:

  • PowerStore
    透過 iSCSI 或 FC 搭配 dm-multipath,需要 PowerStore OS 3.0 以上,主要開發目標為 4.x
     
  • PowerVault ME4 / ME5
    支援 iSCSI、FC 與 SAS 三種連接方式
     
  • PowerFlex
    支援 NVMe/TCP 或 SDC 兩種模式
     

PowerMax 已列入規劃,PowerScale 與 Unity 目前則沒有排入。

加入儲存


以 PowerStore 為例:

pvesm add dellpowerstore ps1 \
    --dell-portal 192.168.1.50 \
    --dell-username pveadmin \
    --dell-password 'YourPassword' \
    --dell-protocol iscsi \
    --content images,rootdir \
    --shared 1

PowerVault 與 PowerFlex 則各自有對應的儲存類型與參數,例如 PowerVault 需指定 pvault-pool、PowerFlex 需指定 pflex-storage-pool,詳細請參考專案說明文件。

重要提醒


這套外掛目前版本為 0.7.42~beta1,程式碼雖然已經完成,但尚未在實體 Dell EMC 設備上實際執行驗證過

因此請勿將它安裝在正式環境的叢集上,也請勿指向存有重要資料的陣列。潛在風險包括資料遺失、儲存服務中斷、節點卡死,甚至波及同一台主機上其他不相關的儲存。

目前正在洽詢 Partner 提供設備借測,待完成實機驗證後會再更新專案狀態。若具備 Dell EMC 對應設備並願意協助驗證,也歡迎至專案回報測試結果。






安裝與使用注意事項


所有節點都要安裝


Proxmox VE 的儲存設定是叢集層級的,因此叢集中的每一個節點都必須安裝外掛,否則 VM 遷移到未安裝的節點時會無法啟動。

安裝時建議使用 apt install ./檔名.deb 而非 dpkg -i,前者會自動處理相依套件:

apt update
apt install ./jt-pve-storage-purestorage_1.1.22-1_all.deb

# 升級外掛後,請在所有節點執行
systemctl restart pvestatd


必須從命令列加入儲存


Proxmox VE 的 Web 管理介面,儲存類型下拉選單只會列出內建的類型,自訂外掛不會出現在裡面。

因此加入儲存時必須使用 pvesm add 指令,加入完成之後,Web 介面就能正常顯示與操作了。


Multipath 設定務必注意


這是我認為最需要提醒的一點。如果 multipath 設定中含有 no_path_retry queue,當 LUN 被刪除時,整個 Proxmox VE 節點有可能直接卡死。

建議改為明確的重試次數,例如 no_path_retry 30 搭配 fast_io_fail_tmo 5

另外請特別注意,請勿使用 multipath -F(大寫 F),這個指令會清除主機上所有未使用的 multipath 對應,可能波及其他不相關的儲存。

修改 multipath 設定之後,請使用 systemctl restart multipathd 重新啟動服務,而不是 reload。






結論


這三套外掛的共同目標,是讓企業級儲存陣列的原生功能能夠精確作用到單一 VM 磁碟,補足 iSCSI 或 FC SAN 搭配 LVM 架構在這方面的限制。

三者的成熟度並不相同。NetApp 與 Pure Storage 的 iSCSI 協定皆已完成客戶端實際上線運作驗證,其中 Pure Storage 另在客戶 Lab 環境完成實測;兩者的 FC 協定則尚待完整驗證。Dell EMC 則正待 Partner 提供設備借測,尚未完成實機驗證。導入前請務必依各專案說明文件評估,並先於測試環境完成確認。

三套外掛皆以 MIT 授權釋出,歡迎取用、修改與回饋問題。若具備對應設備並願意協助驗證,相關回報對專案的完善會有實質幫助。



參考資料