FastNetMon

Показаны сообщения с ярлыком OpenVZ. Показать все сообщения
Показаны сообщения с ярлыком OpenVZ. Показать все сообщения

вторник, 16 октября 2012 г.

Конфликт зависимостей при установке vzctl на CentOS 5

Текст ошибки:

yum upgrade vzctl
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.plusline.de
 * epel: mirror.kiewel-online.ch
 * openvz-kernel-rhel5: mirror.softaculous.com
 * openvz-utils: mirror.softaculous.com
 * updates: ftp.plusline.de
Setting up Upgrade Process
Resolving Dependencies
--> Running transaction check
---> Package vzctl.x86_64 0:4.0-1 set to be updated
--> Processing Dependency: vzctl-core = 4.0-1 for package: vzctl
--> Processing Dependency: vzquota >= 3.1 for package: vzctl
--> Processing Dependency: libcgroup.so.1()(64bit) for package: vzctl
--> Processing Dependency: libvzctl-4.0.so()(64bit) for package: vzctl
--> Running transaction check
---> Package libcgroup.x86_64 0:0.38-1 set to be updated
---> Package vzctl-core.x86_64 0:4.0-1 set to be updated
---> Package vzquota.x86_64 0:3.1-1 set to be updated
--> Processing Conflict: vzctl conflicts ploop-lib < 1.5-1
--> Restarting Dependency Resolution with new changes.
--> Running transaction check
--> Processing Dependency: ploop-lib = 1.4 for package: ploop
---> Package ploop-lib.x86_64 0:1.5-1 set to be updated
--> Running transaction check
---> Package ploop.x86_64 0:1.5-1 set to be updated
--> Processing Conflict: ploop-lib conflicts vzkernel < 2.6.32-042stab061.1
--> Finished Dependency Resolution
ploop-lib-1.5-1.x86_64 from openvz-utils has depsolving problems
  --> ploop-lib conflicts with ovzkernel
Error: ploop-lib conflicts with ovzkernel
 You could try using --skip-broken to work around the problem
 You could try running: package-cleanup --problems
                        package-cleanup --dupes
                        rpm -Va --nofiles --nodigest
Суть такова, что vzctl-4 не имеет зависимостей к ploop, но обновить его не так тривиально.

По информации от сотрудников Parallels (Кирилл Колышкин), нужно сделать следующее:
rpm -e --nodeps ploop ploop-lib
yum upgrade vzctl -y
Либо в случае возникновления проблемы , описанной: http://phpsuxx.blogspot.ru/2012/11/ploop-lib-14-1.html (error: "ploop-lib" specifies multiple packages, ошибка: "ploop-lib-1.4-1" задает несколько пакетов)
rpm -e --nodeps ploop-lib.x86_64
rpm -e --nodeps ploop-lib.i386  
rpm -e --nodeps ploop 
yum upgrade vzctl -y

Первоисточник: http://bugzilla.openvz.org/show_bug.cgi?id=2387 

воскресенье, 15 апреля 2012 г.

Новая супер крутая фича у OpenVZ - ploop, файловая система в образе, а не в директории

Рекомендую для прочтения в целях введения в вопрос: http://openvz.livejournal.com/40830.html, кроме этого, есть чудесная презентация от ребят из Parallels: http://fastvps.googlecode.com/files/Ct_in_a_file.pdf

Из отрицательных черт фичи вижу - необходимость поддержки файловой системы (пока только ext4) внутри контейнера (fsck и co.), а также бОльше потребление места на диске. Изменение размера осуществоляется посредством стандартных механизмов для ext4.

Так что фича вполне годная, но нельзя сказать, что нужная всем.

Использование на практике: http://wiki.openvz.org/Ploop/Getting_started

понедельник, 5 марта 2012 г.

О стабильности OpenVZ на 2.6.32 ядрах (RHEL6/CentOS6)

Дорогие друзья, администраторы!

Ядра OpenVZ для RHEL6 (и, как следствие, CentOS 6, SL 6), заявленные как стабильные еще чуть ли не 3 месяца назад такими НЕ ЯВЛЯЮТСЯ даже близко. Если это не альфа, то бета и крайне сырая. В бигзилле OpenVZ вагон критичных багов, приводящих чуть ли не к ежедневной перезагрузке нод, на форуме также очень много жалоб на стабильность. Не говоря уже о том, что на практике новые ядра очень легко уронить одним неловким движением (например, рестартом нескольких контейнеров). Иными словами, все, кто замыслил переход должны выждать минимум 3-6 месяцев до внедрения RHEL6 ядер.

Критика приветствуется, все выше сказанное на основании опыта эксплуатации RHEL6 ядер начиная с самого первого стабильного на ферме из нескольких десятков идентичных серверов.

Update: Сейчас с ядрами все стало окей :)

воскресенье, 29 января 2012 г.

