January 16, 2012

LXC - виртуализация без виртуализации

Таблица снизу это обзор текущих систем виртуализации с позиции того, насколько большую часть хост системы виртуальные машины используют напрямую:

                               Матрешка виртуализации

    ==========================================================================================
    Используется          Название              Примеры:
    совместно
    с хостом
    ==========================================================================================
    ничего                Эмуляция              QEMU, Boсsh
    ------------------------------------------------------------------------------------------
    CPU                   Виртуализация         KVM, VmWare, XEN, Hyper-V
    ------------------------------------------------------------------------------------------
    Аппаратура            Intel VT-d, SR-IOV    Может использоваться совместно 
                                                с системой виртуализации (kvm)
    ------------------------------------------------------------------------------------------
    Драйвера              Паравиртуализация     XEN, VirtIO, VMWare tools
    ------------------------------------------------------------------------------------------
    Ядро OS               Контейнеры            LXC, Solaris Zones, OpenVZ, Linux VServer
    ==========================================================================================

В первой графе - слои системы "компьютер + ОС" - чем ниже, тем более высокий уровень (что-то типа уровней ISO для сетевого стека ). Средняя графа - название модели виртуализации. Третья графа - типичные примеры. Чем ниже, тем больше компонентов гостевые системы используют от хост-системы напрямую, тем меньше нагрузка на гипервизор и тем выше скорость работы.

Я немного расскажу о контейнерах вообще и LXC (LinuX Containers) в частности. Контейнеры (или виртуализация уровня операционной системы)- это группы процессов, изолированные от остальной системы, возможно с наложенными ограничениями, и имеющие доступ только к некоторой части ресурсов. Процессы из контейнера "видят" и могут напрямую взаимодействовать только с процессами из того же контейнера, им доступна только часть аппаратуры, а корень файловой системы контейнера с помощью chroot сдвинут в глубь файловой системы хоста (например, в /var/lib/lxc/my_container_1). Виртуализация всех необходимых подсистем ядра (таблицы монтирования, PID, маршруты IP, etc) позволяет контейнеру выглядеть как "нормальная" виртуалка.

January 12, 2012

libvirt & Co. Облако "на коленке". Часть 3 - Дисковые образы

Следующий шаг - разобраться с дисковыми образами виртуальных машин. Основные вопросы - как хранить, где хранить и как модифицировать.


Как хранить

  • raw - самый простой формат, прямая копия данных с диска.
  • qcow2 - основной формат qemu. Обладает большим спектром возможностей
  • vdi - формат, используемый VirtualBox'ом
  • vmdk - VMware формат
  • cow, qcow - каменный век

Обсуждать raw смысла не имеет - просто диск байт по байту. qcow2 самый распространенный и функциональный формат виртуальных дисков для qemu/xen.

  • содержит только те кластеры, в которые были записаны данные. Т.е. можно создать образ диска размером в 10G, но реальный размер файла будет расти только при фактической записи на диск.