2018 年我曾經整理過幾位開發者所撰寫的 Proxmox VE Storage Plugin,當時受限於手邊沒有對應的儲存設備,僅能作資料彙整,無法實際驗證。
這幾年陸續有機會搭配 NetApp、Pure Storage、Dell EMC 等企業級儲存陣列,並協助客戶導入,加上客戶有快照與精簡配置等實際需求,因此著手開發對應的 Proxmox VE 儲存外掛。
於是就有了這三套外掛:jt-pve-storage-netapp、jt-pve-storage-purestorage、jt-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-iscsi、multipath-tools、sg3-utils、psmisc 與相關 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 授權釋出,歡迎取用、修改與回饋問題。若具備對應設備並願意協助驗證,相關回報對專案的完善會有實質幫助。
參考資料
- jt-pve-storage-netapp:NetApp ONTAP Storage Plugin for Proxmox VE
https://github.com/jasoncheng7115/jt-pve-storage-netapp
- jt-pve-storage-purestorage:Pure Storage FlashArray Plugin for Proxmox VE
https://github.com/jasoncheng7115/jt-pve-storage-purestorage
- jt-pve-storage-dellemc:Dell EMC Storage Plugin for Proxmox VE
https://github.com/jasoncheng7115/jt-pve-storage-dellemc
- [技術文章] Proxmox VE 儲存架構表
https://blog.jason.tools/2024/09/proxmox-ve-storage-choice.html
- [資訊分享] Proxmox VE Storage Plugin
https://blog.jason.tools/2018/05/proxmox-ve-plugin.html
- Storage - Proxmox VE Wiki
https://pve.proxmox.com/wiki/Storage
- ISCSI Multipath - Proxmox VE Wiki
https://pve.proxmox.com/wiki/ISCSI_Multipath
