Тепер статті може редагувати кожен. Приєднуйтесь до нашої вікі-спільноти!

OpenVZ

Матеріал з USIC Wiki
(Перенаправлено з 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 ( для ініціалізації контейнеру обов'язково потрібно вказувати якийсь шаблон ).

  1. Створити контейнер і директорію-образ:
   # vzctl create <ID> --ostemplate empty --private /vz/private/<vzname> --root /vz/root/<vzname>
   # vzctl set ID --name <vzname> --save
   # mkdir <image>
  1. Змонтувати шаблонну директорію в 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
  1. init quotas:
   # vzquota init <ID> -p <image> -b 102400 -B 102400 -i 20000 -I 20000 -e 2 -n 2
  1. add network interface:
   # vzctl set <vzname> --netif_add eth0,,,,<bridge> --save
  1. start container
   # vzctl start <vzname>

(edit /etc/conf.d/net on hardware node for adding interface to bridge at startup)

  1. 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]

[ред.] Див. також

Створення шаблонів Gentoo

[ред.] Посилання

Особисті інструменти
Простори назв
Варіанти
Дії
Навігація
Інструменти