OpenVZ + vSWAP = баги!

Очень неприятный баг, по определенным причинам нам нужно, чтобы контейнеры создавались с basic шаблоном (CONFIGFILE="basic"), но это не получается, так как при запуске /etc/init.d/vz он стирает и вписывается туда vswap-256mb.

[root@ovz1 ~]# cat /etc/vz/vz.conf| grep CONFIG
CONFIGFILE="basic"
[root@ovz1 ~]# /etc/init.d/vz restart
Bringing down interface venet0: [ OK ]
Stopping OpenVZ: [ OK ]
Starting OpenVZ: [ OK ]
Bringing up interface venet0: [ OK ]
Set CONFIGFILE="vswap-256m" in /etc/vz/vz.conf [ВНИМАНИЕ!]
[root@ovz1 ~]# cat /etc/vz/vz.conf| grep CONFIG
CONFIGFILE="vswap-256m"

Фикса нет!

update: фикс от меня в файле /etc/init.d/vz.

Заменяем:
if test $kv -ge 42; then
if grep -q $cfg_old $VZCONF; then
sed -i "s/${cfg_old}/${cfg_new}/" $VZCONF
print_warning "Set $cfg_new in $VZCONF"
fi
fi

На:
if test $kv -ge 42; then
# TODO: PATHED BY FastVPS
# old if grep -q $cfg_old $VZCONF; then
grep -q $cfg_old $VZCONF

# if we not found old CONFIGFILE name, set vswap
if [ $? -ne 0 ]; then
sed -i "s/${cfg_old}/${cfg_new}/" $VZCONF
print_warning "Set $cfg_new in $VZCONF"
fi
fi

После этого сброса не будет.

Bugzilla OpenVZ: http://bugzilla.openvz.org/show_bug.cgi?id=2169

понедельник, 26 декабря 2011 г.

CentOS 6 + OpenVZ = ужас с зависимостями при обновлении

Итак, имеется совершенно чистый CentOS 6 (без каких-либо репозиториев кроме стандартных) с установленным OpenVZ ядром. А также желание сделать: yum update (а также наличие обычных ядер в грядущем апдейте).

Это желание разбивается вдребезги конфликтом зависимостей kernel-firmware :
Error: Package: kernel-2.6.32-220.2.1.el6.x86_64 (updates)
Requires: kernel-firmware >= 2.6.32-220.2.1.el6
Installed: vzkernel-firmware-2.6.32-042stab044.11.noarch (@openvz-kernel-rhel6)
kernel-firmware = 2.6.32-131.21.1.el6
Available: kernel-firmware-2.6.32-220.el6.noarch (base)
kernel-firmware = 2.6.32-220.el6
Available: kernel-firmware-2.6.32-220.2.1.el6.noarch (updates)
kernel-firmware = 2.6.32-220.2.1.el6
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest


Если обновление ядра не критично, то можно забить и игнорировать ошибки:
yum update --skip-broken

А что делать если критично? Фиксить!

Итак, посмотрим, какие версии пакета firmware у нас есть:
rpm -qa |grep kernel-firm
vzkernel-firmware-2.6.32-042stab044.11.noarch

Попробуем его снести:
yum remove vzkernel-firmware-2.6.32-042stab044.11.noarch
Loaded plugins: fastestmirror
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package vzkernel-firmware.noarch 0:2.6.32-042stab044.11 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

=========================================================================================================================================================================================
Package Arch Version Repository Size
=========================================================================================================================================================================================
Removing:
vzkernel-firmware noarch 2.6.32-042stab044.11 @openvz-kernel-rhel6 3.9 M

Transaction Summary
=========================================================================================================================================================================================
Remove 1 Package(s)

Installed size: 3.9 M
Is this ok [y/N]: Y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Erasing : vzkernel-firmware-2.6.32-042stab044.11.noarch 1/1

Removed:
vzkernel-firmware.noarch 0:2.6.32-042stab044.11

Complete!

Пробуем снова обновиться:
yum update
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centosg4.centos.org
* extras: centosg4.centos.org
* openvz-kernel-rhel6: mirror.softaculous.com
* openvz-utils: mirror.softaculous.com
* updates: mirror.nsc.liu.se
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package kernel.x86_64 0:2.6.32-220.2.1.el6 will be installed
--> Processing Dependency: kernel-firmware >= 2.6.32-220.2.1.el6 for package: kernel-2.6.32-220.2.1.el6.x86_64
Package kernel-firmware is obsoleted by vzkernel-firmware, but obsoleting package does not provide for requirements
--> Finished Dependency Resolution
Error: Package: kernel-2.6.32-220.2.1.el6.x86_64 (updates)
Requires: kernel-firmware >= 2.6.32-220.2.1.el6
Available: kernel-firmware-2.6.32-220.el6.noarch (base)
kernel-firmware = 2.6.32-220.el6
Available: kernel-firmware-2.6.32-220.2.1.el6.noarch (updates)
kernel-firmware = 2.6.32-220.2.1.el6
Available: vzkernel-firmware-2.6.32-042stab044.11.noarch (openvz-kernel-rhel6)
kernel-firmware = 2.6.32-131.21.1.el6
You could try using --skip-broken to work around the problem
** Found 2 pre-existing rpmdb problem(s), 'yum check' output follows:
kernel-2.6.32-131.17.1.el6.x86_64 has missing requires of kernel-firmware >= ('0', '2.6.32', '131.17.1.el6')
vzkernel-2.6.32-042stab044.11.x86_64 has missing requires of kernel-firmware >= ('0', '2.6.32', '131.21.1.el6')

