<?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=Poige</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=Poige"/>
	<link rel="alternate" type="text/html" href="https://wiki.openvz.org/Special:Contributions/Poige"/>
	<updated>2026-05-15T12:33:42Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=UBC_systemwide_configuration&amp;diff=7447</id>
		<title>UBC systemwide configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=UBC_systemwide_configuration&amp;diff=7447"/>
		<updated>2009-07-27T05:34:51Z</updated>

		<summary type="html">&lt;p&gt;Poige: Made &amp;quot;x86&amp;quot; mention clearer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UBC toc}}&lt;br /&gt;
&lt;br /&gt;
The [[UBC consistency check]] article discussed validation of [[UBC]] configuration for a single container. This article discusses checks that the UBC configuration of the&lt;br /&gt;
'''whole''' system is '''valid'''.&lt;br /&gt;
&lt;br /&gt;
Configurations where resources allowed for containers exceed system&lt;br /&gt;
capacity&amp;lt;ref&amp;gt;More precisely, configurations with excessive&lt;br /&gt;
overcommitment, as explained below.&amp;lt;/ref&amp;gt; are not valid&lt;br /&gt;
and dangerous from stability point of view.&lt;br /&gt;
They may result in abnormal termination of the applications,&lt;br /&gt;
bad responsiveness of the system and, sometimes, system hangs.&lt;br /&gt;
Whereas the configuration validation discussed in [[UBC consistency check]]&lt;br /&gt;
addressed application functionality,&lt;br /&gt;
the validation considered in this section is aimed at security and stability&lt;br /&gt;
of the whole system.&lt;br /&gt;
&lt;br /&gt;
The best way to make sure that the configuration of the whole system&lt;br /&gt;
is valid is to run periodic automatic checks, based on the formulae described&lt;br /&gt;
below.&lt;br /&gt;
&lt;br /&gt;
== Resource utilization and commitment level ==&lt;br /&gt;
&lt;br /&gt;
Several resources of the whole system (such as RAM) are discussed below&lt;br /&gt;
in terms of '''utilization''' and '''commitment level'''.&lt;br /&gt;
&lt;br /&gt;
'''Utilization''' shows the amount of resources consumed by all&lt;br /&gt;
containers at the given time.&lt;br /&gt;
In general, low utilization values mean that the system is under-utilized.&lt;br /&gt;
Often, it means that the system is capable of supporting more containers&lt;br /&gt;
if the existing containers continue to maintain&lt;br /&gt;
the same load and resource consumption level.&lt;br /&gt;
High utilization values (in general, more than &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;)&lt;br /&gt;
mean the the system is overloaded and the service level&lt;br /&gt;
of the containers is degraded.&lt;br /&gt;
&lt;br /&gt;
'''Commitment level''' shows how much resources are “promised” to the existing&lt;br /&gt;
containers. Low commitment levels mean that the system&lt;br /&gt;
is capable of supporting more containers.&lt;br /&gt;
Commitment levels more than &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; mean that the&lt;br /&gt;
containers are promised more resources&lt;br /&gt;
than the system has, and in this case the system is said to be&lt;br /&gt;
overcommitted.&lt;br /&gt;
If the system runs a lot of containers,&lt;br /&gt;
it is usually acceptable to have some overcommitment, because it is unlikely that all containers will request resources at the same time.&lt;br /&gt;
However, higher commitment levels (as discussed below for each resource&lt;br /&gt;
individually) will cause containerss to experience failures to&lt;br /&gt;
allocate and use the resources promised to them.&lt;br /&gt;
&lt;br /&gt;
== “Low memory” (x86_32 specific) ==&lt;br /&gt;
Because of specifics of architecture of Intel's x86 processors, the RAM of the&lt;br /&gt;
computer can't be used uniformly.&lt;br /&gt;
The most important memory area is so called “low memory”, a part of memory&lt;br /&gt;
residing at lower addresses and directly accessible by the kernel.&lt;br /&gt;
For current Linux kernels, the size of low memory area is 832MB&lt;br /&gt;
(or, if the computer has less RAM than 832MB, the size of the RAM).&lt;br /&gt;
&lt;br /&gt;
Note that 64-bit kernels (i.e. x86_64, ia64 etc.) can access all memory&lt;br /&gt;
directly and are not using “low memory” area.&lt;br /&gt;
=== Utilization ===&lt;br /&gt;
The lower bound estimation of low memory utilization is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\displaystyle\sum_{all\ containers}&lt;br /&gt;
        (kmemsize_{cur}+allsocketbuf_{cur})}&lt;br /&gt;
    {0.4\cdot\min(RAM\ size, {\rm 832MB})}\rm,&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
allsocketbuf=tcprcvbuf+tcpsndbuf+dgramrcvbuf+othersockbuf\rm.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utilization of low memory below &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt; is normal.&lt;br /&gt;
Utilization above &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt; is not safe, and utilization above &amp;lt;math&amp;gt;2&amp;lt;/math&amp;gt;&lt;br /&gt;
is dangerous is very likely to cause bad system responsiveness,&lt;br /&gt;
application stalls for seconds or more and termination of some applications.&lt;br /&gt;
&lt;br /&gt;
=== Commitment level ===&lt;br /&gt;
The commitment level can be computed as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\displaystyle\sum_{all\ containers}&lt;br /&gt;
        (kmemsize_{lim}+allsocketbuf_{lim})}&lt;br /&gt;
    {0.4\cdot\min(RAM\ size, {\rm 832MB})}\rm.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Commitment levels below &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt; are normal.&lt;br /&gt;
