業餘機房管理員貴哥向系上要了一部較高階的桌機， 在上面安裝 proxmox 虛擬環境， 用它來架設私有雲、 管理幾部 linux 教學伺服器已經兩年了， 感覺超簡單超方便的， 很想分享給中小企業網管們， 還有喜歡電腦自主又想幫學校省錢的老師們。 小格舊版的 「虛擬機新手恩物 proxmox」 那篇蠻受歡迎的； 新版的 4.* 系列有很多改變， 所以決定重寫一篇。 也順便示範： 沒有伺服器和固定 IP 可用的窮人也能把 proxmox 安裝在一個 qcow2 檔或隨身碟裡面， 背著一間機房到處跑、 隨時拿出來練習! 這招拿來教 proxmox 很方便， 不會影響到電腦教室裡原本的 linux 系統。 (<== 真正的原始動機) 但本篇的重點並不是隨身碟/行動版 -- 單純想玩 proxmox、 手邊有實體伺服器可用的讀者， 可以省略前面的虛擬環境架設， 直接用 proxmox 光碟啟動伺服器， 並且跳到第二節第4步。
(如果未來只打算使用輕量級的 lxc container， 不打算使用完整的 kvm 虛擬機的話， 可省略此步。) 請先查看 CPU 有沒有啟用 巢狀虛擬化： cat /sys/module/kvm_intel/parameters/nested 若看到 Y， 直接跳到下一步； 若看到 N， 則需要重新載入 kvm_intel 模組並啟用巢狀虛擬化： rmmod kvm_intel ; modprobe kvm_intel nested=1 可能是因為 amd 對他們的 CPU 比較有信心吧， 預設就直接啟用， 不會有這個問題。 詳見 archwiki。
建立虛擬磁碟映像檔： qemu-img create -f qcow2 proxdemo.qcow2 30G 我用 12G 也還可以成功安裝。
用安裝光碟啟動虛擬機： kvm -m 4096 -monitor stdio -cpu host -cdrom proxmox-ve_4.4-eb2d6f1e-2.iso -boot order=dc -device virtio-net,netdev=net0,mac=52:54:00:12:34:03 -netdev tap,id=net0,ifname=tap03 proxdemo.qcow2 因為要用 zfs， 記憶體最好多給一些。 加上 -cpu host 後續才能玩巢狀虛擬化。
在選取 Target Harddisk 的那一頁， 點 options， 然後 filesystem 欄位選 zfs (RAID0)。 不必去動 advanced options。
Country 填 Taiwan。
密碼至少要五個字元。
FQDN 自己隨便取名字； IP 等等數字不必去動它， 用 kvm 分配的值 (10.0.2.15 等等) 就好。
安裝完成、 reboot 之後又回到安裝光碟開機畫面， 直接暴力關機。
啟動 proxmox： 如果是實體機就直接開機； 如果是虛擬機就 kvm -m 4096 -monitor stdio -cpu host -device virtio-net,netdev=net0,mac=52:54:00:12:34:03 -netdev tap,id=net0,ifname=tap03 proxdemo.qcow2 也就是比剛剛少了 -cdrom 跟 -boot 那兩段。
用 root 跟先前設定的密碼登入。
Proxmox 警告說你沒有 valid subscription。 直接按 ok 就好。
zfs 有一個超級超級好用的功能： 系統快照。
查看目前有哪些 zfs 的 data sets： zfs list -t all 注意到 proxmox 預設將最上層的 data set 叫做 rpool。
[2019/6/7] 注意！ /etc/pve 這個目錄必須另外手動備份！ 用 df 查看， 會發現它是另一個獨立的檔案系統。 根據 官網說明 為了要讓多個 nodes 之間的設定同步， 這個目錄採用的是特殊的 pmxcfs 檔案系統， 所以 zfs 管不到。
要建立 lxc container 之前， 系統裡必須先準備好模板 (template， 例如 debian 8 的模板、 ubuntu 16.04 的模板、 fedora 24 的模板、 ... 等等。
下載 ubuntu 16.04 的模板： pveam download local ubuntu-16.04-standard_16.04-1_amd64.tar.gz 下載回來的模板放在 /var/lib/vz/template/cache/ 裡面。
至此， 你已經可以從瀏覽器介面建立輕量級虛擬機 (Create CT)， 也就是 lxc container。
至此， 你已經可以從瀏覽器介面建立完整虛擬機 (Create VM)， 也就是 kvm 虛擬機。 建立 kvm 虛擬機時， 在 「Harddisk」 那一步的 「Storage」 選項， 有 local 跟 local-zfs 兩個選項。 要選 local-zfs 才能享受 zfs 的快照。 詳見 這個問答 及 32 bit linux 不支援 zfs 但還是可以享用 snapshot 快照。
如果你希望把虛擬機們關到更內層的區網， 那麼請先把 brctl show 的結果存起來， 等一下可能會用得到。 先到 /etc/network/interfaces 裡面 (原有的 auto vmbr0 那一段之後) 加上一段：
注意： 在 proxdemo host 裡面， 這張新的網卡的名稱必須長得類似上面的 vmbr72 (一定要以 vmbr 開頭)。 iptables 那兩句裡面的重點是 -o vmbr0 ： 要指定由 vmbr0 (它底下管了 proxdemo host 的實體網卡 eth0) 來幫區網做 NAT。根據 這個問答， 改過 /etc/network/interfaces 之後， 要下 service networking restart 才會生效。 但是重啟網路之後， 內網有可能會斷掉。 這是因為 bridge 沒有把 interface 加回來。 請用 brctl show 檢查， 用 brctl addif vmbr72 tap100i0 之類的指令， 手工把它加回來。 (剛剛你有先用 brctl show 備份正確的網路設定以供現在參考對吧?) 最後， 建立虛擬機時， 網路就選這個 vmbr72。
又， 強烈建議安裝 Single Packet Authorization， 既可全面防禦 ssh 又可順便幫區網內的虛擬機做 port forwarding。
假設你已建立好一部 lxc container 代號 201。 除了從網頁介面備份還原之外， 也可以從命令列上備份/還原/複製：
第一句會把 201 備份起來， 第二句則是從它的備份產生出一部新的虛擬機代號 451， 主機名稱 songmi451。 但為了避免兩部機器一模一樣， 還需要參考 備份/搬家/還原/大量複製虛擬機 第三節 (含) 之後的說明， 其中的 vzctl 指令通通改成 pct 指令。
如果網路沒有設定好的話， console 頁面啟動機器時， 可能會跳掉不見。
finnix 不認得 scsi 硬碟。 請用 sata 或 ide。