Увы, не помогло и появились ошибки, так как данный пакет нужен системе и от него зависит пара пакетов.

Ставим пакет обратно:
yum install -y vzkernel-firmware

отключаем rhel-6 kernel репо (напротив rhel6 enabled=1 меняем на enabled=0):
vi /etc/yum.repos.d/openvz.repo

Пробуем обновить:
yum update
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centosg4.centos.org
* extras: centosg4.centos.org
* openvz-utils: mirror.softaculous.com
* updates: mirror.nsc.liu.se
openvz-utils | 1.2 kB 00:00
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package kernel.x86_64 0:2.6.32-220.2.1.el6 will be installed
--> Processing Dependency: kernel-firmware >= 2.6.32-220.2.1.el6 for package: kernel-2.6.32-220.2.1.el6.x86_64
--> Running transaction check
---> Package kernel-firmware.noarch 0:2.6.32-220.2.1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=========================================================================================================================================================================================
Package Arch Version Repository Size
=========================================================================================================================================================================================
Installing:
kernel x86_64 2.6.32-220.2.1.el6 updates 24 M
Installing for dependencies:
kernel-firmware noarch 2.6.32-220.2.1.el6 updates 6.2 M

Transaction Summary
=========================================================================================================================================================================================
Install 2 Package(s)

Total download size: 31 M
Installed size: 120 M
Is this ok [y/N]: Y
Downloading Packages:
http://mirror.nsc.liu.se/CentOS/6.2/updates/x86_64/Packages/kernel-2.6.32-220.2.1.el6.x86_64.rpm: [Errno 14] PYCURL ERROR 7 - "couldn't connect to host"
Trying other mirror.
(1/2): kernel-2.6.32-220.2.1.el6.x86_64.rpm | 24 MB 00:05
(2/2): kernel-firmware-2.6.32-220.2.1.el6.noarch.rpm | 6.2 MB 00:01
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 1.1 MB/s | 31 MB 00:27
Running rpm_check_debug
Running Transaction Test


Transaction Check Error:
file /lib/firmware/3com/3C359.bin from install of kernel-firmware-2.6.32-220.2.1.el6.noarch conflicts with file from package vzkernel-firmware-2.6.32-042stab044.11.noarch
file /lib/firmware/3com/typhoon.bin from install of kernel-firmware-2.6.32-220.2.1.el6.noarch conflicts with file from package vzkernel-firmware-2.6.32-042stab044.11.noarch
file /lib/firmware/acenic/tg1.bin from install of kernel-firmware-2.6.32-220.2.1.el6.noarch conflicts with file from package vzkernel-firmware-2.6.32-042stab044.11.noarch
file /lib/firmware/acenic/tg2.bin from install of kernel-firmware-2.6.32-220.2.1.el6.noarch conflicts with file from package vzkernel-firmware-2.6.32-042stab044.11.noarch
file /lib/firmware/adaptec/starfire_rx.bin from install of kernel-firmware-2.6.32-220.2.1.el6.noarch conflicts with file from package vzkernel-firmware-2.6.32-042stab044.11.noarch
file /lib/firmware/adaptec/starfire_tx.bin from install of kernel-firmware-2.6.32-220.2.1.el6.noarch conflicts with file from package vzkernel-firmware-2.6.32-042stab044.11.noarch
file /lib/firmware/advansys/3550.bin from install of kernel-firmware-2.6.32-220.2.1.el6.noarch conflicts with file from package vzkernel-firmware-2.6.32-042stab044.11.noarch
file /lib/firmware/advansys/38C0800.bin from install of kernel-firmware-2.6.32-220.2.1.el6.noarch conflicts with file from package vzkernel-firmware-2.6.32-042stab044.11.noarch
file /lib/firmware/advansys/38C1600.bin from install of kernel-firmware-2.6.32-220.2.1.el6.noarch conflicts with file from package vzkernel-firmware-2.6.32-042stab044.11.noarch
file /lib/firmware/advansys/mcode.bin from install of kernel-firmware-2.6.32-220.2.1.el6.noarch conflicts with file from package vzkernel-firmware-2.6.32-042stab044.11.noarch
file /lib/firmware/atmsar11.fw from install of kernel-firmware-2.6.32-220.2.1.el6.noarch conflicts with file from package vzkernel-firmware-2.6.32-042stab044.11.noarch
Error Summary
-------------

