<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.openvz.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ongardie</id>
	<title>OpenVZ Virtuozzo Containers Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.openvz.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ongardie"/>
	<link rel="alternate" type="text/html" href="https://wiki.openvz.org/Special:Contributions/Ongardie"/>
	<updated>2026-05-06T12:17:02Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=Getting_started_with_OpenVZ_live_CD&amp;diff=3166</id>
		<title>Getting started with OpenVZ live CD</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=Getting_started_with_OpenVZ_live_CD&amp;diff=3166"/>
		<updated>2007-06-10T16:51:56Z</updated>

		<summary type="html">&lt;p&gt;Ongardie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article is written for OpenVZ LiveCD and assumes that the reader only starts using OpenVZ. ([[Download live CD]])&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
So, as you probably know, OpenVZ allows the user to create [[VE]]s, or Virtual Environments, which seem very much&lt;br /&gt;
like real computers. Real computer can run various distributions: Debian, Gentoo, Red Hat and  Novell products, etc.&lt;br /&gt;
In the same way, a VE can be based on various [[OS template|OS (Operating System) templates]]. On the LiveCD only few minimal OS templates are installed because of disk space limit. Each VE is identified by its number -- a '''VEID'''.&lt;br /&gt;
&lt;br /&gt;
== VE creation ==&lt;br /&gt;
So, how to create a VE with VEID of 101 based on Debian template? Very easy. Just type the following commands in your&lt;br /&gt;
terminal (you must be root):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@Knoppix:~# vzctl create 101 --ostemplate debian-3.1-i386-minimal&lt;br /&gt;
Creating VE private area (debian-3.1-i386-minimal)&lt;br /&gt;
Performing postcreate actions&lt;br /&gt;
VE private area was created&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''vzctl''' is the tool that manages VEs. Look in &amp;lt;tt&amp;gt;/var/lib/vz/template/cache/&amp;lt;/tt&amp;gt; directory for other OS templates available on LiveCD:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@Knoppix:~# ls -1 /var/lib/vz/template/cache/&lt;br /&gt;
centos-4-i386-minimal.tar.gz&lt;br /&gt;
debian-3.1-i386-minimal.tar.gz&lt;br /&gt;
fedora-core-5-i386-minimal.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== List of VEs ==&lt;br /&gt;
You can get the list of all created VEs on '''HN''' (Hardware Node) using '''vzlist''' command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@Knoppix:~#  vzlist -a&lt;br /&gt;
      VEID      NPROC STATUS  IP_ADDR         HOSTNAME&lt;br /&gt;
       101          - stopped -               -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you see, VE 101 is in stopped state now.&lt;br /&gt;
&lt;br /&gt;
== Starting VE ==&lt;br /&gt;
Let's start it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@Knoppix:~# vzctl start 101&lt;br /&gt;
Starting VE ...&lt;br /&gt;
VE is mounted&lt;br /&gt;
Setting CPU units: 1000&lt;br /&gt;
VE start in progress...&lt;br /&gt;
root@Knoppix:~# vzlist -a&lt;br /&gt;
      VEID      NPROC STATUS  IP_ADDR         HOSTNAME&lt;br /&gt;
       101          5 running                 -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
o Note: In the LiveCD environment, you may have to increase SHMPAGES for the VE or you will run out of &amp;quot;disk space&amp;quot; when trying to install software.  You can do this &amp;quot;on the fly&amp;quot; by issuing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
' vzctl set 101 --shmpages $((8192*8)):$((8192*8)) --save '&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
o This will give VE 101 64MB of shmpages; you may wish to give it more if you're planning on doing more than just basic openvz testing.&lt;br /&gt;
&lt;br /&gt;
o You can verify the change from the host by issuing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
' vzctl exec 101 cat /proc/user_beancounters '&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Executing commands in VE ==&lt;br /&gt;
From the &amp;quot;vzlist&amp;quot; command you see that 5 processes are running inside VE 101. (The &amp;quot;NPROC&amp;quot; field indicates the number of Processes, or PIDs, that are active in the VE -- not the number of Processors, or CPUs.)  Being on usual [[hardware node]] you can use &amp;lt;code&amp;gt;ps&amp;lt;/code&amp;gt; command to identify those, and the same command can be used here. The only difference is that this command should be called inside VE.&lt;br /&gt;
&lt;br /&gt;
In order to perform any command inside VE `vzctl exec` is used:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@Knoppix:~# vzctl exec 101 ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
    1 ?        00:00:00 init&lt;br /&gt;
 7672 ?        00:00:00 rc&lt;br /&gt;
 7674 ?        00:00:00 S10sysklogd&lt;br /&gt;
 7677 ?        00:00:00 syslogd&lt;br /&gt;
 7678 ?        00:00:00 syslogd&lt;br /&gt;
 7683 ?        00:00:00 ps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Entering VE ==&lt;br /&gt;
Any self-respected OS provides a shell for the user. This is how you can get the VE's shell:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@Knoppix:~# vzctl enter 101&lt;br /&gt;
entered into VE 101&lt;br /&gt;
Knoppix:/#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this shell you can do almost all you can do on the real HN. For example create a new user:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Knoppix:/# useradd new-user&lt;br /&gt;
Knoppix:/# passwd new-user&lt;br /&gt;
Enter new UNIX password:&lt;br /&gt;
Retype new UNIX password:&lt;br /&gt;
passwd: password updated successfully&lt;br /&gt;
Knoppix:/# mkdir /home/new-user&lt;br /&gt;
Knoppix:/# chown new-user /home/new-user/&lt;br /&gt;
Knoppix:/# su new-user&lt;br /&gt;
Knoppix:/$ cd ~&lt;br /&gt;
Knoppix:~$ pwd&lt;br /&gt;
/home/new-user&lt;br /&gt;
exit&lt;br /&gt;
Knoppix:/#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to exit from VEs shell, just type exit:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Knoppix:/# exit&lt;br /&gt;
logout&lt;br /&gt;
exited from VE 101&lt;br /&gt;
root@Knoppix:~#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up VE networking ==&lt;br /&gt;
Let's set up networking in VE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@Knoppix:~# echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
root@Knoppix:~# ifconfig venet0 up&lt;br /&gt;
root@Knoppix:~# vzctl set 101 --ipadd 10.1.1.1 --save&lt;br /&gt;
Adding IP address(es): 10.1.1.1&lt;br /&gt;
Saved parameters for VE 1&lt;br /&gt;
root@Knoppix:~# vzlist -a&lt;br /&gt;
      VEID      NPROC STATUS  IP_ADDR         HOSTNAME&lt;br /&gt;
       101          4 running 10.1.1.1        -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now your [[Hardware Node]] can ping VE and VE can ping HN:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@Knoppix:~# ping 10.1.1.1&lt;br /&gt;
PING 10.1.1.1 (10.1.1.1) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 10.1.1.1: icmp_seq=1 ttl=64 time=3.80 ms&lt;br /&gt;
&lt;br /&gt;
--- 10.1.1.1 ping statistics ---&lt;br /&gt;
1 packets transmitted, 1 received, 0% packet loss, time 0ms&lt;br /&gt;
rtt min/avg/max/mdev = 3.804/3.804/3.804/0.000 ms&lt;br /&gt;
root@Knoppix:~#&lt;br /&gt;
root@Knoppix:~# vzctl exec 101 ping 192.168.0.244&lt;br /&gt;
PING 192.168.0.244 (192.168.0.244) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 192.168.0.244: icmp_seq=1 ttl=64 time=0.508 ms&lt;br /&gt;
&lt;br /&gt;
root@Knoppix:~#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, it is not possible to ping other computers in the network: for it we need to&lt;br /&gt;
set up NAT (Network Address Translation) and set the nameserver.&lt;br /&gt;
&lt;br /&gt;
Assume that you've set up network on HN (for example via DHCP) and the IP address&lt;br /&gt;
of your node is 192.168.0.244 and nameserver IP address is 192.168.1.1.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@Knoppix:~# iptables -t nat -A POSTROUTING -s 10.1.1.1 -o eth0 -j SNAT --to 192.168.0.244&lt;br /&gt;
root@Knoppix:~# vzctl set 101 --nameserver 192.168.1.1 --save&lt;br /&gt;
File resolv.conf was modified&lt;br /&gt;
Saved parameters for VE 101&lt;br /&gt;
root@Knoppix:~# vzctl exec 101 ping google.com&lt;br /&gt;
PING google.com (64.233.167.99) 56(84) bytes of data.&lt;br /&gt;
64 bytes from py-in-f99.google.com (64.233.167.99): icmp_seq=1 ttl=241 time=23.0 ms&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing software inside VE ==&lt;br /&gt;
I guess you've noted that there is not so many packages in VE. It is because minimal template was used.&lt;br /&gt;
But of course, you can install any software in VE by yourself. For example, in Debian usual apt-get tool can be used.&lt;br /&gt;
&lt;br /&gt;
Now, for example, we can install gcc inside VE 101 for developing purposes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@Knoppix:~# vzctl enter 101&lt;br /&gt;
entered into VE 101&lt;br /&gt;
Knoppix:/#&lt;br /&gt;
Knoppix:/# apt-get install gcc&lt;br /&gt;
Reading Package Lists... Done&lt;br /&gt;
Building Dependency Tree... Done&lt;br /&gt;
The following extra packages will be installed:&lt;br /&gt;
  binutils cpp cpp-3.3 gcc-3.3&lt;br /&gt;
Suggested packages:&lt;br /&gt;
  binutils-doc cpp-doc make manpages-dev autoconf automake libtool flex bison gdb gcc-doc gcc-3.3-doc&lt;br /&gt;
Recommended packages:&lt;br /&gt;
  libc-dev libc6-dev&lt;br /&gt;
The following NEW packages will be installed:&lt;br /&gt;
  binutils cpp cpp-3.3 gcc gcc-3.3&lt;br /&gt;
0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.&lt;br /&gt;
Need to get 5220kB of archives.&lt;br /&gt;
After unpacking 13.6MB of additional disk space will be used.&lt;br /&gt;
Do you want to continue? [Y/n] y&lt;br /&gt;
Get:1 http://ftp.freenet.de stable/main binutils 2.15-6 [2221kB]&lt;br /&gt;
Get:2 http://ftp.freenet.de stable/main cpp-3.3 1:3.3.5-13 [1393kB]&lt;br /&gt;
Get:3 http://ftp.freenet.de stable/main cpp 4:3.3.5-3 [29.6kB]&lt;br /&gt;
Get:4 http://ftp.freenet.de stable/main gcc-3.3 1:3.3.5-13 [1570kB]&lt;br /&gt;
Get:5 http://ftp.freenet.de stable/main gcc 4:3.3.5-3 [4906B]&lt;br /&gt;
Fetched 5220kB in 10s (507kB/s)&lt;br /&gt;
Selecting previously deselected package binutils.&lt;br /&gt;
(Reading database ... 7436 files and directories currently installed.)&lt;br /&gt;
Unpacking binutils (from .../binutils_2.15-6_i386.deb) ...&lt;br /&gt;
Selecting previously deselected package cpp-3.3.&lt;br /&gt;
Unpacking cpp-3.3 (from .../cpp-3.3_1%3a3.3.5-13_i386.deb) ...&lt;br /&gt;
Selecting previously deselected package cpp.&lt;br /&gt;
Unpacking cpp (from .../cpp_4%3a3.3.5-3_i386.deb) ...&lt;br /&gt;
Selecting previously deselected package gcc-3.3.&lt;br /&gt;
Unpacking gcc-3.3 (from .../gcc-3.3_1%3a3.3.5-13_i386.deb) ...&lt;br /&gt;
Selecting previously deselected package gcc.&lt;br /&gt;
Unpacking gcc (from .../gcc_4%3a3.3.5-3_i386.deb) ...&lt;br /&gt;
Setting up binutils (2.15-6) ...&lt;br /&gt;
&lt;br /&gt;
Setting up cpp-3.3 (3.3.5-13) ...&lt;br /&gt;
Setting up cpp (3.3.5-3) ...&lt;br /&gt;
Setting up gcc-3.3 (3.3.5-13) ...&lt;br /&gt;
Setting up gcc (3.3.5-3) ...&lt;br /&gt;
&lt;br /&gt;
Knoppix:/# exit&lt;br /&gt;
logout&lt;br /&gt;
exited from VE 101&lt;br /&gt;
root@Knoppix:~#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resource limiting ==&lt;br /&gt;
The very important feature of VE is that you can limit it by resources: CPU, memory, disk space.&lt;br /&gt;
It is also performed via vzctl. Current usage values and limits of memory-related resources can be viewed through&lt;br /&gt;
&amp;lt;code&amp;gt;/proc/bc/VEID/resources&amp;lt;/code&amp;gt; file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@Knoppix:~# cat /proc/bc/101/resources&lt;br /&gt;
            kmemsize         628209     976969    2752512    2936012          0&lt;br /&gt;
            lockedpages           0          0         32         32          0&lt;br /&gt;
            privvmpages        5238       6885      49152      53575          0&lt;br /&gt;
            shmpages           5012       5014       8192       8192          0&lt;br /&gt;
            numproc               3         11         65         65          0&lt;br /&gt;
            physpages          5084       6020          0 2147483647          0&lt;br /&gt;
            vmguarpages           0          0       6144 2147483647          0&lt;br /&gt;
            oomguarpages       5084       6020       6144 2147483647          0&lt;br /&gt;
            numtcpsock            0          2         80         80          0&lt;br /&gt;
            numflock              1          5        100        110          0&lt;br /&gt;
            numpty                0          1         16         16          0&lt;br /&gt;
            numsiginfo            0          6        256        256          0&lt;br /&gt;
            tcpsndbuf             0       4440     319488     524288          0&lt;br /&gt;
            tcprcvbuf             0      42180     319488     524288          0&lt;br /&gt;
            othersockbuf       2220       6660     132096     336896          0&lt;br /&gt;
            dgramrcvbuf           0       2220     132096     132096          0&lt;br /&gt;
            numothersock          1          6         80         80          0&lt;br /&gt;
            dcachesize            0          0    1048576    1097728          0&lt;br /&gt;
            numfile             106        339       2048       2048          0&lt;br /&gt;
            numiptent            10         10        128        128          0&lt;br /&gt;
root@Knoppix:~#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
First column is resource name, second is current usage, third is peak usage, forth and fifth are barrier and limit, and last column is fail counter.&lt;br /&gt;
&lt;br /&gt;
Note that if you have nonzero values in the last column, it means that this VE&lt;br /&gt;
experienced a resource shortage. This is very common reason why some application fail to&lt;br /&gt;
work in a VE. In this case you should increase limits/barriers accordingly; see&lt;br /&gt;
[[resource shortage]] for more info.&lt;br /&gt;
&lt;br /&gt;
== Stopping/removing VE ==&lt;br /&gt;
Well, let's stop VE and destroy it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@Knoppix:~# vzctl stop 101&lt;br /&gt;
Stopping VE ...&lt;br /&gt;
VE was stopped&lt;br /&gt;
VE is unmounted&lt;br /&gt;
root@Knoppix:~# vzctl destroy 101&lt;br /&gt;
Destroying VE private area: /var/lib/vz/private/101&lt;br /&gt;
VE private area was destroyed&lt;br /&gt;
root@Knoppix:~#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
That's all you need to start playing with OpenVZ. Additional information can be found in man page on vzctl and at http://wiki.openvz.org/ .&lt;br /&gt;
&lt;br /&gt;
If you experience some difficulties, contact us via http://forum.openvz.org/ . Templates and other tools are available from http://download.openvz.org/ .&lt;/div&gt;</summary>
		<author><name>Ongardie</name></author>
		
	</entry>
</feed>