понедельник, 20 июля 2015 г.

Перенос реальной (физической) системы Linux в контейнер OpenVZ



В данной статье я расскажу, как можно перенести физическую систему (под управлением Ubuntu 14.04, далее будут называть ее server_ubuntu) в OpenVZ контейнер. Эта процедура должна также работать для конвертирования виртуальных машин VMware VM, VirtualBox VM, или KVM VM в OpenVZ, но у меня нет возможности протестировать это.



Перенос системы server_ubuntu в контейнер OpenVZ

Для начала создадим 2 пустых директории для нового контейнера OpenVZ на hn1_server (так я далее буду называть сам сервер виртуальных машин OpenVZ) и также создадим стандартный конфигурационный файл OpenVZ для нового контейнера:

 # mkdir /vz/root/124 /vz/private/124
 # cat /etc/vz/conf/ve-vswap-2g.conf-sample > /etc/vz/conf/124.conf



Теперь установим rsync на оба сервера, так как мы будем использовать rsync для передачи файлов с server_ubuntu на OpenVZ контейнер.

На server_ubuntu выполнить:

 # apt-get install rsync

На hn1_server выполнить:

 # yum install rsync


Теперь начнем передавать файлы.

На hn1_server выполнить:

 # rsync -arvpz --numeric-ids --exclude dev --exclude proc --exclude tmp --exclude "/sys/devices/*" -e "ssh -l root@192.168.0.50" root@192.168.0.50:/ /vz/private/124/

где:
 192.168.0.50 – ip физического сервера с Ubuntu (server_ubuntu)
 -a архивный режим
 -r рекурсивно входить в подкаталоги
 -v увеличить уровень подробностей
 -p сохранять разрешения
 -z сжимать поток передачи данных
 -e указывает замену программу удаленной оболочки
 --numeric-ids не преобразовывать значения uid/gid по именам пользователя/группы
 --exclude исключить файлы, соответствующие шаблону

Это может занять длительное время, в зависимости от количества и размера файлов на сервере server_ubuntu.

После этого мы должны сконфигурировать наш новый контейнер с помощью команды vzctl
OpenVZ. Заранее необходимо знать, какой дистрибутив использовался на физической системе, чтобы такой же установить для контейнера.

Выполнить на hn1_server:

 # vzctl set 124 --ostemplate ubuntu-14.04-x86_64-minimal --save


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

Выполнить на hn1_server:

 # vzctl set 124 --onboot yes --save
 # vzctl set 124 --hostname ubuntu_server_new.youhost.ru --save
 # vzctl set 124 --ipadd 192.168.0.100 --save
 # vzctl set 124 --numothersock 120 --save
 # vzctl set 124 --nameserver 8.8.8.8 --nameserver 8.8.4.4 --save
 # vzctl set 124 --save --cpus 2
 # vzctl set 124 --save --ram 8G
 # vzctl set 124 --save --swap 4G
 # vzctl set 124 --save --diskspace 100G

Это основные настройки. Если необходимо вы можете изменить другие настройки с помощью команды vzctl.

Перед тем как мы запустим OpenVZ контейнер, нам необходимо сделать небольшие специфичные для OpenVZ изменения.

Выполнить на hn1_server:

 # sed -i -e '/getty/d' /vz/private/124/etc/inittab
 # rm -f /vz/private/124/etc/mtab
 # ln -s /proc/mounts /vz/private/124/etc/mtab
 # cp /vz/private/124/etc/fstab /vz/private/124/etc/fstab.old
 # grep devpts /vz/private/124/etc/fstab.old > /vz/private/124/etc/fstab
 # mkdir /vz/private/124/dev
 # mknod --mode 666 /vz/private/124/dev/ptmx c 5 2
 # mkdir /vz/private/124/dev/pts
 # cp -a /dev/ttyp* /dev/ptyp* /vz/private/124/dev/
 # rm -f /vz/private/124/dev/null
 # mknod --mode 666 /vz/private/124/dev/null c 1 3
 # mknod --mode 444 /vz/private/124/dev/urandom c 1 9
 # mkdir /vz/private/124/proc
 # cat /dev/null > /vz/private/124/etc/network/interfaces
 # mkdir /vz/private/124/tmp
 # chmod 777  /vz/private/124/tmp
 # mkdir /vz/private/124/var/tmp
 # chmod 777  /vz/private/124/var/tmp
 # mknod --mode 666 /vz/private/124/dev/random c 1 8
 # mknod --mode 666 /vz/private/124/dev/zero c 1 5
 # mknod --mode 666 /vz/private/124/dev/null c 1 3
 # rm /vz/private/124/dev/tty
 # mknod --mode 666 /vz/private/124/dev/tty c 5 0


В файл /vz/private/124/etc/fstab прописываем:

 proc  /proc       proc    defaults    0    0
 none  /dev/pts    devpts  rw,gid=5,mode=620    0    0
 none  /run/shm    tmpfs   defaults    0    0


Готово. Теперь можно попробовать запустить сервер.

Выполнить на hn1_server:

 # vzctl start 124

Если все прошло успешно, то теперь можно установить новый пароль:

 # vzctl exec 124 passwd




P.S. Если при запуске возникает ошибка такого вида:

 vzquota : (warning) inode_hard_limit [144179] < inode_current_usage [424424]

то необходимо изменить параметр diskinodes новой виртуальной машины - выполнить на hn1_server:

 # vzctl set 124 --diskinodes=450000:500000 –save

При этом учитывать, что лимит инод указывается больше, чем используется системой. В данном случае используется 424424, а ставим лимит на 450000.



Ссылки
OpenVZ: http://wiki.openvz.org/Main_Page
Оригинал статьи без моих изменений: Тыц >>



Комментариев нет:

Отправить комментарий