Снова сносим нафиг пакет:
yum remove vzkernel-firmware-2.6.32-042stab044.11.noarch

И успешно выполняем апдейт:
yum update
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centosg4.centos.org
* extras: centosg4.centos.org
* openvz-utils: mirror.softaculous.com
* updates: mirror.nsc.liu.se
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package kernel.x86_64 0:2.6.32-220.2.1.el6 will be installed
--> Processing Dependency: kernel-firmware >= 2.6.32-220.2.1.el6 for package: kernel-2.6.32-220.2.1.el6.x86_64
--> Running transaction check
---> Package kernel-firmware.noarch 0:2.6.32-220.2.1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=========================================================================================================================================================================================
Package Arch Version Repository Size
=========================================================================================================================================================================================
Installing:
kernel x86_64 2.6.32-220.2.1.el6 updates 24 M
Installing for dependencies:
kernel-firmware noarch 2.6.32-220.2.1.el6 updates 6.2 M

Transaction Summary
=========================================================================================================================================================================================
Install 2 Package(s)

Total size: 31 M
Installed size: 120 M
Is this ok [y/N]: Y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : kernel-firmware-2.6.32-220.2.1.el6.noarch 1/2
Installing : kernel-2.6.32-220.2.1.el6.x86_64 2/2



Installed:
kernel.x86_64 0:2.6.32-220.2.1.el6

Dependency Installed:
kernel-firmware.noarch 0:2.6.32-220.2.1.el6

Complete!

После этого, снова включаем репозиторий openvz (enabled=1) и еще раз обновляем систему:
yum update
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centosg4.centos.org
* extras: centosg4.centos.org
* openvz-kernel-rhel6: mirror.softaculous.com
* openvz-utils: mirror.softaculous.com
* updates: mirror.nsc.liu.se
openvz-kernel-rhel6 | 951 B 00:00
openvz-utils | 1.2 kB 00:00
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package kernel-firmware.noarch 0:2.6.32-220.2.1.el6 will be obsoleted
---> Package vzkernel-firmware.noarch 0:2.6.32-042stab044.11 will be obsoleting
--> Finished Dependency Resolution

Dependencies Resolved

=========================================================================================================================================================================================
Package Arch Version Repository Size
=========================================================================================================================================================================================
Installing:
vzkernel-firmware noarch 2.6.32-042stab044.11 openvz-kernel-rhel6 2.9 M
replacing kernel-firmware.noarch 2.6.32-220.2.1.el6

Transaction Summary
=========================================================================================================================================================================================
Install 1 Package(s)

Total download size: 2.9 M
Is this ok [y/N]: Y
Downloading Packages:
vzkernel-firmware-2.6.32-042stab044.11.noarch.rpm | 2.9 MB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : vzkernel-firmware-2.6.32-042stab044.11.noarch 1/2
Erasing : kernel-firmware-2.6.32-220.2.1.el6.noarch 2/2

Installed:
vzkernel-firmware.noarch 0:2.6.32-042stab044.11

Replaced:
kernel-firmware.noarch 0:2.6.32-220.2.1.el6

Complete!


Итого, kernel-firmware был почему-то замещен vzkernel-firmware. Скорее всего, при следующем апдейте ядра система вылетит снова. И баг, скорее всего, в OpenVZ репо, оно почему-то замещает собой стандартный пакет.

Итого, план фикса следующий:
1) Отключаем репо openvz (enabled=0): vi /etc/yum.repos.d/openvz.repo
2) Удаляем пакет: yum remove -y vzkernel-firmware
3) Обновляемся: yum update -y
4) Включаем репо openvz: vi /etc/yum.repos.d/openvz.repo
5) Обновляем систему (при этом, vzkernel-firmware будет установлен вновь): yum update -y
6) Устанавливаем новое ядро стандартным: vim /boot/grub/grub.conf
7) Радуемся :)

Описание бага в багзилле OpenVZ: http://bugzilla.openvz.org/show_bug.cgi?id=2129

понедельник, 21 ноября 2011 г.

VDSManager & CentOS 6 = все очень странно работает

У нас чистый CentOS 6 с VDSManager создает контейнеры с некорректными настройками памяти - мы задаем гигабайт, два, пять, а памяти все равно 256 мб. А виной тому, что неявно используется не шаблон ve-basic, а шаблон ve-vswap:
ls /etc/vz/conf/ | grep vswap
ve-vswap-1024m.conf-sample
ve-vswap-256m.conf-sample
ve-vswap-512m.conf-sample

