|
Тепер статті може редагувати кожен. Приєднуйтесь до нашої вікі-спільноти! |
OpenVZ
Зміст |
[ред.] Встановлення
Завантажуємо ядро 2.6.27.1 [1]
Завантажуємо OpenVZ патч 2.6.27-levitan.1 [2]
завантажуємо патч для підтримки unionfs [3] для ядра 2.6.27.55 розпаковуємо ядро:
$ tar -xjf linux-2.6.27.1.tar.bz
патчимо ядро:
$ cd linux-2.6.27.1 $ zcat ../patch-levitan.1-combined.gz | patch -p1 $ zcat ../unionfs-2.5.3_for_2.6.27.55.diff.gz | patch -p1
Або в Gentoo:
# emerge -av openvz-sources
вмикаємо підтримку
File Systems
-> Layererd Filesystems
<M> Union file system
<*> Virtuozzo Disq Quota Support
[*] Per-user and per-group quota in Virtuozzo quota partitions
<*> VPS Filesystem
<*> Quota support
[*] Compatibility with older quotactl interface
[*]Quota format v2 support
Security
[ ] Enable different security models
OpenVZ
[*] Virtual Environment support
<*> VE calls interface
<*> VE networking
<*> Virtual ethernet device
<*> VE device
[*] VE netfiltering
<*> VE watchdog module
<*> Checkpointing & restoring Virtual Environments
User resources
[*] Enable user resource accounting
[*] Account physical memory usage
[*] Account disk IO
[*] Account swap usage
[*] Report resource usage in /proc
[*] User resources debug features
[ред.] Створення контейнера
Стандартні контейнери створюються досить просто і є прості короткі HOWTO [4], де це можна подивитися.
Для створення нового контейнера ми використовуємо власний шаблон empty ( знаходиться в /vz/template/cache/empty.tar.gz), який є просто порожньою директорією і слугує лише для того, щоб “перехитрити” утиліту vzctl ( для ініціалізації контейнеру обов'язково потрібно вказувати якийсь шаблон ).
- Створити контейнер і директорію-образ:
# vzctl create <ID> --ostemplate empty --private /vz/private/<vzname> --root /vz/root/<vzname> # vzctl set ID --name <vzname> --save # mkdir <image>
- Змонтувати шаблонну директорію в private area контейнеру:
# mount -t unionfs -o dirs=<image>=rw:/vz/template/<template>=ro unionfs /vz/private/<vzname>
або для автоматичного монтування всіх шарів файлової системи прописати в /etc/fstab таке:
unionfs /vz/private/<vzname> unionfs dirs=<image>=rw:/vz/template/<template>=ro 0 0
і примонтувати:
# mount -a
- init quotas:
# vzquota init <ID> -p <image> -b 102400 -B 102400 -i 20000 -I 20000 -e 2 -n 2
- add network interface:
# vzctl set <vzname> --netif_add eth0,,,,<bridge> --save
- start container
# vzctl start <vzname>
(edit /etc/conf.d/net on hardware node for adding interface to bridge at startup)
- configure container:
# vzctl enter <vzname>
(edit /etc/conf.d/net inside container to add interface address & route ) (edit /etc/conf.d/hostname to set proper hostname ) (passwd to set root password ) (edit /etc/pam.d/system-auth to define groups to access to container )
[ред.] Міграція
Процес міграції гарно описаний на сайті OpenVZ [5], крім вказаних там дій ще варто відмонтувати директорію портів, щоб не переносити зайвих даних, напр.:
# umount /vz/root/<VEID>/usr/portage # umount /vz/template/gentoo/usr/portage # vzctl stop <VEID> # vzmigrate -r no -v <address> <VEID>
[ред.] Можливі проблеми
[ред.] Контейнер не перезавантажуєьтся
Ознаки: контейнер неможливо підняти, виклик vzctl start <ID> успішний, при цьому його стан залишається mounted (в списку контейнерів vzlist -a)
Можливі причини: при ініціалізації /sbin/rc намагається примонтувати /proc, який вже може бути примонтований, якщо його змонтували в шаблоні. Потрібно відмонтовувати /vz/template/gentoo/proc після роботи з шаблоном.
[ред.] Після перезавантаження віртуальної машини зсередини (тобто reboot в її консолі) вона не доступна
Якщо ваша ґента не перезавантажується, то, можливо, щось не так із файлом /etc/init.d/reboot.sh .
OpenVZ встановлює завдання в крон, котре кожні 5 хвилин перевіряє, чи потрібно перезавантажувати деяку вірт. машину. Насправді, цей скрипт перевіряє наявність в корні вашої машини файла '/reboot'. Якщо він є, машина буде перезавантажена.
Ініт-скріпти ґенту, незалежно від профіля сервера, не створюють цей файл.
Як можна виправити проблему:
Знаходячись у своїй віртуальній машині, відредагуйте файл /etc/init.d/reboot.sh .
Вставте наступний рядок перед /sbin/reboot -dp:
touch /reboot
[ред.] Помилка перенаправлення виводу процесу
Повідомлення такого роду означають, що процес звернувся до відкритого ним дескриптора через /dev/fd:
/dev/fd/63: No such file or directory
Це відбуваєься, зокрема, при перенаправленні виводу з дочірнього процесу в батьківський в bash:
$ cat <(ls -l) cat: /dev/fd/63: No such file or directory
На разі це не обробляється коректно контейнерами. Найчастіше спричиняється emerge а також деякими іншими python-скриптами. Вирішення[6]: створити посилання на правильну директорію в procfs:
# ln -s /proc/self/fd /vz/template/gentoo/dev/fd
[ред.] Інтерфейс не додається до мосту автоматично
Слід переконатися в наявності файлу /etc/vz/vznet.conf, як описано в документації[7]
[ред.] Див. також
[ред.] Посилання
| ||||||||||||||