隨著各家虛擬化的競爭越來越激烈,好像後來都沒聽到 OpenVZ 的消息了,但其實 OpenVZ 還是持續有在發展與更新的。
要安裝 OpenVZ,建議使用 CentOS 6 或是 Debian 7,安裝會比較順利。這邊使用的是 CentOS 6。
官方的安裝說明:https://openvz.org/Quick_installation
首先是設定 repository 並安裝 vzkernel 與工具:
1 2 3 |
# wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo # rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ # yum install vzkernel vzctl vzquota ploop |
接著需要修改 /etc/sysctl.conf,增加以下設定,有些設定原本就在裡面,需要註解掉:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# On Hardware Node we generally need # packet forwarding enabled and proxy arp disabled net.ipv4.ip_forward = 1 net.ipv6.conf.default.forwarding = 1 net.ipv6.conf.all.forwarding = 1 net.ipv4.conf.default.proxy_arp = 0 # Enables source route verification net.ipv4.conf.all.rp_filter = 1 # Enables the magic-sysrq key kernel.sysrq = 1 # We do not want all our interfaces to send redirects net.ipv4.conf.default.send_redirects = 1 net.ipv4.conf.all.send_redirects = 0 |
最後修改 /etc/sysconfig/selinux 關閉 selinux,重開機後應該會使用 OpenVZ 的核心開機,這樣就完成安裝了。
主機的環境準備好後,我們接著可以去下載官方準備好的各個 Linux 發行版 template:http://openvz.org/Download/template/cache
下載後放到 /vz/template/cache 並注意 **不需要解壓縮**。這邊我是下載 debian-7.0-x86_64.tar.gz 這一個做練習。
另外,如果要讓 VPS 的網路正常運作,還得修改 iptables 設定,或是關閉 iptables。
有了虛擬機的 template,就可以開始創建 VPS,官方說明在:https://openvz.org/Basic_operations_in_OpenVZ_environment
首先要決定 VPS 的 id,id 就是一個數字,官方保留了 0 到 100 不能使用,100 以上的數字都可以自行選用。
1 2 3 4 |
# vzctl create 1000 --ostemplate debian-7.0-x86_64 # vzctl set 1000 --ipadd 10.1.2.3 --save # vzctl set 1000 --nameserver 8.8.8.8 --save # vzctl start 1000 |
我這邊使用的 id 是 1000,並一併設定了 VPS 的 IP 與 DNS。
–save 表示會將此設定寫在 /etc/vz/conf/1000.conf(1000是 VPS id),若是沒有 save,重開機設定就會消失。最後一行是啟動 VPS 的命令。啟動之後可以用 vzctl enter 1000 進入到 VPS 的環境中,輸入 exit 返回主機環境。
每台 VPS 在建立之後,設定檔會存放在 /etc/vz/conf/ 裡邊,而檔案系統則是放在 /vz/private/ 裡。如果將來需要搬移或是整合,只需要將這兩邊的檔案複製過去即可。假如目的地已經有同樣 id 的 VPS 在運作,也可以很輕易的更換一個新的 id 就可運行。更換的方式就只要把 /etc/vz/conf/1000.conf 及 /vz/private/1000 這兩邊的 1000 改成你要用的數字即可,不需要再做額外的設定。
建立 VPS 之後,防火牆是不可或缺的東西,但是網路上許多相關的文章都有點舊了。例如,若是要使用 state 來設定 iptables 規則,可能會遇到這樣的錯誤:
1 |
iptables: No chain/target/match by that name. |
網路上很多都提到需要修改 vz.conf 之類的,其實都不需要嘍。這個時候,正確的處理方法應該是:
1 |
vzctl set CTID --netfilter full --save |
系統資源的分配也是很重要的一環,至少硬碟空間與記憶體都需要做限制:
1 2 3 4 5 |
# 設置記憶體空間為 512MB vzctl set CTID --ram 512M --save # 硬碟空間配額為 10G vzctl set CTID --diskspace 10G:12G --save |
另外,預設的檔案系統 Layout 是 ploop,若是想要使用 simfs 的話,就只能在創建 VPS 時指定,建好以後就不能修改嘍:
1 2 |
# 使用 simfs 儲存檔案 vzctl create CTID --layout simfs |
常用命令整理:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# VPS 創建/刪除 vzctl create CTID --ostemplate debian-7.0-x86_64.tar.gz vzctl destroy CTID # VPS 啟動/停止 vzctl start CTID vzctl stop CTID # 參數設定 vzctl set CTID --hostname hostname --save vzctl set CTID --ipadd ip --save vzctl set CTID --nameserver ip --save # 列出所有 VPS vzlist -a |