Который в принципе не совместим со старым типом к настроек UBC. Больше информации можете прочесть либо у меня в блоге http://phpsuxx.blogspot.com/2011/11/ubc-openvz-rhelcentos-6.html либо в оф источнике: http://wiki.openvz.org/VSwap

Порылись в проблеме поглубже, выяснилось следующее - так ведет себя новый vzctl, я сейчас просто руками создавал VPS и он сам вкатил щаблон ve-swap:
strace -o trace -f /usr/sbin/vzctl create 56131 --ostemplate debian-6.0-x86_64 --ipadd 176.9.219.67 --hostname test.ru

Лог стрейса внизу:
26170 link("/vz/lock/56131.lckqsZEVT", "/vz/lock/56131.lck") = 0
26170 unlink("/vz/lock/56131.lckqsZEVT") = 0
26170 rt_sigaction(SIGINT, {SIG_IGN, [], SA_RESTORER, 0x7fed4b433980}, NULL, 8) = 0
26170 stat("/etc/vz/conf/56131.conf", 0x7fffb7f445b0) = -1 ENOENT (No such file or directory)
26170 stat("/etc/vz/conf/ve-vswap-256m.conf-sample", {st_mode=S_IFREG|0644, st_size=1581, ...}) = 0
26170 stat("/etc/vz/conf/ve-vswap-256m.conf-sample", {st_mode=S_IFREG|0644, st_size=1581, ...}) = 0
26170 open("/etc/vz/conf/ve-vswap-256m.conf-sample", O_RDONLY) = 5
26170 open("/etc/vz/conf/56131.conf", O_RDWR|O_CREAT, 0100644) = 6
26170 read(5, "# Copyright (C) 2000-2011, Para"..., 4096) = 1581
26170 write(6, "# Copyright (C) 2000-2011, Para"..., 1581) = 1581
26170 read(5, "", 4096) = 0
26170 close(5) = 0
26170 close(6) = 0
26170 open("/etc/vz/conf/ve-vswap-256m.conf-sample", O_RDONLY) = 5
26170 stat("/etc/vz/conf/ve-vswap-256m.conf-sample", {st_mode=S_IFREG|0644, st_size=1581, ...}) = 0
26170 fstat(5, {st_mode=S_IFREG|0644, st_size=1581, ...}) = 0
26170 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fed4bdb3000
26170 read(5, "# Copyright (C) 2000-2011, Para"..., 4096) = 1581
26170 read(5, "", 4096) = 0

Иными словами, ранее он молча подозревал, что используется шаблон ve-basic, но с новой версии он юзает ve-swap, который не совместим со старым вариантом настроек UBC.

Вот так.. в итоге - без напильника ничего не работает вообще.

Итого фикс:
/etc/vz/vz.conf
@@ -33,7 +33,7 @@
## Defaults for containers
VE_ROOT=/vz/root/$VEID
VE_PRIVATE=/vz/private/$VEID
-CONFIGFILE="vswap-256m"
+CONFIGFILE="basic"
DEF_OSTEMPLATE="centos-5"

пятница, 18 ноября 2011 г.

Использование замены UBC в OpenVZ для RHEL/CentOS 6

В версии OpenVZ для 2.6.32 есть два варианта ограничения ресурсов контейнера, старый классический UBC и новый - vSwap.

Для создания VPS с классическими лимитами можно использовать команду:
vzctl create 101 --ostemplate debian-5-x86_64 --config basic --hostname testvps.fastvps.ru

UB параметры контейнера будут иметь следующий вид:
cat /proc/user_beancounters
Version: 2.5
uid resource held maxheld barrier limit failcnt
101: kmemsize 2737572 4407296 14372700 14790164 0
lockedpages 0 0 2048 2048 0
privvmpages 1378 14003 65536 69632 0
shmpages 0 0 21504 21504 0
dummy 0 0 0 0 0
numproc 10 36 240 240 0
physpages 5174 10811 0 9223372036854775807 0
vmguarpages 0 0 33792 9223372036854775807 0
oomguarpages 914 914 26112 9223372036854775807 0
numtcpsock 4 4 360 360 0
numflock 1 4 188 206 0
numpty 0 0 16 16 0
numsiginfo 1 18 256 256 0
tcpsndbuf 69760 69760 1720320 2703360 0
tcprcvbuf 65536 65536 1720320 2703360 0
othersockbuf 6936 8456 1126080 2097152 0
dgramrcvbuf 0 1288 262144 262144 0
numothersock 32 33 360 360 0
dcachesize 1383859 1440285 3409920 3624960 0
numfile 127 245 9312 9312 0
dummy 0 0 0 0 0
dummy 0 0 0 0 0
dummy 0 0 0 0 0
numiptent 20 20 128 128 0

