31 August 2012 Jarret Lavallee

After installing KVM, I wanted to try out some other hypervisors that are common. I have owned multiple OpenVZ VPS’s. In fact this site is currently hosted on one. OpenVZ was one of the easiest deployments yet. The technology is very cool, but more limited than the other hypervisors. I would suggest reading the quick start guide. The information below is how I installed it.

The first thing we need to do is install CentOS 6 in a hardware version 8 VM on the ESXi host. Make sure that the VM is attached to a port group in promiscuous mode.

Configuring the ESXi 5 VM for OpenVZ

As per this article, we can set some options in the VMX to allow nested hypervisors. Append the following lines to the VMX file after the VM has been shut down.

cpuid.1.ecx="\----:\----:\----:\----:\----:\----:--h-:\----"  
cpuid.80000001.ecx.amd="\----:\----:\----:\----:\----:\----:\----:-h--"  
cpuid.8000000a.eax.amd="hhhh:hhhh:hhhh:hhhh:hhhh:hhhh:hhhh:hhhh"  
cpuid.8000000a.ebx.amd="hhhh:hhhh:hhhh:hhhh:hhhh:hhhh:hhhh:hhhh"  
cpuid.8000000a.edx.amd="hhhh:hhhh:hhhh:hhhh:hhhh:hhhh:hhhh:hhhh"  
monitor.virtual_mmu = "hardware"  
monitor.virtual_exec = "hardware"  

Now we need to reload the VMX file so the host acknowledges the new changes. We will do this with the vim-cmd command.

\# vim-cmd vmsvc/getallvms |grep openvz1  
254 openvz1 [iscsi\_dev] openvz1/openvz1.vmx rhel6\_64Guest vmx-08  
\# vim-cmd vmsvc/reload 254  
\# vim-cmd vmsvc/power.on 254  
Powering on VM:  

Installing OpenVZ

Now we can log into the VM and start configuring OpenVZ. The first thing we should do is add the openVZ repo.

\# wget http://download.openvz.org/openvz.repo  
\# mv openvz.repo /etc/yum.repos.d/  
\# rpm --import http://download.openvz.org/RPM-GPG-Key-OpenVZ  
\# yum update  

Now we can install the vzkernel and reboot into it.

\# yum install vzkernel  
\# reboot  

After the reboot we should confirm that we are running on the right kernel.

\# uname -a  
Linux openvz1 2.6.32-042stab057.1 #1 SMP Fri Jun 22 02:17:07 MSD 2012 x86\_64 x86\_64 x86_64 GNU/Linux  

Now we install the OpenVZ tools.

\# yum install vzctl vzquota -y  

We need to change some kernel parameters for OpenVZ to work correctly. Open up the /etc/sysctl.conf and change/append the following lines.

net.ipv4.ip_forward = 1  
net.ipv4.conf.default.proxy_arp = 0  
net.ipv4.conf.all.rp_filter = 1  
kernel.sysrq = 1  
net.ipv4.conf.default.send_redirects = 1  
net.ipv4.conf.all.send_redirects = 0  
net.ipv4.icmp\_echo\_ignore_broadcasts=1  
net.ipv4.conf.default.forwarding=1  

We can reload the settings from /etc/sysctl.conf by running the following command.

\# sysctl -p  

In this instance I want to allow for multiple subnets, so we can change the following lines in the /etc/vz/vz.conf.

NEIGHBOUR_DEVS=all  

Selinux is incompatible with OpenVZ so we need to disable it. Edit the /etc/sysconfig/selinux and change the following line.

SELINUX=disabled  

Now that OpenVZ is installed, we should reboot again. This will disable selinux and also confirm that everything comes up on boot.

\# reboot  

Deploying VMs in OpenVZ

There are many ways of deploying VMs in OpenVZ. The easiest is to download a prebuilt template. Get a template and put it in the right location. Look here for prebuilt templates.

In my case, I am just going to use a debian 6 template from the repository.

\# cd /vz/templates/cache  
\# wget http://download.openvz.org/template/precreated/debian-6.0-x86.tar.gz  

Now that we have the template we can deploy the VM. When we deploy the VM we will give it a unique id (200 in this case). Check out this article for the basic operations in OpenVZ.

\# vzctl create 200 --ostemplate debian-6.0-x86 --config basic  
Creating container private area (debian-6.0-x86)  
Performing postcreate actions  
CT configuration saved to /etc/vz/conf/200.conf  
Container private area was created  

I want this VM to be started when I boot the OpenVZ server.

\# vzctl set 200 --onboot yes --save  
CT configuration saved to /etc/vz/conf/200.conf  

Now we can configure this VM’s properties. It is as easy as running a few basic commands to set up the VM. With the commands we will set up the Hostname and ip address, etc. With this you can see how easy it would be to script deployments.

\# vzctl set 200 --hostname debian1.virtuallyhyper.com --save  
CT configuration saved to /etc/vz/conf/200.conf  
# vzctl set 200 --ipadd 192.168.10.200 --save  
CT configuration saved to /etc/vz/conf/200.conf  
\# vzctl set 200 --nameserver 192.168.5.10 --save  
CT configuration saved to /etc/vz/conf/200.conf  
\# vzctl set 200 --searchdomain virtuallyhyper.com --ram 128M --diskspace 4G:5G --swap 128M --save  
CT configuration saved to /etc/vz/conf/200.conf  

Since everything is configured the way we want it, let’s power on the VM.

\# vzctl start 200  
Starting container ...  
Container is mounted  
Adding IP address(es): 192.168.10.200  
Setting CPU units: 1000  
Container start in progress..  

One of the cool features of OpenVZ is that we can execute commands inside the running VM from the hypervisor’s console. In this case, let’s change the root password.

\# vzctl exec 200 passwd  
Enter new UNIX password: abc123  
Retype new UNIX password: abc123  
passwd: password updated successfully  

If running the commands was not enough, we could open a console session with the follwoing command.

\# vzctl enter 200  

Installing a Panel

One of the coolest things about Open Virtualization Software is the number of panels out there. The panel is the web interface that you use to manage and deploy VMs. It is not necessary to have one, but it is worth checking out.

OpenVz Web Panel is an open source panel. It has an incredibly easy install and is worth checking out.

The OpenVz Web Panel comes with a easy installer script. (It will also install ruby on the system)

\# wget -O - http://ovz-web-panel.googlecode.com/svn/installer/ai.sh | sh  

Now browse to and login in with the credentials admin/admin.
After logging in you can manage everything graphically.


blog comments powered by Disqus