OS: 這標題有夠難下的…
最近在公司測試 Proxmox VE,打算區分測試區及正式區,想說旁邊有一台已經建好 ZFS 的機器,就直接拿來當叢集的儲存區,沒想到被 Proxmox VE 官方的文件 給雷到,弄了兩天才弄好,因此決定好好寫下來,免得之後又遇到相同問題。
背景故事
依照PVE 的操作介面可以看到 ZFS over iSCSI 有四個Provider,分別為:
- Comstar
- istgt
- IET
- LIO
其中,根據官方文件的範例來看,Comstar 是給 Solaris 系列的系統用的;istgt 是給 BSD 系列的系統用的;IET 則是給 Linux 系列的系統用的,至於 LIO … 官方文件根本沒提到。
由於 CentOS 8 屬於 Linux 系列的作業系統,所以理所當然地採用 IET … 才怪!Google 了一下午,大多數 CentOS 的教學都是採用一個叫 scsi-target-util
的工具,詳細可以參考鳥哥的文件,不過我試了一個下午就是各種錯誤,無論我怎麼改參數、PVE怎麼改設定都沒辦法正常的在上面建立虛擬磁碟。直到最後,我直接去翻了 PVE 的腳本,檔案位置在 /usr/share/perl5/PVE/Storage/LunCmd/LIO.pm
(同目錄下還有幾個provider的腳本,像是Comstar.pm
、Iet.pm
和Istgt.pm
),LIO.pm
的前幾行就透露出了一切:
1 |
|
從這個腳本看來 LIO 就是給 Linux 系列作業系統用的 Provider 之一,而且看來 CentOS 也是可以採用 LIO 的,因此就安裝對應工具,設定完成就好了。
好奇其他腳本的可到PVE的官方git repository看,後面就直接進操作環境及步驟。
環境
兩台主機:
- Proxmox VE 6.2 (PVE)
- CentOS 8 (ZFS)
操作
ZFS 端
- 你會需要先安裝一個程式
targetcli
。
1 |
|
- 利用
targetctl
來設定 iSCSI。
1 |
|
開啟之後便開始建立iSCSI。
1 |
|
請特別注意,在建立IQN時會顯示你的IQN和TGP編號,這兩個要記錄下來,後面PVE設定上會需要,同時建議設定ACL及防火牆,避免未授權存取。
詳細設定過程的話,請參考這篇文章,寫得非常完整。
- 檢查你的config。
1 |
|
那輸出應該會長得像:
1 |
|
- 確定沒問題之後可以開起來連線測試:
1 |
|
- 如果測試沒問題就讓他開機自動啟動:
1 |
|
PVE 端
依照剛剛的設定去PVE的Dashboard設定。
(Datacenter > Storage > Add > ZFS Over iSCSI)
其設定對應如下:
- ID: 你PVE中辨識用的名稱
- Portal: 目的機器的 IP
- Pool: ZFS Pool 名稱
- Block Size: ZFS的 Block Size
- Target: 前面建立 IQN 時系統產生的 IQN編號
- iSCSI Provider: LIO
- Target portal group: 剛剛定義的tgp編號,格式一定是 tgpX,這個在前面建立IQN時會顯示,不確定的話可以從設定檔中確認(設定檔中tgp的
"tag": 1
,那這裡就是填tgp1
)。
後話
研究過程中一度以為可以改用istgt這個provider解決一切(因為很多教學都教用scsi-target-util,這玩意兒的daemon就叫做tgtd),不過實際去翻了腳本才知道,因為每個provider都會去檢查特定的設定黨是否存在,所以這裡用istgt一樣會遇到找不到設定檔。
真心希望PVE官方趕快更新文件,不然踩雷會踩到起笑,而且網路上針對CentOS (ZFS) + PVE 的解法不多,再加上到底要用哪個provider也是眾說紛紜,感覺沒有一個答案。
是說這個玩意兒搞了我兩天,該去買杯奶茶壓壓驚了…
留言板