QNAP TS-251+ 運行 Proxmox VE Cluster(2017/7/11更新)

過年期間,看到 PC HOME 特價賣一台威聯通的 TS-251+-2G 2Bay NAS,搭配 Seagate Ironworf 2TB Nas 專用碟,賣 14888 ,不小心就給他敗了下去,另外花了 3600 大洋買了 2 條 DDR3 8G RAM ,一口氣將這台小 NAS 升級到 16GB RAM,用這麼大 RAM,主要還是為了讓系統有較多記憶體當快取以及想要玩玩看其宣稱的虛擬化及 Container。

QNAP 251+ 16GB RAM

我大概把玩了一兩天後,徹底放棄其內建的虛擬化及 Container,因為實在不好用,尤其以 Container 來說,可以設定的彈性非常不足,有點半殘的功能,而全虛擬化的功能仍有可取之處,但是我仍不滿意,主因是沒有一個完整的虛擬機防火牆可以用。

玩 Proxmox VE 這套虛擬化軟體也很久一段時間了,目前 4.4 版的 LXC(Linux Container) 功能已經解決了 Rhel/CentOS 中關於 PrivateTmp 中的問題,大部分的服務都不需要修改就可以跑,而我目前實體機仍是跑 4.1 版,不太敢升級,於是動起了 QNAP NAS 的腦筋,如果我可以在 QNAP NAS 安裝  Prooxmox VE 4.4 版,然後可將原本的 4.1 版下的虛擬機移轉過來,然後再進行升級,應該是不錯的事情。

解決巢狀虛擬化不支援的問題

如果用 QNAP NAS 內的Virtualization Station 虛擬機工作站安裝 Proxmox VE 是可以安裝的,這叫巢狀虛擬化,成功歸成功,但是可能建立 KVM 啟動的時候發生以下錯誤 !!

No accelerator found ! 代表無法用到虛擬化的硬體加速

現在問題來了,經測試,LXC 部分沒問題,KVM 則無法啟動,TS-251+ 這台的 CPU 是否有支援巢狀虛擬化 ?

經查 Intel Cereron J1900 這顆 CPU,Intel 官方是沒有寫是否支援 EPT,但實際上是有的,但是 CPU 有支援,可是 QNAP 的核心並沒有啟用此功能,因此看了 QNAP 國外論壇,找到了解法如下

https://forum.qnap.com/viewtopic.php?t=118544

上述論壇內的解法,可能由於版本與時間差,與我現行的 NAS 韌體版本有點不同,故我將我的版本怎麼改法寫下

  1. 先 ssh 連上 nas, 帳號是 admin
  2. 用 vi 修改 /KVM/modules/Insmod_ko.sh (注意大小寫,這與論壇上寫的不同)
  3. 2017/7/11 升級韌體後發現第2點已經不適用,變成要修改 /QVS/usr/etc/qvsd.d/44-preload/01-module
  4. 根據論壇上所述,自己查詢內容,將 insmod 載入 kvm.ko 和 kvm-intel.ko 的後面加上 ignore_msrs , nested ept 等參數,如下
/sbin/insmod ${KERNEL_MODULES}/kvm.ko ignore_msrs=1
/sbin/insmod ${KERNEL_MODULES}/kvm-intel.ko nested=y ept=y

或 2017/7/11 更新韌體後後 01-module 應該是下面的內容

 ___load_module kvm.ko ignore_msrs=1
 ___load_module kvm-intel.ko nested=y ept=y

最後存檔重開機,要確認是否真正有啟用 ept 可以下以下三道,得到的結果都必須是 Y

cat /sys/module/kvm/parameters/ignore_msrs
cat /sys/module/kvm_intel/parameters/nested
cat /sys/module/kvm_intel/parameters/ept

若確定都是 Y , 大功告成,現在這台 QNAP NAS 可以用虛擬機工作站安裝 Proxmox VE了。怎麼安裝我就不說了,但為了要讓效能好些,建議網路與磁碟改用設定如下圖

Virtual Gigabit Ethernet 和 Virtual Disk Controller 會得到最好的 I/O 性能。而我給 PVE 的詳細硬體配置如下

  • CPU : 2 core
  • RAM : 8GB
  • HDD : 400GB (實際上在 QNAP NAS 查不會一下子用到這麼大)