Конфиг контейнера тоже будет выглядить как и раньше:
cat /etc/vz/conf/101.conf
# Copyright (C) 2000-2011, Parallels, Inc. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#

# UBC parameters (in form of barrier:limit)
KMEMSIZE="14372700:14790164"
LOCKEDPAGES="2048:2048"
PRIVVMPAGES="65536:69632"
SHMPAGES="21504:21504"
NUMPROC="240:240"
PHYSPAGES="0:unlimited"
VMGUARPAGES="33792:unlimited"
OOMGUARPAGES="26112:unlimited"
NUMTCPSOCK="360:360"
NUMFLOCK="188:206"
NUMPTY="16:16"
NUMSIGINFO="256:256"
TCPSNDBUF="1720320:2703360"
TCPRCVBUF="1720320:2703360"
OTHERSOCKBUF="1126080:2097152"
DGRAMRCVBUF="262144:262144"
NUMOTHERSOCK="360:360"
DCACHESIZE="3409920:3624960"
NUMFILE="9312:9312"
AVNUMPROC="180:180"
NUMIPTENT="128:128"

# Disk quota parameters (in form of softlimit:hardlimit)
DISKSPACE="2G:2.2G"
DISKINODES="200000:220000"
QUOTATIME="0"

# CPU fair scheduler parameter
CPUUNITS="1000"
HOSTNAME="testvps.fastvps.ee"
VE_ROOT="/vz/root/$VEID"
VE_PRIVATE="/vz/private/$VEID"
OSTEMPLATE="debian-5.0-x86_64"
ORIGIN_SAMPLE="basic"
IP_ADDRESS="176.9.54.124"


vzctl create 101 --ostemplate debian-5-x86_64 --config vswap-256m --hostname testvps.fastvps.ru

В итоге получим следующий вид параметров BC:
cat /proc/user_beancounters
Version: 2.5
uid resource held maxheld barrier limit failcnt
101: kmemsize 3369468 4431872 121634816 134217728 0
lockedpages 0 0 32768 32768 0
privvmpages 2461 14151 9223372036854775807 9223372036854775807 0
shmpages 18 354 9223372036854775807 9223372036854775807 0
dummy 0 0 0 0 0
numproc 10 33 9223372036854775807 9223372036854775807 0
physpages 5989 10780 0 65536 0
vmguarpages 0 0 0 9223372036854775807 0
oomguarpages 1145 1145 0 9223372036854775807 0
numtcpsock 5 6 9223372036854775807 9223372036854775807 0
numflock 2 4 9223372036854775807 9223372036854775807 0
numpty 0 0 9223372036854775807 9223372036854775807 0
numsiginfo 0 21 9223372036854775807 9223372036854775807 0
tcpsndbuf 87200 104640 9223372036854775807 9223372036854775807 0
tcprcvbuf 81920 98304 9223372036854775807 9223372036854775807 0
othersockbuf 6936 28720 9223372036854775807 9223372036854775807 0
dgramrcvbuf 0 2312 9223372036854775807 9223372036854775807 0
numothersock 32 36 9223372036854775807 9223372036854775807 0
dcachesize 1535996 1595162 60817408 67108864 0
numfile 180 250 9223372036854775807 9223372036854775807 0
dummy 0 0 0 0 0
dummy 0 0 0 0 0
dummy 0 0 0 0 0
numiptent 20 20 9223372036854775807 9223372036854775807 0

И намного более простой конфиг VPS:
cat /etc/vz/conf/101.conf
# Copyright (C) 2000-2011, Parallels, Inc. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#

# This config is valid for VSwap-enabled kernel (which currently means
# any RHEL6-based kernel, i.e. 042test* or 042stab*).

# UBC parameters (in form of barrier:limit)
PHYSPAGES="0:256M"
SWAPPAGES="0:512M"
KMEMSIZE="116M:128M"
DCACHESIZE="58M:64M"
LOCKEDPAGES="128M"
PRIVVMPAGES="unlimited"
SHMPAGES="unlimited"
NUMPROC="unlimited"
VMGUARPAGES="0:unlimited"
OOMGUARPAGES="0:unlimited"
NUMTCPSOCK="unlimited"
NUMFLOCK="unlimited"
NUMPTY="unlimited"
NUMSIGINFO="unlimited"
TCPSNDBUF="unlimited"
TCPRCVBUF="unlimited"
OTHERSOCKBUF="unlimited"
DGRAMRCVBUF="unlimited"
NUMOTHERSOCK="unlimited"
NUMFILE="unlimited"
NUMIPTENT="unlimited"

# Disk quota parameters (in form of softlimit:hardlimit)
DISKSPACE="2G:2.2G"
DISKINODES="200000:220000"
QUOTATIME="0"

