OpenVZ. Установка контейнера CentOS 5.5 на хост Debian Lenny

В мире Apple и Хакинтошестроения пока ничего интересного (для меня) не происходит. Напишу пару заметок о Linux, может кому-то пригодится.
Есть у меня дома небольшой сервер на базе с процессором на борту, с 2 Gb оперативки и двумя террабайтными винтами (Western Digital Green Caviar), собранными в RAID 1 (зеркалирование).
Живет это все в корпусе .
Изначально эта конфигурация собиралась для Mac OS X Server, но поигравшись с ней полгода я понял, что Mac Server дома мне не нужен. Сервер, который по моему разумению должен был быть тихим и холодным, достаточно сильно грелся и шумел вентиляторами. Загрузка процессора всегда была достаточно высокой и некоторые приложения вели себя не стабильно (rtorrent регулярно падал).
Т.к. за эти полгода я заходит на сервер исключительно через терминал, а всеми Mac-вкусняшками не пользовался вообще, то было принято решение: сносим Mac OS X и ставим Linux. Мой выбор пал на . Debian давно зарекомендовал себя как крайне стабильный дистрибутив, к тому же с Debian я раньше никогда не сталкивался и было интересно попробовать что-то новенькое.
Установка прошла достаточно гладко, сейчас я уже и не вспомню всех подробностей и нюансов. На сервере сейчас работает rtorrent понятно для чего, afp сервер для маковских шар, samba для виндовых шар (используется сетевым медиаплеером ), mt-daap сервер для iTunes и много чего по мелочам. К слову, сейчас загрузка процессора редко превышает 20% и то, только в момент перехеширования торрентов. Теперь он действительно стал тихим и холодным.
Постепенно приближаемся к теме, вынесенной в заголовок...
Моя семья достаточно давно (более 5 лет) является активным пользователем IP-телефонии. Дома стоит , на мобильном . Подключены несколько тарифов от разных провайдеров (sipnet.ru, pctel.ru, zadarma.com), подключен прямой московский от "Центрального телеграфа".
Все это хозяйство конечно можно настроить и разрулить с помощью самого C470IP, он позволяет создавать некоторое кол-во правил и выбирать провайдера в зависимости от направления, но хочется чего-то большего... Короче нужно ставить !
Linux сервер есть. Сам asterisk ставится на Debian достаточно просто как из пакетов так и из исходников, но т.к. опыта в его настройке никакого нет то хочется прицепить к нему какую-то GUI-морду. Выбор GUI есть достаточно большой: , , , .
Проблемы начались, когда я стал пытаться поставить что-то из вышеперечисленного. По человечески мне сделать это так не удалось, либо не работает морда либо все остальное, что висит на apache, к тому же практически все эти системы рассчитаны на установку на CentOS.
После многих неудачных попыток я стал подумывать, а не перейти ли мне на CentOS или может собрать что-то маленькое исключительно для asterisk? CentOS не хотелось ставить исключительно из-за лени - это же все нужно настраивать заново, а оно и так без перезагрузок уже почти год работает. От покупки нового железа удержала природная жаба - есть практически простаивающий сервер, зачем городить что-то еще?
Какого-же решение? Виртуализация! Ведь можно на одном сервере крутить несколько операционок! Только Atom 330 не поддерживать аппаратную виртуализацию. Нужно что-то, что не будет безбожно тормозить. Сначала я решил попробовать гипервизор ... Запустить его на Atom 330 мне так и не удалось. Хотя в сети и встречаются сообщения о успешном запуске Xen даже на Atom 230 у меня ничего не получилось.
Следующий претендент . OpenVZ это технология виртуализации на уровне операционной системы. OpenVZ позволяет на одном физическом сервере запускать множество изолированных копий операционной системы, называемых Виртуальные Частные Серверы (Virtual Private Servers, VPS) или Виртуальные Среды (Virtual Environments, VE). OpenVZ базируется на ядре Linux, поэтому гостевыми операционными системами может быть только Linux, но мне только это и нужно. Согласно сайту OpenVZ, накладные расходы на виртуализацию очень малы, и падение производительности составляет всего 1-3 %, по сравнению с обычными Linux-системами. Вау, то что нужно.
Ставим OpenVZ. Для начала нам нужно заменить ядро на модифицированное ядро, с поддержкой OpenVZ. Сначала выясним какой версии у нас ядро:
uname -r 2.6.26-2-686
Найдем и установим OpenVZ ядро этой же версии:
apt-cache search linux image openvz 2.6.26-2 linux-headers-2.6.26-2-openvz-686 - Header files for Linux 2.6.26-2-openvz-686 linux-image-2.6.26-2-openvz-686 - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4, OpenVZ support
Нужное нам ядро это linux-image-2.6.26-2-openvz-686. Его и устанавливаем.
sudo apt-get linux-image-2.6.26-2-openvz-686 ln -s /var/lib/vz /vz
Перезагружаемся. Проверяем версию ядра:
uname -r 2.6.26-2-openvz-686
Выставляем параметры ядра так, чтобы виртуальные машины видели сеть. Редактируем /etc/sysctl.conf:
# On Hardware Node we generally need # packet forwarding enabled and proxy arp disabled net.ipv4.ip_forward = 1 net.ipv6.conf.default.forwarding = 1 net.ipv6.conf.all.forwarding = 1 net.ipv4.conf.default.proxy_arp = 0 net.ipv4.conf.eth0.proxy_arp = 1 # Enables source route verification net.ipv4.conf.all.rp_filter = 1 # Enables the magic-sysrq key kernel.sysrq = 1 # We do not want all our interfaces to send redirects net.ipv4.conf.default.send_redirects = 1 net.ipv4.conf.all.send_redirects = 0
Применяем изменения:
sysctl -p
Теперь нам нужен шаблон CentOS 5.5, из которого мы развернем VPS. На сайте OpenVZ есть шаблоны для многих популярных дистрибутивов Linux. Просмотреть список можно . Все шаблоны складываем в директорию /var/lib/vz/template/cache. Загружаем нужный шаблон (хоть Atom 330 и поддерживает Intel® 64 Architecture но я не вижу смысла ее использовать на этом железе, поэтому и хост и гостевая системы 32-разрядные):
cd /var/lib/vz/template/cache wget http://download.openvz.org/template/precreated/centos-5-x86.tar.gz
Устанавливаем необходимые инструменты, для работы с OpenVZ:
sudo apt-get install rsync vzctl vzquota
Настало время создать контейнер нового VPS.
vzctl create 101 --ostemplate centos-5-x86 --config vps-basic vzctl set 101 --cpulimit 100 --save vzctl set 101 --ipadd 192.168.0.101 --save vzctl set 101 --name voip --save vzctl set 101 --hostname voip.server.com --save vzctl set 101 --nameserver 192.168.0.1 --save vzctl set 101 --vmguarpages 250M:256M --privvmpages 750M:768M --save vzctl set 101 --diskspace 2G:4G --save vzctl set 101 --onboot yes --save
Параметры:
- --ostemplate - задает шаблон, из которого будет развернут виртуальный сервер;
- --cpulimit - Ограничение на загрузку процессора виртуальной средой в процентах. 4 ядра = 400%;
- --ipadd - ip адрес;
- --name - имя VPS;
- --hostname - имя хоста;
- --nameserver - адрес DNS сервера;
- --vmguarpages - гарантированный объем памяти;
- --privvmpages - максимальный объем памяти;
- --diskspace - ограничения использования дискового пространства, минимум и максимум;
- --onboot - загрузка выбранного VPS при запуске хост-системы.
Еще один плюс OpenVZ в том, что файловая система VPS лежит не в отдельном файле-контейнере а в основной файловой системе, т.е. доступ к гостевой файловой системе из системы-хоста можно получить просто зайдя в директорию /var/lib/vz/private/101/. Таким образом нет дополнительных тормозов при дисковых операциях.
Итак, сервер создан и необходимые параметры заданы. Запускаем его:
vzctl start 101
Starting VE ... VE is mounted Adding IP address(es): 192.168.0.101 Setting CPU units: 1000 Configure meminfo: 131072 Set hostname: asterisk101 File resolv.conf was modified VE start in progress...
Что бы зайти в VPS под пользователем root вводим команду:
vzctl enter 101
С остальными командами vzctl можно ознакомиться или введя команду:
man vzctl
Заходим в контейнер и смотрим, что у нас получилось:
vzctl enter 101
entered into VE 101 [root@asterisk101 /]#
Смотрим версию ядра:
uname -r 2.6.26-2-openvz-686
Ядро тоже, что и у системы-хоста. Теперь смотрим версию дистрибутива:
cat `ls /etc/*{-,_}{release,version} 2>/dev/null | head -n 1`
CentOS release 5.5 (Final)
Что и требовалось. Напоследок обновимся:
yum -y update
Пока все. О установке asterisk и прочего в следующем посте.




(5 оценок, в среднем: 4,60 из 5)
Блог netkas-а
Форум insanelymac.com
Форум Project OSX