diff options
author | Amet13 <admin@amet13.name> | 2016-03-26 22:05:37 +0300 |
---|---|---|
committer | Amet13 <admin@amet13.name> | 2016-03-26 22:05:37 +0300 |
commit | d644cee816298cd0d96b3dc9ac7bb940f4efcc99 (patch) | |
tree | ee49877003df48017e8b888e5921ed32ddafef73 /README.md | |
parent | 57a024729bd4779c48e6dafb8299a1e826e408e5 (diff) |
Много поправок в тексте и коде
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 143 |
1 files changed, 66 insertions, 77 deletions
@@ -12,7 +12,7 @@ - [Установка Virtuozzo с помощью ISO-образа (bare-metal installation)](#bare-metal) - [Установка Virtuozzo на заранее установленный дистрибутив](#exists-distro) - [Подготовительные действия](#prepare) -4. [Управление шаблонами гостевых ОС и приложений контейнеров](#templates-ct) +4. [Управление шаблонами контейнеров](#templates-ct) - [Шаблоны гостевых ОС](#guest-os) - [Шаблоны приложений](#app-templates) 5. [Создание и настройка контейнеров](#ct) @@ -50,50 +50,54 @@ 15. [Лицензия](#license) ## [[⬆]](#toc) <a name='intro'></a>Введение в виртуализацию -Виртуализация — предоставление наборов вычислительных ресурсов или их логического объединения, абстрагированное от аппаратной реализации, и обеспечивающее изоляцию вычислительных процессов. +Виртуализация — предоставление наборов вычислительных ресурсов или их логического объединения, абстрагированных от аппаратной реализации, и обеспечивающих изоляцию вычислительных процессов. Виртуализацию можно использовать в: -* консолидации серверов (позволяет мигрировать с физических серверов на виртуальные, тем самым увеличивается коэффициент использования аппаратуры, что позволяет существенно сэкономить на аппаратуре, электроэнергии и обслуживании) -* разработке и тестировании приложений (возможность одновременно запускать несколько различных ОС, это удобно при разработке кроссплатформенного ПО, таким образом значительно повышается качество, скорость разработки и тестирования приложений) +* консолидации серверов (возможность мигрировать с физических серверов на виртуальные, тем самым увеличивая коэффициент использования аппаратуры, что позволяет существенно сэкономить на аппаратуре, электроэнергии и обслуживании) +* разработке и тестировании приложений (возможность одновременно запускать несколько различных операционных систем (ОС), это удобно при разработке кроссплатформенного программного обеспечения (ПО), таким образом значительно повышается качество, скорость разработки и тестирования приложений) * бизнесе (использование виртуализации в бизнесе растет с каждым днем и постоянно находятся новые способы применения этой технологии, например, возможность безболезненно сделать снапшот) * организации виртуальных рабочих станций (так называемых "тонких клиентов") -*Общая схема взаимодействия виртуализации с аппаратурой и программным обеспечением* -![Общая схема взаимодействия виртуализации с аппаратурой и программным обеспечением](https://raw.githubusercontent.com/Amet13/virtuozzo-tutorial/master/images/virt-scheme.png) +*Общая схема взаимодействия виртуализации с аппаратным и программным обеспечением* +![Общая схема взаимодействия виртуализации с аппаратным и программным обеспечением](https://raw.githubusercontent.com/Amet13/virtuozzo-tutorial/master/images/virt-scheme.png) Понятие виртуализации можно условно разделить на две категории: -* виртуализация платформ, продуктом этого вида виртуализации являются виртуальные машины -* виртуализация ресурсов преследует целью комбинирование или упрощение представления аппаратных ресурсов для пользователя и получение неких пользовательских абстракций оборудования, пространств имен, сетей +* виртуализация платформ (продуктом этого вида виртуализации являются виртуальные машины) +* виртуализация ресурсов (преследует целью комбинирование или упрощение представления аппаратных ресурсов для пользователя и получение неких пользовательских абстракций оборудования, пространств имен, сетей) -Взаимодействие приложений и операционной системы (ОС) с аппаратным обеспечением осуществляется через абстрагированный слой виртуализации. +Взаимодействие приложений и операционной системы с аппаратным обеспечением осуществляется через абстрагированный слой виртуализации. Существует несколько подходов организации виртуализации: * эмуляция оборудования (QEMU, Bochs, Dynamips) -* полная виртуализация (KVM, HyperV, VirtualBox) +* полная виртуализация (KVM, HyperV, VirtualBox, ESXi) * паравиртуализация (Xen, L4, Trango) * виртуализация уровня ОС (LXC, Virtuozzo, Jails, Solaris Zones) ### <a name='emulation'></a>Эмуляция оборудования Эмуляция аппаратных средств является одним из самых сложных методов виртуализации. -Главной проблемой при эмуляции аппаратных средств является низкая скорость работы, в связи с тем, что каждая команда моделируется на основных аппаратных средствах. +В то же время главной проблемой при эмуляции аппаратных средств является низкая скорость работы, в связи с тем, что каждая команда моделируется на основных аппаратных средствах. В процессе эмуляции оборудования используется механизм динамической трансляции, то есть каждая из инструкций эмулируемой платформы заменяется на заранее подготовленный фрагмент инструкций физического процессора. -Эмуляция позволяет использовать виртуализированные аппаратные средства еще до выхода реальных. -Например, управление неизмененной ОС, предназначенной для PowerPC на системе с ARM процессором. - *Эмуляция оборудования моделирует аппаратные средства* ![Схема эмуляции оборудования](https://raw.githubusercontent.com/Amet13/virtuozzo-tutorial/master/images/emulation.png) +Динамический транслятор позволяет во время исполнения переводить инструкции целевого (гостевого) процессора в инструкции центрального процессора хоста для обеспечения эмуляции. +QEMU обеспечивает динамическую трансляцию преобразованием целевой инструкции в микрооперации, эти микрооперации представляют собой элементы C-кода, которые компилируются в объекты. +Затем запускается основной транслятор, который отображает целевые инструкции на микрооперации для динамической трансляции. +Такой подход не только эффективен, но и обеспечивает переносимость. + ### <a name='full-virt'></a>Полная виртуализация Полная виртуализация использует гипервизор, который осуществляет связь между гостевой ОС и аппаратными средствами физического сервера. В связи с тем, что вся работа с гостевой операционной системой проходит через гипервизор, скорость работы данного типа виртуализации ниже чем в случае прямого взаимодействия с аппаратурой. -Основным преимуществом является то, что в ОС не вносятся никакие изменения, единственное ограничение — операционная система должна поддерживать основные аппаратные средства. +Основным преимуществом полной виртуализации является то, что в ОС не вносятся никакие изменения, единственное ограничение — операционная система должна поддерживать основные аппаратные средства (AMD SVM или Intel VT). *Полная виртуализация использует гипервизор* ![Схема полной виртуализации](https://raw.githubusercontent.com/Amet13/virtuozzo-tutorial/master/images/full-virt.png) -Полная виртуализация возможна исключительно при условии правильной комбинации оборудования и программного обеспечения. +В архитектуре KVM виртуальная машина выполняется как обычный Linux-процесс, запланированный стандартным планировщиком Linux. +На самом деле, виртуальный процессор представляется как обычный Linux-процесс, это позволяет KVM пользоваться всеми возможностями ядра Linux. +Эмуляцией устройств управляет модифицированная версия QEMU, которая обеспечивает эмуляцию BIOS, шины PCI, шины USB, а также стандартный набор устройств, таких как дисковые контроллеры IDE и SCSI, сетевые карты и другие. ### <a name='paravirt'></a>Паравиртуализация Паравиртуализация имеет некоторые сходства с полной виртуализацией. @@ -180,7 +184,8 @@ VCMM (Virtuozzo containers memory management) — сервис управлен На графике можно наблюдать, что OpenVZ обеспечивает практическую нативную пропускную способность 10Gb сети (9.7Gbit/s отправка и 9.87Gbit/s прием). ## [[⬆]](#toc) <a name='history'></a>Краткая история проекта Virtuozzo -В 1999 году возникла идея создания Linux-контейнеров, а уже в 2002 году компания SWsoft представила первый релиз коммерческой версии Virtuozzo. В том же 2002 году появились первые клиенты в Кремниевой долине. +В 1999 году возникла идея создания Linux-контейнеров, а уже в 2002 году компания SWsoft представила первый релиз коммерческой версии Virtuozzo. +В том же 2002 году появились первые клиенты в Кремниевой долине. В 2004 году выпуск Virtuozzo для Windows. В 2005 году было принято решение о разделении Virtuozzo на два отдельных проекта, свободный OpenVZ (под лицензией GNU GPL) и проприетарный Virtuozzo. @@ -191,7 +196,7 @@ VCMM (Virtuozzo containers memory management) — сервис управлен В 2011 году появилась идея создания проекта CRIU, OpenVZ портирован на RHEL 6. В 2012 году стала доступна CRIU v0.1. -В конце 2014 года компания Odin анонсировала открытие кодовой базы Parallels Cloud Server и объединение ее с открытой OpenVZ. +В конце 2014 года компания Odin анонсировала открытие кодовой базы Parallels Cloud Server и объединение ее с открытым кодом OpenVZ. В апреле 2015 года открыт репозиторий с ядром RHEL 7 (3.10), в мае были открыты исходные коды пользовательских утилит, а в июне выложены тестовые сборки ISO-образов и RPM-пакеты. @@ -206,7 +211,7 @@ VCMM (Virtuozzo containers memory management) — сервис управлен Установка Virtuozzo с помощью PXE (Preboot Execution Environment) подробно описана в [документации](https://docs.openvz.org/virtuozzo_7_installation_using_pxe_guide.webhelp/). ### <a name='bare-metal'></a>Установка Virtuozzo с помощью ISO-образа (bare-metal installation) -Дистрибутив Virtuozzo Linux с патчами для ядра RHEL 7, утилитами управления и модифицированным установщиком является самым простым способом установки Virtuozzo на сервер. +Дистрибутив Virtuozzo Linux с патчами для ядра RHEL 7, утилитами управления и модифицированным установщиком, является самым простым способом установки Virtuozzo на сервер. Текущая последняя версия ISO-образа доступна по адресу: https://download.openvz.org/virtuozzo/releases/7.0-rtm/x86_64/iso/ @@ -308,7 +313,7 @@ Password: пароль_пользователя_root [root@virtuozzo ~]# systemctl enable ntpd ``` -## [[⬆]](#toc) <a name='templates-ct'></a>Управление шаблонами гостевых ОС и приложений контейнеров +## [[⬆]](#toc) <a name='templates-ct'></a>Управление шаблонами контейнеров ### <a name='guest-os'></a>Шаблоны гостевых ОС Шаблоны гостевых ОС используются для создания контейнеров. @@ -334,6 +339,7 @@ ubuntu-15.04-x86_64 ``` [root@virtuozzo ~]# vzpkg list --available --with-summary | xargs vzpkg install template ``` + Альтернативный вариант установки шаблонов: ``` [root@virtuozzo ~]# yum install debian-8.0-x86_64-ez fedora-22-x86_64-ez ubuntu-14.04-x86_64-ez ubuntu-14.10-x86_64-ez ubuntu-15.04-x86_64-ez @@ -382,7 +388,7 @@ centos-6-x86_64 2015-10-19 00:43:44 Просмотр списка шаблонов приложений для `centos-7-x86_64`: ``` [root@virtuozzo ~]# vzpkg list centos-7-x86_64 -centos-7-x86_64 2016-02-09 17:01:05 +centos-7-x86_64 2016-02-09 17:01:05 centos-7-x86_64 mod_ssl centos-7-x86_64 jsdk centos-7-x86_64 cyrus-imap @@ -435,7 +441,6 @@ centos-7-x86_64 jre 2016-02-09 20:03:50 ### <a name='configs'></a>Конфигурационные файлы В старых версиях OpenVZ основным идентификатором контейнера является CTID, который вручную указывался при создании контейнера. Сейчас в этом нет необходимости, на смену CTID пришел UUID, который создается автоматически. -Однако существует возможность указания UUID вручную. Каждый контейнер имеет свой конфигурационный файл, который хранится в каталоге `/etc/vz/conf/`. Именуются конфиги по UUID контейнера. @@ -528,7 +533,7 @@ DEF_OSTEMPLATE=".centos-7" [root@virtuozzo ~]# prlctl set ct1 --hostname ct1.virtuozzo.localhost ``` -Установка поискового домена (если требуется): +Установка поискового домена: ``` [root@virtuozzo ~]# prlctl set ct1 --searchdomain 192.168.0.1 ``` @@ -561,14 +566,14 @@ esxrcH7dyoA46LY ``` ### <a name='run-enter'></a>Запуск и вход -После настроек нового контейнера. его можно запустить: +Запуск контейнера: ``` [root@virtuozzo ~]# prlctl start ct1 Starting the CT... The CT has been successfully started. ``` -Проверяем сетевые интерфейсы внутри гостевой ОС: +Проверка сетевых интерфейсов внутри гостевой ОС: ``` [root@virtuozzo ~]# prlctl exec ct1 ip addr show venet0 2: venet0: <BROADCAST,POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default @@ -583,13 +588,13 @@ The CT has been successfully started. valid_lft forever preferred_lft forever ``` -Также проверим корректность hostname: +Проверка корректности hostname: ``` [root@virtuozzo ~]# prlctl exec ct1 hostname ct1.virtuozzo.localhost ``` -Проверяем доступность контейнера в сети и корректность пароля суперпользователя: +Проверка доступности контейнера в сети и корректность пароля суперпользователя: ``` [root@virtuozzo ~]# ssh root@192.168.0.161 root@192.168.0.161's password: eVjfsDkTE63s5Nw @@ -600,11 +605,6 @@ root@ct1:~# ``` [root@virtuozzo ~]# prlctl enter ct1 entered into CT -root@ct1:/# -``` - -Выход из контейнера: -``` root@ct1:/# exit logout [root@virtuozzo ~]# @@ -620,7 +620,7 @@ CT ct1 exist running CT ct2 exist stopped ``` -По выводу команды можно наблюдать, что контейнер `ct1` существует и запущен, а контейнер `ct2` существует и остановлен. +По выводу команды можно увидеть, что контейнер `ct1` запущен, а контейнер `ct2` остановлен. Остановка контейнера: ``` @@ -629,8 +629,8 @@ Stopping the CT... The CT has been successfully stopped. ``` -Иногда нужно выключить контейнер как можно быстрее, например если контейнер был подвержен взлому. -Для того чтобы срочно выключить контейнер, нужно использовать ключ `--kill`: +Иногда нужно выключить контейнер как можно быстрее, например если он был подвержен взлому или создает критическую нагрузку на хост-ноду. +Для того чтобы срочно выключить контейнер, нужно использовать параметр `--kill`: ``` [root@virtuozzo ~]# prlctl stop ct1 --kill Stopping the CT... @@ -658,9 +658,9 @@ Resuming the CT... The CT has been successfully resumed. ``` -Для удаления контейнера существует команда `delete`, перед удалением, контейнер нужно сначала остановить: +Для удаления контейнера существует команда `delete` (перед удалением, контейнер нужно сначала остановить): ``` -[root@virtuozzo ~]# prlctl stop +[root@virtuozzo ~]# prlctl stop ct1 Stopping the CT... The CT has been successfully stopped. [root@virtuozzo ~]# prlctl delete ct1 @@ -668,21 +668,17 @@ Removing the CT... The CT has been successfully removed. ``` -Команда выполняет удаление частной области сервера (`/vz/private/$UUID`) и переименовывает файл конфигурации (`/etc/vz/conf/$UUID.conf`), дописывая к нему `.destroyed`. +Команда выполняет удаление частной области сервера (`/vz/private/$UUID`) и переименовывает файл конфигурации (`/etc/vz/conf/$UUID.conf`), дописывая к его имени окончание `.destroyed`. ### <a name='reinstall-ct'></a>Переустановка контейнера Для переустановки ОС в контейнере, существует команда `vzctl reinstall`. -Прежде чем переустанавливать контейнер его нужно сначала остановить: +Переустановка и старт контейнера (для переустановки нужно сначала остановить контейнер): ``` [root@virtuozzo ~]# prlctl stop ct1 Stopping the CT... The CT has been successfully stopped. -``` - -Переустановка и старт контейнера: -``` -[root@virtuozzo ~]# vzctl reinstall ct1 +[root@virtuozzo ~]# vzctl reinstall ct1 --skipbackup ... Container was successfully reinstalled [root@virtuozzo ~]# prlctl start ct1 @@ -691,10 +687,7 @@ The CT has been successfully started. ``` По умолчанию, `vzctl reinstall` без дополнительных параметров, сохраняет все файлы (частную область) прошлого контейнера в каталог `/old` нового контейнера. -Для того, чтобы не копировать частную область предыдущего контейнера, необходимо использовать ключ `--skipbackup`: -``` -[root@virtuozzo ~]# vzctl reinstall ct1 --skipbackup -``` +Для того, чтобы не копировать частную область предыдущего контейнера, необходимо использовать параметр `--skipbackup`: ### <a name='clone-ct'></a>Клонирование контейнера Virtuozzo позволяет клонировать контейнеры: @@ -728,6 +721,7 @@ Failed to start the Container [root@virtuozzo ~]# prlctl set ct2 --ipadd 192.168.0.162/24 [root@virtuozzo ~]# prlctl set ct2 --ipadd fe80::20c:29ff:fe01:fb09 ``` + Смена hostname: ``` [root@virtuozzo ~]# prlctl set ct2 --hostname ct2.virtuozzo.localhost @@ -761,7 +755,7 @@ Debian GNU/Linux 8 \n \l ``` ### <a name='extra-info'></a>Расширенная информация о контейнерах -Подробная информация о контейнере: +Подробную информацию о контейнере можно получить командой `list` с параметром `-i`: ``` [root@virtuozzo ~]# prlctl list -i ct4 INFO @@ -850,7 +844,7 @@ ha_prio HA_PRIO Все эти параметры можно редактировать в файлах шаблонов, в каталоге `/etc/vz/conf/`. Их можно установить вручную, редактируя соответствующие конфиги или используя утилиты Virtuozzo. -Параметры контроля ресурсов условно разделяют на группы: +Параметры контроля ресурсов контейнеров условно разделяют на группы: * дисковые квоты * процессор * операции ввода/вывода @@ -1136,12 +1130,7 @@ Disks stats 0.000 0.000 `vzpid` позволяет узнать к какому контейнеру принадлежит процесс, это может быть полезно при просмотре списка процессов с хост-ноды и поиска "процесса-грузчика": ``` [root@virtuozzo ~]# top -top - 20:43:26 up 33 min, 1 user, load average: 0.00, 0.01, 0.05 -Tasks: 178 total, 1 running, 176 sleeping, 1 stopped, 0 zombie -%Cpu(s): 1.7 us, 3.6 sy, 0.0 ni, 88.5 id, 0.0 wa, 0.0 hi, 6.2 si, 0.0 st -KiB Mem : 1013704 total, 382912 free, 138656 used, 492136 buff/cache -KiB Swap: 975868 total, 975868 free, 0 used. 688028 avail Mem - +... PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 5625 33 20 0 364432 6232 1284 S 26.2 0.6 0:03.20 apache2 ... @@ -1329,7 +1318,7 @@ crw------- 1 root root 10, 229 Feb 10 13:42 /dev/fuse [root@virtuozzo ~]# prlctl exec ct3 mount -t davfs https://webdav.yandex.ru /mnt/ Please enter the username to authenticate with server https://webdav.yandex.ru or hit enter for none. - Username: username + Username: user Please enter the password to authenticate user username with server https://webdav.yandex.ru or hit enter for none. Password: pass @@ -1337,7 +1326,7 @@ https://webdav.yandex.ru or hit enter for none. ## [[⬆]](#toc) <a name='vm'></a>Работа с виртуальными машинами Помимо создания контейнеров, Virtuozzo 7 поддерживает создание и управление виртуальными машинами на базе QEMU/KVM. -Утилита `prlctl` имеет возможно создавать и управлять виртуальными машинами, помимо этого также доступно управление ВМ с помощью libvirt. +Утилита `prlctl` имеет возможно создавать и управлять виртуальными машинами, помимо этого также доступно управление ВМ с помощью `libvirt`. ### <a name='create-vm'></a>Создание и запуск ВМ Создание виртуальной машины практически ничем не отличается от создания контейнера: @@ -1353,18 +1342,18 @@ The VM has been successfully created. ``` [root@virtuozzo ~]# prlctl create vm1 -d list The following values are allowed: -win-2000 win-xp win-2003 win-vista -win-2008 win-7 win-8 win-2012 -win-8.1 win rhel rhel7 -suse debian fedora-core fc -xandros ubuntu mandriva mandrake -centos centos7 psbm redhat -opensuse linux-2.4 linux-2.6 linux -mageia mint freebsd-4 freebsd-5 -freebsd-6 freebsd-7 freebsd-8 freebsd +win-2000 win-xp win-2003 win-vista +win-2008 win-7 win-8 win-2012 +win-8.1 win rhel rhel7 +suse debian fedora-core fc +xandros ubuntu mandriva mandrake +centos centos7 psbm redhat +opensuse linux-2.4 linux-2.6 linux +mageia mint freebsd-4 freebsd-5 +freebsd-6 freebsd-7 freebsd-8 freebsd ``` -Для каждой виртуальной машины в каталоге `/vz/vmprivate/` создается собственная директория с именем `ВМ.pvm`: +Для каждой виртуальной машины в каталоге `/vz/vmprivate/` создается собственная директория с именем `$NAME.pvm`: ``` [root@virtuozzo ~]# ls /vz/vmprivate/vm1.pvm/ config.pvs config.pvs.backup harddisk.hdd @@ -1586,7 +1575,7 @@ Boot order: hdd0 cdrom0 memory_guarantee auto hdd0 (+) scsi:0 image='/vz/vmprivate/vm3.pvm/harddisk.hdd' type='expanded' 65536Mb subtype=virtio-scsi [root@virtuozzo ~]# prlctl set vm3 --applyconfig config-1024MB-centos7 -[root@virtuozzo ~]# prlctl list vm3 -i | grep Hardware -A9 +[root@virtuozzo ~]# prlctl list vm3 -i | grep "cpu\|memory\|video\|hdd0" Boot order: hdd0 cdrom0 cpu cpus=2 VT-x accl=high mode=32 cpuunits=1000 cpulimit=1024Mhz ioprio=4 iolimit='0' mask=0-1 memory 1024Mb @@ -1596,7 +1585,12 @@ Boot order: hdd0 cdrom0 ``` ### <a name='devices-vm'></a>Добавление и удаление устройств в ВМ -Для каждой виртуальной машины доступно максимум 4 IDE или 8 SCSI (HDD, CD/DVD-ROM) устройств, 16 сетевых адаптеров, 4 последовательных порта и по одному USB-контроллеру и FDD. +Для каждой виртуальной машины доступно максимальное количество устройств: +* 4 IDE или 8 SCSI (HDD, CD/DVD-ROM) устройств +* 16 сетевых адаптеров +* 4 последовательных (COM) порта +* один USB-контроллер +* одно FDD устройство Добавление дополнительного HDD для виртуальной машины с Linux: ``` @@ -1631,11 +1625,6 @@ First sector (2048-4194303, default 2048): <Enter> Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303): <Enter> Command (m for help): w [root@vm1 /]# mkfs -t ext4 /dev/sdb1 -... -Allocating group tables: done -Writing inode tables: done -Creating journal (8192 blocks): done -Writing superblocks and filesystem accounting information: done [root@vm1 /]# mount /dev/sdb1 /mnt/ [root@vm1 /]# tail -1 /etc/mtab >> /etc/fstab ``` @@ -1665,10 +1654,10 @@ Remove the cdrom1 device. Изменение приоритета загрузки устройств: ``` -[root@virtuozzo ~]# prlctl list vm1 -i | grep 'Boot order' +[root@virtuozzo ~]# prlctl list vm1 -i | grep "Boot order" Boot order: hdd0 hdd1 [root@virtuozzo ~]# prlctl set vm1 --device-bootorder "hdd1 hdd0" -[root@virtuozzo ~]# prlctl list vm1 -i | grep 'Boot order' +[root@virtuozzo ~]# prlctl list vm1 -i | grep "Boot order" Boot order: hdd1 hdd0 ``` |