# CPU fair scheduler parameter
CPUUNITS="1000"
HOSTNAME="testvps.fastvps.ru"
VE_ROOT="/vz/root/$VEID"
VE_PRIVATE="/vz/private/$VEID"
OSTEMPLATE="debian-5.0-x86_64"
ORIGIN_SAMPLE="vswap-256m"
IP_ADDRESS="176.9.54.124"
NAMESERVER="213.133.98.98 213.133.100.100 213.133.99.99"

Вот так :)

Больше информации: http://wiki.openvz.org/VSwap

пятница, 2 сентября 2011 г.

OpenVZ для CentOS 6 признан стабильным! Ура!

http://openvz.livejournal.com/38801.html

Вышел Parallels Virtuozzo Containers 4.6 !

Ограничение I/O диска

Задавайте ограничения на пропускную способность, доступную контейнерам для выполнения I/O-операций на диске. Ограничение пропускной способности I/O диска поможет предотвратить воздействие отдельных контейнеров на производительность всех остальных. Обеспечивает сервис-провайдерам защиту от DoS-атак и перерасхода ресурсов подписчиками. Позволяет предлагать VPS или облачные услуги с ограничением I/O диска.

Ограничения I/O диска при резервном копировании и миграции

Задайте ограничения на характеристики I/O диска для определенных процессов, включая резервное копирование, восстановление и миграцию, чтобы исключить риск снижения производительности всего сервера.

Учет I/O диска

Подробная статистика I/O диска доступна для каждого контейнера. С помощью этой статистики сервис-провайдеры могут следить за характеристиками I/O и процессами отдельных контейнеров. Эту информацию можно использовать для выявления контейнеров, которые создают самую большую нагрузку на I/O диска, что позволяет своевременно увидеть возможности для дополнительных продаж.

Улучшения vzstat

Помимо статистики учета i/o диска также доступна улучшенная статистика расхода процессорных ресурсов. Статистическую информацию можно легко получить через групповой и текстовый режимы, что упрощает интеграцию со сценариями и сторонними решениями.

Офссылка: http://www.parallels.com/ru/products/pvcl/whatsnew/#accounting

вторник, 14 июня 2011 г.

OpenVZ - почему pid процесса внутри VE отличается от pid этого же процесса на ноде?

Итак, pid процесса на ноде не совпадает с pid процесса внутри VPS, как такое получается?

На VPS:
ps aux |grep squid
root 3508 0.0 0.1 1716 512 pts/0 S+ 12:37 0:00 grep squid
root 28517 0.0 0.1 2152 516 ? Ss Jun13 0:00 squid

На ноде:
ps aux | grep 'squid'
root 2375 0.0 0.0 61140 716 pts/0 D+ 10:37 0:00 grep squid
root 27493 0.0 0.0 2152 516 ? Ss Jun13 0:00 squid

Но на ноде можно узнать также и pid процесса внутри VE (VPid):
cat /proc/27493/status
Name: squid
State: S (sleeping)
SleepAVG: 78%
Tgid: 27493
Pid: 27493
PPid: 24789
TracerPid: 21170
FNid: 5112
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 64
Groups: 0
envID: 5112
VPid: 28517
PNState: 0
StopState: 0
VmPeak: 2156 kB
VmSize: 2152 kB
VmLck: 0 kB
VmHWM: 516 kB
VmRSS: 516 kB
VmData: 348 kB
VmStk: 88 kB
VmExe: 188 kB
VmLib: 1476 kB
VmPTE: 20 kB
StaBrk: 085b7000 kB
Brk: 085d8000 kB
StaStk: bfd04ee0 kB
Threads: 1
SigQ: 0/204800
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000001000
SigCgt: 7ffffffe4781eeff
SigSvd: 0000000000000000
CapInh: 000000007dcceeff
CapPrm: 000000007dcceeff
CapEff: 000000007dcceeff
Cpus_allowed: 7fffffff,ffffffff,ffffffff,ffffffff,ffffffff,ffffffff,ffffffff,ffffffff
Mems_allowed: 00000000,00000001
TaskUB: 5112
MMUB: 5112

Либо pid процесса внутри VE можно вычислить по формуле: VE_pid = NODE_pid + 1024.

Источник: http://forum.openvz.org/index.php?t=msg&goto=34254

воскресенье, 12 июня 2011 г.

Миграция виртуальных машин Xen на OpenVZ

Вот хороший мануал по сабжу: http://www.howtoforge.com/how-to-convert-physical-systems-and-xen-vms-into-openvz-containers-debian-etch

Но суть сводится к более простому - достаточно выключить udev на Xen домене, чтобы он корректно заработал под OpenVZ. Просто так удалить udev не получится (он утянет за собой половину системы), скорее всего, его придется отключать в init скрипте инициализации системы.

понедельник, 2 мая 2011 г.

Debian 6 в OpenVZ: insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!