Levels between &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;1.2&amp;lt;/math&amp;gt; are usually acceptable for systems with about&lt;br /&gt;
100 containers.&lt;br /&gt;
Systems with more containers may have the commitment level&lt;br /&gt;
increased, to about &amp;lt;math&amp;gt;1.5&amp;lt;/math&amp;gt;—&amp;lt;math&amp;gt;2&amp;lt;/math&amp;gt; for 400 containers.&lt;br /&gt;
Higher commitment levels for this resource are not recommended,&lt;br /&gt;
because the consequences of exceeding the low memory capacities&lt;br /&gt;
are severe and affect the whole system and all the containers.&lt;br /&gt;
&lt;br /&gt;
== Total RAM ==&lt;br /&gt;
This subsection discusses usage of the whole RAM and its utilization.&lt;br /&gt;
Usage of swap space and the sum of used RAM and swap space are discussed&lt;br /&gt;
below in subsection [[{{PAGENAME}}#Memory and swap space|Memory and swap space]].&lt;br /&gt;
&lt;br /&gt;
Current version of OpenVZ can't guarantee availability of certain&lt;br /&gt;
amount of memory (in opposite to the sum of memory and swap space),&lt;br /&gt;
so the commitment level is not applicable to the total RAM.&lt;br /&gt;
Such guarantees will be implemented in future versions.&lt;br /&gt;
&lt;br /&gt;
=== Utilization ===&lt;br /&gt;
&lt;br /&gt;
The amount of RAM consumed by all containers can be computed as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\sum_{all\ containers}&lt;br /&gt;
    (physpages_{cur}\cdot4096+kmemsize_{cur}+allsocketbuf_{cur})\rm.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The difference between memory usage shown by &amp;lt;code&amp;gt;free(1)&amp;lt;/code&amp;gt;&lt;br /&gt;
or &amp;lt;code&amp;gt;/proc/meminfo&amp;lt;/code&amp;gt; and the total amount of RAM consumed by&lt;br /&gt;
containers is the memory used by system daemons&lt;br /&gt;
and different caches.&lt;br /&gt;
&lt;br /&gt;
The memory utilization can be computed as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\displaystyle\sum_{all\ containers}&lt;br /&gt;
        (physpages_{cur}\cdot4096+&lt;br /&gt;
         kmemsize_{cur}+allsocketbuf_{cur})}&lt;br /&gt;
    {RAM\ size}\rm.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utilization levels from &amp;lt;math&amp;gt;0.8&amp;lt;/math&amp;gt; to &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt; are normal.&lt;br /&gt;
Lower utilization means that the system is under-utilized, and,&lt;br /&gt;
if other system resources and their commitment levels permit,&lt;br /&gt;
the system can host more containers.&lt;br /&gt;
By the nature of the accounting of &amp;lt;code&amp;gt;physpages&amp;lt;/code&amp;gt; and other parameters,&lt;br /&gt;
total RAM utilization can't be bigger than &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Memory and swap space ==&lt;br /&gt;
The main resource of the computer determining the amount of memory&lt;br /&gt;
applications can use is the sum of RAM and swap sizes.&lt;br /&gt;
If the total size of the used memory exceeds the RAM size,&lt;br /&gt;
Linux kernel moves some data to swap and and loads it back when the&lt;br /&gt;
application needs it.&lt;br /&gt;
More frequently used data tends to stay in RAM, less frequently used&lt;br /&gt;
data spends more time in swap.&lt;br /&gt;
&lt;br /&gt;
Swap-in and swap-out activity reduces the system performance to some extent.&lt;br /&gt;
However, if this activity is not excessive, the performance decrease is not&lt;br /&gt;
very noticeable.  On the other hand, the benefits of using swap space are&lt;br /&gt;
quite big, allowing to increase the number of containers in the&lt;br /&gt;
system about 2 times.&lt;br /&gt;
&lt;br /&gt;
Swap space is essential for handling system load bursts.&lt;br /&gt;
System with enough swap just slows down at high load bursts,&lt;br /&gt;
whereas the system without swap reacts to high load bursts by refusing&lt;br /&gt;
memory allocations (causing applications to refuse to accept clients or&lt;br /&gt;
terminate) and by direct killing of some applications.&lt;br /&gt;
Additionally, the presence of swap space helps the system to better&lt;br /&gt;
balance memory and move data between “low memory” and the rest of the RAM.&lt;br /&gt;
&lt;br /&gt;
In all OpenVZ installations it is strongly recommended&lt;br /&gt;
to have swap of size not less than the RAM size.&lt;br /&gt;
&lt;br /&gt;
Also, it is not recommended to create swap space of the size&lt;br /&gt;
of more than 4 times RAM size because of performance degradation&lt;br /&gt;
related to swap-in and swap-out activity.&lt;br /&gt;
That is, the system should be configured so that&lt;br /&gt;
&amp;lt;math&amp;gt;RAM\ size \le swap\ size \le 4\cdot RAM\ size\rm.&amp;lt;/math&amp;gt;&lt;br /&gt;
The optimal configuration is when swap size is twice more than the RAM size.&lt;br /&gt;
&lt;br /&gt;
=== Utilization ===&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\displaystyle\sum_{all\ containers}&lt;br /&gt;
        (oomguarpages_{cur}\cdot4096+&lt;br /&gt;
         kmemsize_{cur}+allsocketbuf_{cur})}&lt;br /&gt;
    {RAM\ size + swap\ size}\rm.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The normal utilization of memory plus swap ranges between&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{RAM\ size}{RAM\ size + swap\ size}&amp;lt;/math&amp;gt;&lt;br /&gt;
