Виртуализация Linux с помощью OpenVZ

    Часто возникает необходимость разнесения различных сервисов по разным физическим серверам. Но что делать если физический сервер один? Выход есть — виртуализация. В этой статье я расскажу о технологии виртуализации , которая базируется на ядре Linux. Рассматривать будем на дистрибутиве Debian, т.к. недавно OpenVZ патч был включен в репозиторий etch. Будем считать, что ОС у нас уже установлена.

    P.S.: Сильно не пинайте, это моя первая статья на Хабре.

    Итак,

    Сборка и установка ядра


    Для начала установим исходники ядра и патч:
    aptitude update
    aptitude install kernel-patch-openvz
    aptitude install linux-source-2.6.18


    Также нам понадобятся утилиты для работы и управления виртуальными машинами:
    aptitude install vzctl vzquota


    Распакуем ядро:
    cd /usr/src
    tar xjvf linux-source-2.6.18.tar.bz2
    cd linux-source-2.6.18


    Скопируем конфиг:
    cp /boot/config-2.6.18-4-686 .config


    Исправим в конфиге параметр CONFIG_SECURITY он должен быть установлен в n. Вот так:

    CONFIG_SECURITY=n

    Установим пакет kernel-package, он нам поможет собрать пакет с пропатченным ядром:
    aptitude install kernel-package


    Соберем и установим новое ядро:

    make-kpkg --append_to_version=-1-openvz --added_patches=openvz --revision=1 kernel_image
    cd…
    dpkg -i linux-image-2.6.18-1-openvz_1_i386.deb
    update-initramfs -c -k 2.6.18-1-openvz
    update-grub


    Редактируем /boot/grub/menu.lst так, чтобы у нас грузилось новое ядро. Перезагружаемся.

    Если вы все сделали верно, то после перезагрузки у вас появится новый сетевой интерфейс venet.

    Создание виртуальных машин.



    Для начала поменяем параметры ядра:
    sysctl -w net.ipv4.conf.eth0.proxy_arp=1
    sysctl -w net.ipv4.ip_forward = 1


    Далее нам понадобится хотя бы один шаблон ОС(шаблоны вы найдете на сайте OpenVZ).

    cd /var/lib/vz/template/cache
    wget download.openvz.org/template/precreated/debian-4.0-i386-minimal.tar.gz


    Непосредственно создаем новую машину с VEID 101:
    vzctl create 101 --ostemplate debian-4.0-minimal --config vps.basic
    vzctl set 101 --onboot yes --save
    vzctl set 101 --hostname hostname1.example.com --save
    vzctl set 101 --ipadd 192.168.5.1 --save
    vzctl set 101 --numothersock 120 --save
    vzctl set 101 --nameserver 192.168.0.1 --save
    vzctl set 101 --privvmpages 500000:750000 --save
    vzctl start 101
    vzctl exec 101 passwd


    Заходим внутрь:

    vzctl enter 101


    Проверяем, все ли работает, и наслаждаемся:)

    Прочие полезности:



    Конфигурационные файлы находятся в /etc/vz/
    команда vzctl start — запускает виртуальную машину.
    команда vzctl stop — останавливает виртуальную машину.
    команда vzctl restart — перезапускает виртуальную машину.

    cat /proc/user_beancounters покажет используемые ресурсы и покажет их нехватку.

    vzlist покажет запущенные виртуальные машины
    vzlist -a покажет все сконфигурированые виртуальные машины
    vzpid $PID По pid процесса покажет VEID в которой запущен процесс.

    Share post

    Similar posts

    Comments 7

      0
      недавно в etch ничегь включено не может быть. etch вышел давно. А вот в unstable есть ядра с openvz

      # apt-cache search linux-image-2.6.26
      linux-headers-2.6.26-1-486 - Header files for Linux 2.6.26-1-486
      linux-headers-2.6.26-1-686 - Header files for Linux 2.6.26-1-686
      linux-headers-2.6.26-1-686-bigmem - Header files for Linux 2.6.26-1-686-bigmem
      linux-headers-2.6.26-1-amd64 - Header files for Linux 2.6.26-1-amd64
      linux-headers-2.6.26-1-openvz-686 - Header files for Linux 2.6.26-1-openvz-686
      linux-headers-2.6.26-1-xen-686 - Header files for Linux 2.6.26-1-xen-686
      linux-image-2.6.26-1-486 - Linux 2.6.26 image on x86
      linux-image-2.6.26-1-686 - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4
      linux-image-2.6.26-1-686-bigmem - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4
      linux-image-2.6.26-1-amd64 - Linux 2.6.26 image on AMD64
      linux-image-2.6.26-1-openvz-686 - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4, OpenVZ support
      linux-image-2.6.26-1-xen-686 - Linux 2.6.26 image on i686
        0
        Согласен, словно "недавно" лишнее. Писал именно про etch, т.к. не рискую ставить unstable на сервера, обслуживающие не одну тысячу клиентов.
          0
          а патчить самому и пересобирать рискуешь?
            0
            Во-первых патч входит в дистрибутив, во вторых эта версия Openvz - stable. В третьих других вариантов вроде как нет...
              0
              Ну, просто я думал, что сервера на тысячу клиентов изначально делают и тестируют на openvz (или чего-то такое же глобальное), а не потом переводят. Ну да ладно. Тебе виднее.
          0
          И в etch тоже есть, недавно собирал
          0
          Жаль что нет подробностей о конфигурации сервера и производительности такого решения…

          Only users with full accounts can post comments. Log in, please.