apt-get install -y puppet
Reading package lists... Done
Building dependency tree
Reading state information... Done
puppet is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up puppet (2.6.2-4) ...
insserv: warning: script 'S10vzquota' missing LSB tags and overrides
insserv: warning: script 'vzquota' missing LSB tags and overrides
insserv: There is a loop between service vzquota and single if started
insserv: loop involving service single at depth 11
insserv: loop involving service vzquota at depth 10
insserv: loop involving service mountnfs at depth 8
insserv: There is a loop between service vzquota and single if started
insserv: loop involving service sysklogd at depth 14
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Max recursions depth 99 reached
insserv: exiting now without changing boot order!
update-rc.d: error: insserv rejected the script header
dpkg: error processing puppet (--configure):
subprocess installed post-installation script returned error exit status 1
configured to not write apport reports
Errors were encountered while processing:
puppet
E: Sub-process /usr/bin/dpkg returned an error code (1)

Фикс:
vi /etc/init.d/vzquota

и под строкой "#!/bin/sh" добавляем:
### BEGIN INIT INFO
# Provides: vzquota
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start vzquota at the end of boot
# Description: This command is used to configure and see disk quota statistics for Containers.
### END INIT INFO

После этого повторяем предыдущую команду ( apt-get ).

Источник: http://www.mail-archive.com/debian-bugs-rc@lists.debian.org/msg230965.html

понедельник, 28 марта 2011 г.

Активация nfs клиента для контейнера на OpenVZ

Загружаем модуль поддержки nfs на ноде:
modprobe nfs

После этого добавляем автозагрузку этого модуля, открываем конфиг:
vi /etc/rc.local

И добавляем там:
modprobe nfs

Убеждаемся, что он загрузился корректно:
lsmod | grep nfs
nfs 294456 0
lockd 104208 1 nfs
nfs_acl 36608 1 nfs
sunrpc 206144 4 nfs,lockd,nfs_acl

Выдаем конетйнеру полномочия на использование nfs:
vzctl set номер_контейнера --features "nfs:on" --save

После этого контейнер необходимо перезапустить контейнер:
vzctl restart номер_контейнера

После этого входим в контейнер и убеждаемся, что появилась поддержка файловой системы nfs:
vzctl enter номер_контейнера

cat /proc/filesystems | grep nfs
nodev nfs

Все, готово! Теперь на контейнере необходимо лишь настроить клиентские библиотеки, для CentOS: http://phpsuxx.blogspot.com/2009/12/nfs.html, для Debian: http://phpsuxx.blogspot.com/2011/01/nfs-debian.html

Источник: http://wiki.openvz.org/NFS

вторник, 18 января 2011 г.

vzctl 3.0.25 - удалены cron задачи для перезагрузки VPS, теперь это выполняет демон vzeventd

В changelog сообщается следующее:
Removed cron scripts to handle cleanup and reboot

Так и есть:
chkconfig --list | grep vzeve
vzeventd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

При этом, OpenVZ почему-то забывает про свой cron (вот поэтому "All the cron trickery (used for CT reboot and network cleanup) is removed from this release. If you have something non-standard in /etc/vz/cron/ directory, this is no longer managed by the vz initscript."):
cat /etc/cron.d/vz
# Cron jobs needed for OpenVZ

# -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
# ------------------ EDIT THE CORRECT FILE -------------------------
# This file is copied to /etc/cron.d/vz from
# /etc/vz/cron/vz when the vz service is started
# via its init.d script and the file
# /etc/cron.d/vz is cleared when the
# service is stopped. Therefore any edits made directly to
# /etc/cron.d/vz will be lost anytime the vz service
# restarts.
#
# To make changes, edit the master copy /etc/vz/cron/vz
# (or add your own /etc/vz/cron/vz* files)
# and run /etc/init.d/vz update-cron.
#
# The reason this is done this way is because the OpenVZ cron job
# should only be invoked if the vz service is enabled and not
# just as a consequence of installing the vzctl as it was the case
# previously. The file /etc/cron.d/vz
# cannot simply be linked to the master copy in
# /etc/vz/cron/ because for security reasons cron
# will not process crontab files that are links or writeable by
# anybody else but root, thus the file must be copied
# into /etc/cron.d/ with the right ownership and permissions.


# Clean containers' network rules (arp,route,iptables)
*/5 * * * * root /usr/share/vzctl/scripts/vpsnetclean

# Start containers marked as rebooted.
*/2 * * * * root /usr/share/vzctl/scripts/vpsreboot

И как результат, cron заспамливает нас ошибками, что файлов /usr/share/vzctl/scripts/vpsnetclean и /usr/share/vzctl/scripts/vpsreboot больше не существует, так что, нужно закончить задачу OpenVZ и удалить этот файл:
rm /etc/cron.d/vz

Источник: http://wiki.openvz.org/News/updates#vzctl_3.0.25_released