and&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{RAM\ size + \frac12swap\ size}{RAM\ size + swap\ size}.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lower utilization means that the system memory is under-utilized&lt;br /&gt;
at the moment of checking the utilization.&lt;br /&gt;
Higher utilization is likely to cause gradual performance degradation because&lt;br /&gt;
of swap-in and swap-out activity and is a sign of overloading of the system.&lt;br /&gt;
&lt;br /&gt;
=== Commitment level ===&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\displaystyle\sum_{all\ containers}&lt;br /&gt;
        (oomguarpages_{bar}\cdot4096+&lt;br /&gt;
         kmemsize_{lim}+allsocketbuf_{lim})}&lt;br /&gt;
    {RAM\ size + swap\ size}\rm.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The normal commitment level is about &amp;lt;math&amp;gt;0.8&amp;lt;/math&amp;gt;—&amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Commitment levels more than &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt; means that the containers are&lt;br /&gt;
guaranteed more memory than the system has.&lt;br /&gt;
Such overcommitment is strongly not recommended, because in that case&lt;br /&gt;
if all the memory is consumed, random applications, including the ones&lt;br /&gt;
belonging to the host system, may be killed and the system may become&lt;br /&gt;
inaccessible by &amp;lt;code&amp;gt;ssh(1)&amp;lt;/code&amp;gt; and lose other important functionality.&lt;br /&gt;
&lt;br /&gt;
It is better to guarantee containers less and have less commitment&lt;br /&gt;
levels than to accidentally overcommit the system by memory plus swap.&lt;br /&gt;
If the system has spare memory and swap, containers will&lt;br /&gt;
transparently be able to use the memory and swap above their guarantees.&lt;br /&gt;
Guarantees given to containers should not be big, and it is normal&lt;br /&gt;
if memory and swap usage for some containers stays above their&lt;br /&gt;
guarantee.&lt;br /&gt;
It is also normal to give guarantees only to containers with&lt;br /&gt;
preferred service.&lt;br /&gt;
But administrators should not guarantee container more&lt;br /&gt;
than the system actually has.&lt;br /&gt;
&lt;br /&gt;
== Allocated memory ==&lt;br /&gt;
&lt;br /&gt;
This subsection considers standard memory allocations made by&lt;br /&gt;
applications in the container.&lt;br /&gt;
The allocations for each container are controlled by&lt;br /&gt;
two parameters: &amp;lt;code&amp;gt;vmguarpages&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;privvmpages&amp;lt;/code&amp;gt;,&lt;br /&gt;
discussed in sections FIXME.&lt;br /&gt;
&lt;br /&gt;
Allocated memory is a more “virtual” system resource than the RAM or RAM&lt;br /&gt;
plus swap size.&lt;br /&gt;
Applications can allocate memory but start to use it only later, and&lt;br /&gt;
the amount of system's free memory will decrease only at the moment of the&lt;br /&gt;
use.&lt;br /&gt;
The sum of allocated memory size of all containers is an estimation&lt;br /&gt;
of how much physical memory will be used when (and if) all applications&lt;br /&gt;
claim the allocated memory.&lt;br /&gt;
&lt;br /&gt;
=== Utilization ===&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\displaystyle\sum_{all\ containers}&lt;br /&gt;
        (privvmpages_{cur}\cdot4096+&lt;br /&gt;
         kmemsize_{cur}+allsocketbuf_{cur})}&lt;br /&gt;
    {RAM\ size + swap\ size}\rm.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This utilization level is the ratio of the amount of allocated memory&lt;br /&gt;
to the capacity of the system.&lt;br /&gt;
&lt;br /&gt;
Low utilization level means that the system can support more&lt;br /&gt;
containers, if other resources permit.&lt;br /&gt;
High utilization levels may, but doesn't necessarily mean that&lt;br /&gt;
the system is overloaded.&lt;br /&gt;
As it was explaned above, not all applications use all the allocated memory,&lt;br /&gt;
so this utilization level may exceed &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Computing this utilization level is useful for comparing&lt;br /&gt;
it with the commitment level and the level of memory allocation restrictions,&lt;br /&gt;
discussed below, to configure memory allocation restrictions&lt;br /&gt;
for the container.&lt;br /&gt;
&lt;br /&gt;
=== Commitment level ===&lt;br /&gt;
Allocation guarantee commitment level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\displaystyle\sum_{all\ containers}&lt;br /&gt;
        (vmguarpages_{bar}\cdot4096+&lt;br /&gt;
         kmemsize_{lim}+allsocketbuf_{lim})}&lt;br /&gt;
    {RAM\ size + swap\ size}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
