之所有选择openVZ,是因为其他两个操作系统虚拟化产品我没法接触到;同时使用OpenVZ后,感觉比较好,所以和大家来分享。
现从站点上下载内核包,比如我下载的是ovzkernel-2.6.18-8.el5.028stab023.1.i686.rpm.安装他
root (hd0,0)
kernel /vmlinuz-2.6.18-8.el5.028stab023.1 ro root=LABEL=/everest
vga=788 splash=silent resume2=swap:/dev/hda2
initrd /initrd-2.6.18-8.el5.028stab023.1.img
vzctl -- 控制VPSs的,包括创建,销毁,开始,停止,设置参数等功能。
vzquota -- 管理VPSs的配额,大部分情况是被vzctl间接调用。
从官方站点下载对应的工具包,并安装。
# /etc/init.d/vz start
Starting OpenVZ: ..done
Bringing up interface venet0: ..done
Configuring interface venet0: ..done
首先需要OS模板系统,OS模板可以自动从站点下载(通过yum),或者下载预先创建的模板缓存,或者DIY一个出来。当然各自难度不同。
所以我们先说最简单的--下载预先创建好的OS模板系统。
首先从官方站点下载你喜欢的系统模板,我下载了两个,asianux-2.0-SP1-minimal-x86.tar.gz,fedora-core-5-i386-minimal.tar.gz.
把你下载的模板放到/vz/template/cache目录下,注意不要解压。保留原来的格式就好了。
[root@mlsx ~]# vzctl create 104 --ostemplate fedora-core-5-i386-minimal
Creating VE private area (fedora-core-5-i386-minimal)
Performing postcreate actions
VE private area was created
[root@mlsx ~]# vzctl set 104 --ipadd 192.168.0.7 --nameserver 192.168.0.1
--hostname firstve01 --save
Saved parameters for VE 104
[root@mlsx ~]# vzctl start 104
Starting VE ...
VE is mounted
Adding IP address(es): 192.168.0.7
Setting CPU units: 1000
Set hostname: firstve01
File resolv.conf was modified
VE start in progress...
[root@mlsx ~]#
稍 微解释一下,第一条命令是创建一个VEID号为104的VE,他的OS模板是fedora-core-5-i386-minimal。第二条命令设置 VEID为104(就是我们刚才创建的VE)的VE的主机名称,IP地址,DNS。第三条命令就非常清楚了,启动VEID为104的VE。
Creating VE private area (fedora-core-5-i386)
Cached os template /vz/template/cache/fedora-core-5-i386.tar.gz not found
Creation of VE private area failed
[root@mlsx ~]# vzctl exec 104 ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 2004 668 ? Ss 07:54 0:00 init [3]
root 5235 0.0 0.1 1656 600 ? Ss 07:54 0:00 syslogd -m 0
root 5246 0.0 0.2 4996 1092 ? Ss 07:54 0:00 /usr/sbin/sshd
root 5327 0.0 0.1 2108 820 ? Rs 07:57 0:00 ps aux
[root@mlsx ~]# vzctl enter 104
entered into VE 104
[root@firstve01 /]# hostname
firstve01
[root@firstve01 /]# exit
exited from VE 104
[root@mlsx ~]#
停止一个VE
Stopping VE ...
VE was stopped
VE is unmounted
[root@mlsx ~]# vzlist
VEID NPROC STATUS IP_ADDR HOSTNAME
101 3 running 192.168.0.4 fc5-minimal
102 6 running 192.168.0.5 asianux-2.0-SP1-minimal-x86
103 3 running 192.168.0.6 fc5-minimal-other
使用-a的参数可以看到所有的VE,不管是否正在运行.
[root@mlsx ~]# vzlist -a
VEID NPROC STATUS IP_ADDR HOSTNAME
101 3 running 192.168.0.4 fc5-minimal
102 6 running 192.168.0.5 asianux-2.0-SP1-minimal-x86
103 3 running 192.168.0.6 fc5-minimal-other
104 - stopped 192.168.0.7 firstve01
[root@mlsx ~]# vzcalc -v 104
Resource Current(%) Promised(%) Max(%)
Low Mem 0.10 2.15 2.15
Total RAM 0.36 n/a n/a
Mem + Swap 0.18 2.81 n/a
Alloc. Mem 0.25 2.81 21.27
Num. Proc 0.02 n/a 0.40
--------------------------------------------
Memory 0.36 2.81 21.27
#vzctl set 104 --privvmpages 65536 --save
#vzcalc 104
Resource Current(%) Promised(%) Max(%)
Memory 0.36 6.80 25.92
从参数的命名来看,我们知道是以内存"页"(pages)大小为单位计算的。因此你首先需要知道当前你的系统的页大小是多少,一般情况下,普通页大小是4k,巨页(hugetblpage)大小是4096K--4M。
于是64M需要的pages是
64M*1024/4=16384
256M需要的pages便是
256M*1024/4=65536
#vzctl set 104 --vmguarpages $((256 * 64 )) --save
#vzctl set 104 --privvmpages $((256 * 256)) --save
注意:如果这个帐号不存在,那么系统会自动创建帐号。
[root@mlsx conf]# vzctl exec 104 df
Filesystem 1K-blocks Used Available Use% Mounted on
simfs 1048576 122919 925657 12% /
我们create了一个VE,也玩了一般,累了,厌倦了,觉得太弱智了。于是我要把他从我的磁盘空间中赶走。那就使用下面的命令吧
VE is currently runing. Stop it before proceeding.
[root@mlsx conf]# vzctl stop 104
Stopping VE ...
VE was stopped
VE is unmounted
[root@mlsx conf]# vzctl destroy 104
Destroying VE private area: /vz/private/104
VE private area was destroyed