Proxmox VE 與 FreeNAS 使用 ZFS over iSCSI 連接

BUBU 因現在公司的 PVE 主機有叢集經常會把 Guest OS 移到其他設備上繼續運行,之前是都用 NAS 裡內建的 iSCSI使用發現到效能沒有說很好也很差,因此開始找尋其他的方案來使用,這次就用 ZFS over iSCSI 這個版本從 PVE 3 版起就有功能了,只是一直不知道怎麼去使用,所以找尋很久,在 PVE 官方論壇裡找尋到有人提出來的方式,這是國外人事寫出來的外掛方式,但由於在測試時發現到這個用 FreeNAS API 方式來連結,在建立 VM 時請各位網友面要注意一件事情那就是在硬碟選項裡面 匯流排/設備  要設定成  VirtIO Block  這個選項才能運行,不然當您安裝完系統後會發現到無法正常進入系統,這個外掛不支援  VirtIO SCSI  這個介面,去查詢是說好像是  FreeNAS  好像不支援這個介面。以下是設定方式及安裝使用。

備註:    BUBU 發現到當pve有做更新升級的時候,該套件會異常無法正常運行,所以每當更新完之後建議最好先跑一次,第一步的動作就可以正常運行了

109.03.03 FreeNAS 外掛套件已有釋出跟著更新一起更新該套件,此篇內容重新修正目前手冊說明

FreeNAS 外掛安裝流程


  1. 先安裝 perl REST Clientgit 這兩個必要套件
apt-get install librest-client-perl git
  1. 用 git 方式從 GitHub 下載
git clone https://github.com/TheGrandWazoo/freenas-proxmox.git
  1. 以下命令修補FreeNAS接口所需的文件
patch -b /usr/share/pve-manager/js/pvemanagerlib.js < pve-manager/js/pvemanagerlib.js.patch
patch -b /usr/share/perl5/PVE/Storage/ZFSPlugin.pm < perl5/PVE/Storage/ZFSPlugin.pm.patch
patch -b /usr/share/pve-docs/api-viewer/apidoc.js < pve-docs/api-viewer/apidoc.js.patch
  1. 使用以下命令複製FreeNAS連接器所需的文件
cp perl5/PVE/Storage/LunCmd/FreeNAS.pm /usr/share/perl5/PVE/Storage/LunCmd/FreeNAS.pm
  1. 用指令重啟 pve 上的服務
systemctl restart pvedaemon
systemctl restart pveproxy
systemctl restart pvestatd
  1. 在瀏覽器中重新整理Proxmox GUI以加載新的Javascript代碼,從儲存裡面新增 ZFS over iSCSI 提供者裡面就會看到 FreeNAS-API 選項

freenas-pve-01.png

  • 第二步:然後在用 SSH 方式連線到 FreeNAS 裡面產生新的 SSH KEY 要讓 PVE 與 FreeNAS 兩個能免密碼互相連線。
首先在client端製作公鑰和私鑰

$ ssh-keygen -t rsa
這中間會問你鑰匙要放在哪個目錄,還有passphrase,按三次Enter採用預設值

Generating public/private rsa key pair.
Enter file in which to save the key (/home/davidpai/.ssh/id_rsa):
Created directory ‘/home/davidpai/.ssh’.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/davidpai/.ssh/id_rsa.
Your public key has been saved in /home/davidpai/.ssh/id_rsa.pub.
  • 產生完檔案後會放在 root 裡的 .SSH 目錄下,將 .SSH 下所產生的檔案其中一個是要傳送到 PVE 裡面去使用 檔案是 id_ras.pub 利用 SCP 方式傳送過去到 PVE 主機裡面
先將 id_rsa.pub 檔案先修改檔名

cp id_ras.pub id_ras.pub.XXX

scp /root/.ssh/id_rsa.pub.xxx [email protected]:/root/.ssh/
  • 傳過去之前會出現一行文字,只要輸入 yes 之後再可進入該 PVE 的密碼就可以了,然後再進 PVE 主機將剛剛收到的鑰匙加入 authorized_keys 這個檔案裡就可以了
cat id_rsa.pub.xx >> authorized_keys 
 
產生完檔案記得還要將這個檔案回傳到 FreeNAS 上面
 
scp /root/.ssh/authorized_keys [email protected]:/root/.ssh/authorized_keys
  • 再回到 PVE 主機進到 /etc/pve/priv 該目錄下產生一個目錄
mkdir zfs
  • 產生完之後再到 FreeNAS 主機上兩個鑰匙傳到 PVE 剛剛建的資料夾裡面
scp /root/.ssh/id_rsa [email protected]:/root/.ssh/192.168.xxx.xxx_id_rsa 傳過去將檔案修改成要連線的設備 IP
 
scp /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/192.168.xxx.xxx_id_rsa.pub 傳過去將檔案修改成要連線的設備 IP

PVE 設定儲存設備流程


  • 進入 PVE 主機新增加儲存設備
  1. 新增 ZFS over iSCSI

image-1540962323055.png

  1. iSCSI 提供者選擇 FreeNAS-API

image-1540962261677.png

  1. 開始輸入資料

id:給該連線設備一個名稱
門戶:所連線設備 IP 位子
資源池:是指在 FreeNAS 上所建的磁碟名稱

FreeNAS-磁碟名稱.png

目標: FreeNAS 的 iSCSI 的名稱

FreeNAS-iSCSI名稱.png

精簡配置:打勾
API use SSL:不勾
API IPv4 Host:輸入FressNAS 的 IP
API Username:輸入登入FreeNAS帳號
API Pswwword:輸入FressNAS密碼
Confirm Password:再次確認輸入 FreeNAS 密碼

image-1540962288578.png

  • 這樣子就可以新增並且在存儲碟裡面看到您剛剛新增的設備

pve-硬碟設備.png

補充說明自動安裝及更新


開發者有建立一個 debian 來源庫,已有打包一些套件及開發者的本身安裝的腳本,那經我測試的都是可以正常的更新也不用再手動去更新外掛服務,那該腳本會自動執行必要的修補程式

  • 以下面指令安裝來源庫,讓您的 Proxmox VE 自動更新 FreeNAS 修補程式
wget http://repo.ksatechnologies.com/debian/pve/ksatechnologies-release.gpg -O /etc/apt/trusted.gpg.d/ksatechnologies-repo.gpg
echo "deb http://repo.ksatechnologies.com/debian/pve testing freenas-proxmox" > /etc/apt/sources.list.d/ksatechnologies-repo.list
apt update
apt install freenas-proxmox
  • 更新指令
apt update
apt [full|dist]-upgrade
  • You can also do one of the following to trigger the process on an existing install not waiting for any Proxmox VE upgrades.

On Proxmox 5

apt install --reinstall pve-manager pve-docs libpve-storage-perl

On Proxmox 6

apt reinstall pve-manager pve-docs libpve-storage-perl



參考相關網頁