Proxmox VE 4.1 虛擬機移轉到 QNAP 內的 Proxmox VE 4.4

我標題是打 Cluster 對吧 ! 但此時我不敢直接做 Cluster ,為了保險起見,先讓舊的機器內容移轉到新的機器,先確認是否都能跑,結論是都可以啦,因此簡單說,怎麼移轉 ?

  1. 於 QNAP NAS 中建立一個 NFS 分享目錄
  2. 於新/舊 Proxmox VE 中建立 NFS Storage,此 Storage 作用可以用來備份,因此 Content 的欄位至少需要選擇 VZ Dump backup。
  3. 將舊虛擬機停機備份到 NFS Storage。
  4. 於QNAP NAS 新的 Proxmox VE 4.4 下還原舊虛擬機,若運作無誤,接下來就是直接於舊的 Proxmox VE 4.1 那台直接重新安裝 4.4 版了。

 

組 Proxmox VE Cluster

為了讓日後能夠更方便的移轉虛擬機,在安裝好 Proxmox VE 4.4 於舊機器後,可以將兩台 Proxmox VE 組成 Cluster,組成 Cluster 的好處是,可以用一個管理介面,直接操作虛擬化的移轉。

由於我是窮人,並沒有訂閱 Proxmox VE,所以前述的升級 4.4 是採用手動安裝,而組成 Cluster 也必須手動安裝,組 Cluster 方式也不難,依照官方網站提供文件做即可

https://pve.proxmox.com/wiki/Proxmox_VE_4.x_Cluster

過程中,我遇到個問題是發生於下列指令

pvecm add IP-ADDRESS-CLUSTER

第一次跑很久超過10分鐘,覺得納悶,於是中斷掉,我重開機,並於開機後將所有虛擬機停止後再做一次,就沒出問題了。

組好之後,可以看到如下圖,左側是兩台實體機下的虛擬機,而都用 qnap nas 分享出來的 nfs 做備份。

這樣的架構已經很安全了,不過這還有個問題,KVM 的部分無法進行直接移轉,根據測試,若 KVM 的虛擬磁碟是存放於本機端,則無法於兩台實體機中移轉,必須要用 Share Storage 存放虛擬磁碟(如 NFS / Gluster / iSCSI),但我不想這樣做,家中沒辦法再搞一台 NFS/Gluster 了,我又不想讓 QNAP NFS 充當虛擬磁碟的 Share Storage,於是仍採用本機磁碟,反正要移轉,仍可以透過備份/還原方式移轉。KVM 部分的 Local Storage 移轉,官方網站是有寫時程在 PVE 5.0 的時候支援。

而 Lxc 的部分,則可以進行直接移轉,Lxc 的檔案若存放在本機,移轉時 Proxmox VE 是會 Copy 過去的,還挺方便的,但Copy 過程挺耗時就是。

組成 Cluter 的好處我大概列一下

  • 可於一個管理介面中進行兩台實體機間的虛擬機移轉
  • 統一的虛擬化防火牆管理,移轉後,防火牆的設定仍在
  • 日後進行大版本升級可以先將所有虛擬機集中至同一台,再進行升級測試

目前家中的機器架構就是一台 PC + NAS 組成的 PVE Cluster,NAS 部分算是備援及備份,這樣資料保護還挺安全的,運作也超過兩周,沒發生甚麼狀況。

如果下次還有點閒錢,可能我會研究一下,有沒有辦法再弄一台 QNAP NAS ,然後搞一套 Gluster,來弄個可以即時不斷線移轉 KVM 的架構,理論上應該可行吧 哈。

1 則評論在 QNAP TS-251+ 運行 Proxmox VE Cluster(2017/7/11更新).

  1. 你好!
    你文章有提到:現在這台 QNAP NAS 可以用虛擬機工作站安裝 Proxmox VE
    請問意思是在QNAP NAS主機的Virtualization Station軟體下建置一個虛擬主機,然後在該虛擬主機下安裝Proxmox VE嗎?
    最近想弄個巢狀虛擬化,卡關很久,剛好看到大大文章,感謝大大了

發佈留言