is the ratio of the memory space guaranteed to be available for&lt;br /&gt;
allocations to the capacity of the system.&lt;br /&gt;
Similarly to the commitment level of memory plus swap space (as discussed&lt;br /&gt;
in subsection [[{{PAGENAME}}#Memory and swap space|Memory and swap space]]),&lt;br /&gt;
this level should be kept below &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;.&lt;br /&gt;
If the level is above &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;, it significantly increases the chances of&lt;br /&gt;
applications to be killed instead of be notified in case the system&lt;br /&gt;
experiences a memory shortage.&lt;br /&gt;
&lt;br /&gt;
It's better to provide lower guarantees than accidently guarantee more than&lt;br /&gt;
the system has, because containers are allowed to allocated memory&lt;br /&gt;
above their guarantee if the system is not tight on memory.&lt;br /&gt;
It is also normal to give guarantees only to containers with&lt;br /&gt;
preferred service.&lt;br /&gt;
&lt;br /&gt;
== Limiting memory allocations ==&lt;br /&gt;
In addition to providing allocation guarantees, it is possible&lt;br /&gt;
to impose restrictions on the amount of memory allocated by&lt;br /&gt;
containers.&lt;br /&gt;
&lt;br /&gt;
If a system has multiple containers,&lt;br /&gt;
it is important to make sure that for each container&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;privvmpages_{lim}\cdot4096 \le 0.6\cdot {RAM\ size}\rm.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this condition is not satisfied, a single container may easily&lt;br /&gt;
cause an excessive swap-out and very bad performance of the whole system.&lt;br /&gt;
Usually, for each container &amp;lt;code&amp;gt;privvmpages&amp;lt;/code&amp;gt; limitations are&lt;br /&gt;
to values much less than the size of the RAM.&lt;br /&gt;
&lt;br /&gt;
The resource control parameters should be configured in a way,&lt;br /&gt;
so that in case of memory shortage applications are given chance&lt;br /&gt;
to notice the shortage and exit gracefully, instead of being terminated&lt;br /&gt;
by the kernel.&lt;br /&gt;
For this purpose, it is recommended to maintain reasonable&lt;br /&gt;
total level of memory allocation restrictions, computed as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\displaystyle\sum_{all\ containers}&lt;br /&gt;
        (privvmpages_{lim}\cdot4096+&lt;br /&gt;
         kmemsize_{lim}+allsocketbuf_{lim})}&lt;br /&gt;
    {RAM\ size + swap\ size}\rm.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This number shows how much memory applications are allowed to allocate&lt;br /&gt;
in comparison with the capacity of the system.&lt;br /&gt;
&lt;br /&gt;
In practice, a lot of applications do not use the memory very efficiently&lt;br /&gt;
and, sometimes, allocated memory will never be used later.&lt;br /&gt;
For example, Apache Web server at start time it allocates about&lt;br /&gt;
20–30%% more memory that it will ever use.&lt;br /&gt;
Some multi-threaded applications are especially bad at using their memory,&lt;br /&gt;
and their rate of allocated to used memory may happen to be 1000%.&lt;br /&gt;
&lt;br /&gt;
The bigger the level of memory allocation restrictions,&lt;br /&gt;
the more chances are that applications will be killed instead&lt;br /&gt;
of getting an error on next memory allocation in case&lt;br /&gt;
the system experiences memory shortage.&lt;br /&gt;
The levels ranging in &amp;lt;math&amp;gt;1.5&amp;lt;/math&amp;gt;–&amp;lt;math&amp;gt;4&amp;lt;/math&amp;gt; can be considered acceptable.&lt;br /&gt;
Administrators can find experimentally the optimal setting for their load,&lt;br /&gt;
basing on the frequency of messages “Out of Memory: killing process”&lt;br /&gt;
in system logs, saved by &amp;lt;code&amp;gt;klogd(8)&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;syslogd(8)&amp;lt;/code&amp;gt;.&lt;br /&gt;
However, for stability-critical applications, it's better to keep&lt;br /&gt;
the level not exceeding &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Poige</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=Physical_to_container&amp;diff=6262</id>
		<title>Physical to container</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=Physical_to_container&amp;diff=6262"/>
		<updated>2008-08-03T19:24:14Z</updated>

		<summary type="html">&lt;p&gt;Poige: /* PHP not serving pages / random issues */ — 1777 is the right /tmp's permission mode to go with&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A rough description of how to migrate existing physical server into a [[container]].&lt;br /&gt;
&lt;br /&gt;
== Preparing to migrate ==&lt;br /&gt;
&lt;br /&gt;
Stop most services on a machine to be migrated. “Most” means services such as web server, databases and the like — so you will not lose your data. Just leave the bare minimum (including ssh daemon).&lt;br /&gt;
&lt;br /&gt;
To make things easier you may like to first follow the basic instructions elsewhere and create a dummy container based on the same Linux distribution you want to migrate. That way you can take that dummy as a template and then copy to your new migrated container and modify. You can later discard this dummy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prepare a new “empty” container ==&lt;br /&gt;
For OpenVZ this would mean the following (assume you chose CT ID of 123):&lt;br /&gt;
&lt;br /&gt;
 mkdir /vz/root/123 /vz/private/123&lt;br /&gt;
 cat /etc/vz/conf/ve-vps.basic.conf-sample &amp;gt; /etc/vz/conf/123.conf&lt;br /&gt;
&lt;br /&gt;
Hint: Now comes the dummy container handy mentioned above: Simply copy the xxx.conf file of the dummy to your new yyy.conf and modify it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Copying the data ==&lt;br /&gt;
&lt;br /&gt;
Copy all your data from the machine to an OpenVZ box. Say you'll be using container with ID of 123, then all the data should be placed to &amp;lt;code&amp;gt;/vz/private/123/&amp;lt;/code&amp;gt; directory (so there will be directories such as &amp;lt;code&amp;gt;/vz/private/123/bin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;etc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;var&amp;lt;/code&amp;gt; and so on). This could be done in several ways:&lt;br /&gt;
&lt;br /&gt;
=== rsync ===&lt;br /&gt;
rsync example (run from the new HN):&lt;br /&gt;
 rsync -arvpz --numeric-ids --exclude dev --exclude proc --exclude tmp -e &amp;quot;ssh -l root@a.b.c.d&amp;quot; root@a.b.c.d:/ /vz/private/123/&lt;br /&gt;
&lt;br /&gt;
'''Advantage:''' Your system doesn't really go down.&lt;br /&gt;
&lt;br /&gt;
=== Live CD ===&lt;br /&gt;
Another way to do is using a live cd, booting up and use tar to dump the complete disk in a tar you save over the network or on a USB device.&lt;br /&gt;
&lt;br /&gt;
=== Tar ===&lt;br /&gt;
Another approach is using tar and excluding some dirs, you could do it like this:&lt;br /&gt;
&lt;br /&gt;
Create a file /tmp/excludes.excl with these contents:&lt;br /&gt;
 .bash_history&lt;br /&gt;
 /dev/*&lt;br /&gt;
 /mnt/*&lt;br /&gt;
 /tmp/*&lt;br /&gt;
 /proc/*&lt;br /&gt;
 /sys/*&lt;br /&gt;
 /usr/src/*&lt;br /&gt;
&lt;br /&gt;
Then create the tar. But remember, when the system is 'not' using udev, you have to look into /proc/ after creating your container because some devices might not exist. (/dev/ptmx or others)&lt;br /&gt;
&lt;br /&gt;
 # tar cjpf /tmp/mysystem.tar.bz2 / -X /tmp/excludes.excl&lt;br /&gt;
&lt;br /&gt;
Naturally, you can only do this when the critical services (MySQL, apache, ..) are stopped and your /tmp filesystem is big enough to contain your tar.&lt;br /&gt;
&lt;br /&gt;
'''Advantage:''' You don't need to boot from a live cd, so your system doesn't really go down.&lt;br /&gt;
&lt;br /&gt;
== Setting container parameters ==&lt;br /&gt;
&lt;br /&gt;
=== OSTEMPLATE ===&lt;br /&gt;
You have to add &amp;lt;code&amp;gt;OSTEMPLATE=xxx&amp;lt;/code&amp;gt; line to &amp;lt;code&amp;gt;/etc/vz/conf/123.conf&amp;lt;/code&amp;gt; file, where &amp;lt;code&amp;gt;xxx&amp;lt;/code&amp;gt; would be distribution name (like &amp;lt;code&amp;gt;debian-3.0&amp;lt;/code&amp;gt;) for vzctl to be able to make changes specific for this distribution.&lt;br /&gt;
&lt;br /&gt;
If you copied from the dummy container then this step is already accomplished.&lt;br /&gt;
&lt;br /&gt;
=== IP address(es) ===&lt;br /&gt;
Also, you have to supply an IP for a new container:&lt;br /&gt;
 &lt;br /&gt;
 vzctl set 123 --ipadd x.x.x.x --save&lt;br /&gt;
&lt;br /&gt;
=== venet vs. veth ===&lt;br /&gt;
You may use veth interface instead of venet if you need just bring old server up for seamless migration of services.&lt;br /&gt;
It may be nessessary if server you are migrating is badly configured and it is hard to find all hard-coded net interfaces settings and so on.&lt;br /&gt;
&lt;br /&gt;
veth inteface may be included into bridge to allow seamless old installation access.&lt;br /&gt;
&lt;br /&gt;
== Making adjustments ==&lt;br /&gt;
Since container is a bit different to a real physical server, you have to edit some files inside your new container.&lt;br /&gt;
&lt;br /&gt;
=== /etc/inittab ===&lt;br /&gt;
A container does not have real ttys, so you have to disable getty in &amp;lt;code&amp;gt;/etc/inittab&amp;lt;/code&amp;gt; (i. e. &amp;lt;code&amp;gt;/vz/private/123/etc/inittab&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
 sed -i -e '/getty/d' /vz/private/123/etc/inittab&lt;br /&gt;
&lt;br /&gt;
=== /etc/mtab ===&lt;br /&gt;
Link &amp;lt;code&amp;gt;/etc/mtab&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;/proc/mounts&amp;lt;/code&amp;gt;, for &amp;lt;code&amp;gt;df&amp;lt;/code&amp;gt; to work properly:&lt;br /&gt;
&lt;br /&gt;
 rm -f /vz/private/123/etc/mtab&lt;br /&gt;
 ln -s /proc/mounts /vz/private/123/etc/mtab&lt;br /&gt;
&lt;br /&gt;
{{out|The problem here is container's root filesystem (&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;) is mounted not from the container itself, but rather from the host system. That leaves &amp;lt;code&amp;gt;/etc/mtab&amp;lt;/code&amp;gt; in container without a record for &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; being mounted, thus df doesn't show it. By linking &amp;lt;code&amp;gt;/etc/mtab → /proc/mounts&amp;lt;/code&amp;gt; we make sure /etc/mtab shows what is really mounted in a container.&lt;br /&gt;
&lt;br /&gt;
Sure this is not the only way to fix df; you can just manually add a line to &amp;lt;code&amp;gt;/etc/mtab&amp;lt;/code&amp;gt; telling &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; is mounted, and make sure this line will be there after a reboot.}}&lt;br /&gt;
&lt;br /&gt;
=== /etc/fstab ===&lt;br /&gt;
Since you do not have any real disk partitions in a container, /etc/fstab (or most part of it) is no longer needed. Empty it (excluding the line for /dev/pts):&lt;br /&gt;
&lt;br /&gt;
 cp /vz/private/123/etc/fstab /vz/private/123/etc/fstab.old&lt;br /&gt;
 grep devpts /vz/private/123/etc/fstab.old &amp;gt; /vz/private/123/etc/fstab&lt;br /&gt;
&lt;br /&gt;
You can also mount a devpts in a running (but not fully functional) container:&lt;br /&gt;
 vzctl exec 123 mount -t devpts none /dev/pts&lt;br /&gt;
&lt;br /&gt;
=== /dev ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction: static /dev ====&lt;br /&gt;
In order for container to work, some nodes should be present in container's &amp;lt;code&amp;gt;/dev&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;. For modern distributions, udev is taking care of it. For a variety of reasons udev doesn't make much sense in a container, so the best thing to do is to disable udev and create needed device nodes manually.&lt;br /&gt;
&lt;br /&gt;
Note that in some distributions &amp;lt;code&amp;gt;/dev&amp;lt;/code&amp;gt; is mounted on &amp;lt;code&amp;gt;tmpfs&amp;lt;/code&amp;gt; — this will not work in case of static &amp;lt;code&amp;gt;/dev&amp;lt;/code&amp;gt;. So what you need to do is find out where &amp;lt;code&amp;gt;/dev&amp;lt;/code&amp;gt; is being mounted on &amp;lt;code&amp;gt;tmpfs&amp;lt;/code&amp;gt; and remove this. This is highly distribution-dependent; please add info for your distro here.&lt;br /&gt;
&lt;br /&gt;
For Suse 11.0, It is found in /etc/init.d/boot &lt;br /&gt;
&lt;br /&gt;
After you made sure your &amp;lt;code&amp;gt;/dev&amp;lt;/code&amp;gt; is static, populate it with needed device nodes.&lt;br /&gt;
&lt;br /&gt;
Please pay attention to the access permissions of the device files being created: a default file mode for newly created files is affected by &amp;lt;code&amp;gt;umask&amp;lt;/code&amp;gt; ([[w:umask]]). You can use --mode option for &amp;lt;code&amp;gt;mknod&amp;lt;/code&amp;gt; to set the desired permissions.&lt;br /&gt;
&lt;br /&gt;
Hint:&lt;br /&gt;
Now comes the dummy container handy mentioned above: Simply copy the entire /dev directory of the dummy to your new migrated container - worked in my case at least with Debian Etch.&lt;br /&gt;
&lt;br /&gt;
==== tty device nodes ====&lt;br /&gt;
&lt;br /&gt;
In order for vzctl enter to work, a container needs to have some entries in /dev. This can either be /dev/ttyp* and /dev/ptyp*, or /dev/ptmx and mounted /dev/pts.&lt;br /&gt;
&lt;br /&gt;
===== /dev/ptmx =====&lt;br /&gt;
Check that /dev/ptmx exists. If it does not, create with:&lt;br /&gt;
 mknod --mode 666 /vz/private/123/dev/ptmx c 5 2&lt;br /&gt;
&lt;br /&gt;
===== /dev/pts/ =====&lt;br /&gt;
Check that /dev/pts exists. It's a directory, if it does not exist, create with:&lt;br /&gt;
 mkdir /vz/private/123/dev/pts&lt;br /&gt;
&lt;br /&gt;
===== /dev/ttyp* and /dev/ptyp* =====&lt;br /&gt;
Check that /dev/ttyp* and /dev/ptyp* files are there. If not, you have to create those, either by using /sbin/MAKEDEV, or by copying them from the host system.&lt;br /&gt;
&lt;br /&gt;
To copy:&lt;br /&gt;
 cp -a /dev/ttyp* /dev/ptyp* /vz/private/123/dev/&lt;br /&gt;
&lt;br /&gt;
To recreate with MAKEDEV, either&lt;br /&gt;
 /sbin/MAKEDEV -d /vz/private/123/dev ttyp ptyp&lt;br /&gt;
or&lt;br /&gt;
 cd /vz/private/123/dev &amp;amp;&amp;amp; /sbin/MAKEDEV ttyp&lt;br /&gt;
&lt;br /&gt;
====/dev/null====&lt;br /&gt;
Make sure sure /dev/null is not a file or directory; if unsure remove and recreate. If this is not correct sshd will not start correctly.&lt;br /&gt;
 rm -f /vz/private/123/dev/null&lt;br /&gt;
 mknod --mode 666 /vz/private/123/dev/null c 1 3&lt;br /&gt;
&lt;br /&gt;
==== /dev/urandom ====&lt;br /&gt;
Check that /dev/urandom exists. If it does not, create with:&lt;br /&gt;
 mknod --mode 444 /vz/private/123/dev/urandom c 1 9&lt;br /&gt;
&lt;br /&gt;
===/proc===&lt;br /&gt;
Make sure the /proc directory exists:&lt;br /&gt;
 ls -la /vz/private/123/ | grep proc&lt;br /&gt;
&lt;br /&gt;
If it doesn't, create it:&lt;br /&gt;
 mkdir /vz/private/123/proc&lt;br /&gt;
&lt;br /&gt;
=== /etc/init.d services ===&lt;br /&gt;
&lt;br /&gt;
Some system services can (or in some cases should) be disabled. A few good candidates are:&lt;br /&gt;
&lt;br /&gt;
* acpid, amd (not needed)&lt;br /&gt;
* checkfs, checkroot (no filesystem checking is required in container)&lt;br /&gt;
* clock (no clock setting is required/allowed in container)&lt;br /&gt;
* consolefont (container does not have a console)&lt;br /&gt;
* hdparm (container does not have real hard drives)&lt;br /&gt;
* klogd (unless you use iptables to LOG some packets)&lt;br /&gt;
* keymaps (container does not have a real keyboard)&lt;br /&gt;
* kudzu (container does not have real hardware)&lt;br /&gt;
* lm_sensors (container does not have access to hardware sensors)&lt;br /&gt;
* microcodectl (container can not update CPU microcode)&lt;br /&gt;
* netplugd (container does not have real Ethernet device) &lt;br /&gt;
&lt;br /&gt;
To see which services are enabled:&lt;br /&gt;
* RedHat/Fedora/SUSE: &amp;lt;code&amp;gt;/sbin/chkconfig --list&amp;lt;/code&amp;gt;&lt;br /&gt;
* Debian: Use '&amp;lt;code&amp;gt;rcconf&amp;lt;/code&amp;gt;' (ncurses) or &amp;lt;code&amp;gt;update-rc.d&amp;lt;/code&amp;gt;&lt;br /&gt;
( See: http://www.debianadmin.com/manage-linux-init-or-startup-scripts.html )&lt;br /&gt;
* Gentoo: &amp;lt;code&amp;gt;/sbin/rc-update show&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To disable the service:&lt;br /&gt;
* RedHat/Fedora/SUSE: &amp;lt;code&amp;gt;/sbin/chkconfig --del SERVICENAME  &amp;lt;/code&amp;gt;&lt;br /&gt;
* Debian: &amp;lt;code&amp;gt;' update-rc.d -f hdparm remove '&amp;lt;/code&amp;gt;&lt;br /&gt;
* Gentoo: &amp;lt;code&amp;gt;/sbin/rc-update del SERVICENAME&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Disable old network interface ===&lt;br /&gt;
You should disable your old physical network interface from starting at boot time. This is distribution-dependant.&lt;br /&gt;
&lt;br /&gt;
==== Fedora/CentOS/Red Hat ====&lt;br /&gt;
Edit /vz/private/{CTID}/etc/sysconfig/network-scripts/ifcfg-eth''x''&lt;br /&gt;
&lt;br /&gt;
Make the following look like this:&lt;br /&gt;
 ONBOOT=no&lt;br /&gt;
&lt;br /&gt;
==== Debian/Ubuntu ====&lt;br /&gt;
Edit /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/network/interfaces -- configuration file for ifup(8),  ifdown(8)&lt;br /&gt;
&lt;br /&gt;
# The loopback interface&lt;br /&gt;
# automatically added when upgrading&lt;br /&gt;
auto lo eth0&lt;br /&gt;
iface lo inet loopback&lt;br /&gt;
&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
       address 10.0.0.4&lt;br /&gt;
       netmask 255.0.0.0&lt;br /&gt;
       network 10.0.0.0&lt;br /&gt;
       broadcast 10.0.0.255&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can either comment out the eth* interface stanza(s), or take it out of the &amp;quot;auto&amp;quot; line(s).&lt;br /&gt;
&lt;br /&gt;
==== openSUSE/SLES ====&lt;br /&gt;
&lt;br /&gt;
Use Yast.&lt;br /&gt;
&lt;br /&gt;
=== Other adjustments ===&lt;br /&gt;
There might be other adjustments needed. Please add those here (just above this section) if you have more info.&lt;br /&gt;
&lt;br /&gt;
== Starting a new container ==&lt;br /&gt;
&lt;br /&gt;
Try to start your new container:&lt;br /&gt;
 &lt;br /&gt;
 vzctl start 123&lt;br /&gt;
&lt;br /&gt;
Now check that everything works fine. If not, see [[#Troubleshooting]] below.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
===PHP not serving pages / random issues===&lt;br /&gt;
&lt;br /&gt;
Make sure that /tmp and /var/tmp are created if you rsynced over your data and that they have proper permissions&lt;br /&gt;
&lt;br /&gt;
 mkdir tmp&lt;br /&gt;
 chmod 1777 tmp&lt;br /&gt;
&lt;br /&gt;
=== Can't enter container ===&lt;br /&gt;
&lt;br /&gt;
If you can not enter your container (using &amp;lt;code&amp;gt;vzctl enter&amp;lt;/code&amp;gt;), you should be able to at least execute commands in it.&lt;br /&gt;
&lt;br /&gt;
First, see the [[#tty device nodes]] section above.&lt;br /&gt;
&lt;br /&gt;
Next, check if devpts is mounted:&lt;br /&gt;
 vzctl exec 123 mount | grep pts&lt;br /&gt;
&lt;br /&gt;
If it is not mounted, mount it:&lt;br /&gt;
 vzctl exec 123 mount -t devpts none /dev/pts&lt;br /&gt;
&lt;br /&gt;
Then, add the appropriate mount command to container's startup scripts. On some distros, you need to have the appropriate line in container's /etc/fstab.&lt;br /&gt;
&lt;br /&gt;
In Fedora, try commenting out any '''udev''' entries in /vz/private/{CTID}/etc/rc.sysinit&lt;br /&gt;
 vi /vz/private/{CTID}/etc/rc.sysinit&lt;br /&gt;
Locate the '''udev''' entry from within vim&lt;br /&gt;
 /udev&lt;br /&gt;
Then comment the line similar to this:&lt;br /&gt;
 #[ -x /sbin/start_udev ] &amp;amp;&amp;amp; /sbin/start_udev&lt;br /&gt;
&lt;br /&gt;
=== Other problems ===&lt;br /&gt;
If anything goes wrong, try to find out why and fix. If you have enough Linux experience, it can be handled. Also check out IRC and please report back on this page.&lt;br /&gt;
&lt;br /&gt;
== Success stories ==&lt;br /&gt;
{{Note|please add your line to the bottom of this list, and do not forget to sign it using &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;--~~~~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
* Debian 3.1 Sarge with MySQL, apache2, PowerDNS --[[User:Stoffell|stoffell]] 08:41, 8 February 2007 (EST)&lt;br /&gt;
* Red Hat 7.2 with MySQL 3.23, apache, Chilisoft --[[User:Stoffell|stoffell]] 13:26, 9 February 2007 (EST)&lt;br /&gt;
* Gentoo with Courier, Postfix, MySQL, Apache2 --[[User:bfrackie|bfrackie]] 19:00, 18 March 2007 (EST)&lt;br /&gt;
* AltLinux Master with qmail, MySQL, Apache, etc - to Debian/testing with OpenVZ --[[User:alexkuklin|alexkuklin]] 16:16, 23 March 2007 (EST)&lt;br /&gt;
* Centos 4.4 with apache2, SVN, TRAC, etc. --[[User:bitherder|bitherder]] 23:38, 26 February 2008 (EST) &lt;br /&gt;
* Centos 4.6 with apache2, Tomcat 5.0.x, postgresql, etc on CentOS 5.1 64bit Host --[[User:laslos|laslos]] 17:35, 10 March 2008 (EST)&lt;br /&gt;
* Debian Etch with apache2 etc... on CentOS 4.6 Host --[[User:laslos|laslos]] 19:46, 10 March 2008 (EST)&lt;br /&gt;
* Debian 1:3.3.5-13 with apache2, PHP, etc. --[[User:Spawrks|spawrks]] 23:36, 10 April 2008 (EST)&lt;br /&gt;
* Debian Etch with apache2, MySQL, etc. --[[User:Zhafrance|zhafrance]] 16:29, 20 April 2008 (EST)&lt;br /&gt;
* Debian Etch i386 with apache2, MySQL, etc. --[[User:geejay|geejay]] 17:29, 26 May 2008 (GMT)&lt;br /&gt;
* Centos 4.6 with apache2, MySQL, Qmail etc. --[[User:Bharathchari|Bharathchari]] 08:06, 13 June 2008 (EDT)&lt;br /&gt;
* Centos 4.6 with cPanel/WHM (Apache2, Mysql, Exim, etc) --[[User:Zccopwrx|Zccopwrx]] 08:16, 30 July 2008 (EDT)&lt;br /&gt;
[[Category:HOWTO]]&lt;/div&gt;</summary>
		<author><name>Poige</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=Virtual_network_device&amp;diff=6261</id>
		<title>Virtual network device</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=Virtual_network_device&amp;diff=6261"/>
		<updated>2008-08-03T19:19:12Z</updated>

		<summary type="html">&lt;p&gt;Poige: typo fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Virtual network device (&amp;lt;code&amp;gt;venet&amp;lt;/code&amp;gt;) is the default network device for a [[container]]. This network device looks like a peer-to-peer connection between [[container]] and the [[CT0|host system]]. It does packet switching based on IP header. This is a default network device for container (an alternative is [[veth]] device).&lt;br /&gt;
&lt;br /&gt;
Venet device is created automatically on [[container]] start. Vzctl scripts set up an appropriate IP address and other settings on venet inside a container.&lt;br /&gt;
&lt;br /&gt;
==  Usage ==&lt;br /&gt;
&lt;br /&gt;
== Kernel module ==&lt;br /&gt;
First of all, check that &amp;lt;code&amp;gt;vznetdev&amp;lt;/code&amp;gt; module is loaded:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# lsmod | grep vznetdev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If it is not, load the module:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# modprobe vznetdev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want to check /etc/init.d/vz script to make sure the module gets loaded during startup.&lt;br /&gt;
&lt;br /&gt;
=== Adding IP address to a container ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vzctl set &amp;lt;CTID&amp;gt; --ipadd &amp;lt;IP1&amp;gt;[,&amp;lt;IP2&amp;gt;,...] [--save]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|This option is incremental, so IP addresses are added to already existing ones.}}&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vzctl set 101 --ipadd 10.0.0.1 --save&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
After executing this command IP address 10.0.0.1 will be added to container 101 and IP configuration will be saved to a container configuration file.&lt;br /&gt;
&lt;br /&gt;
=== Removing IP address from a container ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vzctl set &amp;lt;CTID&amp;gt; --ipdel &amp;lt;IP1&amp;gt;[,&amp;lt;IP2&amp;gt;,...] [--save]&lt;br /&gt;
vzctl set &amp;lt;CTID&amp;gt; --ipdel all [--save]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vzctl set 101 --ipdel 10.0.0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
After executing this command IP address 10.0.0.1 will be removed from container 101, but IP configuration will not be changed in container config file. And after container reboot IP address 10.0.0.1 will be assigned to this container again.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Veth]]&lt;br /&gt;
* [[Differences between venet and veth]]&lt;br /&gt;
&lt;br /&gt;
[[Category: Networking]]&lt;br /&gt;
[[Category: HOWTO]]&lt;/div&gt;</summary>
		<author><name>Poige</name></author>
		
	</entry>
</feed>