Logical Domains — технология виртуализации и разделения физических ресурсов для линейки UNIX-серверов, основанных на архитектуре SPARC V9, представленная в мае 2007 корпорацией Sun Microsystems.
Управлять гипервизором возможно из командной строки или визуальными интерфейсами управления, последнее не будет здесь рассматриваться.
Примеры приведены для ОС Solaris 10, в Solaris 11 стоит учитывать особенности настройки сети.
В терминологии Sun виртуальные машины обозначаются как домены, существует несколько видов доменов.
Роли доменов
- Control Domain — Домен управления, именно в нём работает Oracle VM Server, создаётся при установке по умолчанию из системы где устанавливается Oracle VM Server, имеет название primary. Может быть только один домен управления.
- Service Domain — Домен виртуальных устройств, таких как виртуальные свитчи, виртуальные диски и т.д. Любой домен может быть сконфигурирован как Service Domain, по умолчанию Control Domain уже является Service Domain.
- I/O Domain — Домен, имеющий доступ к физическим PCIe устройствам сервера. Может предоставлять доступ к этим устройствам, если сконфигурирован как Service Domain. Имеет более высокую производительность по сравнению с Guest Domain, почти сравнимую с невиртуализированным сервером. Максимальное количество доменов ограничивается количеством PCIe-шин на сервере. Использование подобных доменов усложняет миграцию. По умолчанию Control Domain выполняет функции I/O Domain.
Просмотр имеющихся PCIe-шин и устройств:
# /usr/sbin/ldm list-io
- Root Domain — Корневой домен имеет более расширенный доступ к архитектуре физических PCIe устройств сервера, чем I/O Domain. Имеет доступ ко всем сервисам предоставляемым PCIe устройствами, например к фабрике обработки ошибок (fabric error handling). Количество корневых доменов зависит от архитектуры сервера.
- Guest Domain — Гостевой домен, имеет только виртуальные устройства.
Обозначения виртуальных устройств и сервисов
- vnet – Virtual Network. Виртуальная сетевая карта.
- vsw – Virtual Switch. Виртуальный свитч.
- vds – Virtual Disk Server. Виртуальный жёсткий диск. Модель использования диска строится на клиент-серверной архитектуре, поэтому для доступа к диску используется клиент vdc, а vds представляет собой службу доступа к физическим дискам или их образам.
- vdc — Virtual Disk Client. Предоставляет доступ к виртуальному жёсткому диску. Несмотря на то, что виртуальные диски относятся к Guest Domain большинство операций по работе с ними выполняется на Service Domain.
- vcc — Virtual Console Concentrator. Обычно данное виртуальное устройство имеет Control Domain (primary). Оно обеспечивает доступ к консолям виртуальных машин. Сервис svc:/ldoms/vntsd:default обеспечивает доступ к консолям виртуальных машин, запущен в Control Domain.
Пример создания основных сервисов
Обычно сервисы устройств создаются в Control Domain, но можно выделить для этого отдельный домен — Service Domain.
- Создаём концентратор консолей в домене primary, с названием primary-vcc0 и диапазоном используемых портов 5000-5100:
# /usr/sbin/ldm add-vcc port-range=5000-5100 primary-vcc0 primary
- Создаём сервер виртуальных жёстких дисков в домене primary, с названием primary-vds0:
# /usr/sbin/ldm add-vds primary-vds0 primary
- Создаём виртуальный свитч в домене primary, с названием primary-vsw0 и привязываем его к сетевому интерфейсу nxge0. Использовать mac-адрес сетевой карты:
# /usr/sbin/ldm add-vsw net-dev=nxge0 primary-vsw0 primary
Используется указанный mac-адрес:
# /usr/sbin/ldm add-vsw mac-addr=2:04:4f:fb:9f:0d net-dev=nxge0 primary-vsw0 primary
- Просмотреть список сервисов домена primary:
# /usr/sbin/ldm list-services primary
Настройка Control Domain и высвобождение ресурсов из него для других доменов
- Просмотр списка криптографических устройств. Используются в системах SPARC, наличие этих устройств в домене не позволяет динамически переконфигурировать количество CPU:
# /usr/sbin/ldm list -o crypto primary
- Естественно ставим этот параметр в 0, или вообще не трогаем эту команду:
# /usr/sbin/ldm set-mau 0 primary
- Задаём количество ядер домену primary:
# /usr/sbin/ldm set-vcpu 8 primary
- Запускаем переконфигурацию домена primary или просто перезагружаем сервер:
# /usr/sbin/ldm start-reconf primary
- Задаём количество оперативной памяти домену primary:
# /usr/sbin/ldm set-memory 4G primary
- Сохраняем текущую конфигурацию доменов как initial:
# /usr/sbin/ldm add-config initial
- Просмотреть список конфигураций доменов(initial [next poweron] означает, что конфигурация будет использоваться при следующей загрузке гипервизора):
# /usr/sbin/ldm list-config
- Перезагружаем гипервизор:
# shutdown -y -g0 -i6
По умолчанию между Control Domain и остальными доменами нет сетевого соединения, это связано с тем, что Control Domain использует физический интерфейс(напр.: nxge0), а остальные домены виртуальные(напр.: vsw0).
Конфигурирование виртуального свитча как главного интерфейса в Control Domain
- Список всевозможных сетевых интерфейсов системе:
# /usr/sbin/dladm show-link
- Включаем необходимый виртуальный свитч:
# /usr/sbin/ifconfig vsw0 plumb
- Выключаем физический интерфейс:
# /usr/sbin/ifconfig nxge0 down unplumb
- Задаём IP-адрес и помечаем интерфейс виртуального свитча включенным:
# /usr/sbin/ifconfig vsw0 192.168.0.108 netmask 255.255.0.0 broadcast+up
Или можно использовать DHCP:
# /usr/sbin/ifconfig vsw0 dhcp start
- Не забываем прописать настройки сетевого интерфейса в конфигурационные файлы:
# mv /etc/hostname.nxge0 /etc/hostname.vsw0
При использовании DHCP:
# mv /etc/dhcp.nxge0 /etc/dhcp.vsw0
Создание Guest Domain
- Создание домена ldg1:
# /usr/sbin/ldm add-domain ldg1
- Добавление процессоров в домен ldg1:
# /usr/sbin/ldm add-vcpu 8 ldg1
- Добавление оперативной памяти в домен ldg1:
# /usr/sbin/ldm add-memory 2G ldg1
- Добавление сетевого интерфейса vnet1, подключенного к свитчу vsw0 в домене ldg1:
# /usr/sbin/ldm add-vnet vnet1 primary-vsw0 ldg1
- Добавляем физический жёсткий диск /dev/dsk/c2t1d0s2 к виртуальному дисковому серверу primary-vds0 под именем vol1.
# /usr/sbin/ldm add-vdsdev /dev/dsk/c2t1d0s2 vol1@primary-vds0
Или:
- Создание ФС с точкой монтирования:
# zfs create -o mountpoint=/LDoms rpool/LDoms
- Создание файловой системы определённого размера:
# /usr/sbin/zfs create -V 10G rpool/LDoms/disk1
- Добавляем раздел ZFS в качестве виртуального диска на дисковый сервер:
# /usr/sbin/ldm add-vdsdev /dev/zvol/dsk/rpool/LDoms/disk1 vol1@primary-vds0
Или:
- Создать файл размером 10 гигабайт:
# /usr/sbin/mkfile 10G <имя файла>
- Добавляем файл в качестве виртуального диска:
# /usr/sbin/ldm add-vdsdev <имя файла> vol1@primary-vds0
- Создание ФС с точкой монтирования:
- Добавляем виртуальный диск vol1@primary-vds0 к домену ldg1 под именем vdisk1:
# /usr/sbin/ldm add-vdisk vdisk1 vol1@primary-vds0 ldg1
- Устанавливаем для домена ldg1 автозагрузку при старте сервера:
# /usr/sbin/ldm set-var auto-boot\?=true ldg1
- Устанавливаем диск с которого будет грузиться домен ldg1:
# /usr/sbin/ldm set-var boot-device=vdisk1 ldg1
- Связываем домен ldg1 с Control Domain:
# /usr/sbin/ldm bind-domain ldg1
- Просмотреть информацию о домене ldg1, в графе CONS будет указан порт, по которому подключиться к домену:
# /usr/sbin/ldm list-domain ldg1
- Просмотр всех связанных с доменом ldg1 ресурсов:
# /usr/sbin/ldm list-bindings ldg1
- Подключиться к консоли домена, слушающего порт 5000:
# /usr/bin/telnet localhost 5000
- Запустить домен ldg1, если он остановлен:
# /usr/sbin/ldm start-domain ldg1
Установка Oracle Solaris 10 с DVD-диска
- Останавливаем службу управления томами:
# /usr/sbin/svcadm disable volfs
- Останавливаем необходимый домен:
# /usr/sbin/ldm stop ldg1
- Исключить из списка управляемых доменов:
# /usr/sbin/ldm unbind-domain ldg1
- Добавляем привод /dev/dsk/c0t0d0s2 к виртуальному дисковому серверу primary-vds0 под именем dvd_vol:
# /usr/sbin/ldm add-vdsdev /dev/dsk/c0t0d0s2 dvd_vol@primary-vds0
- Подключаем завиртуализированный привод к домену ldg1 под именем vdisk_cd_media:
# /usr/sbin/ldm add-vdisk vdisk_cd_media dvd_vol@primary-vds0 ldg1
- Просмотр всех связанных с доменом ldg1 ресурсов:
# /usr/sbin/ldm list-bindings ldg1
- Связываем домен ldg1 с Control Domain:
# /usr/sbin/ldm bind-domain ldg1
- Запустить домен ldg1:
# /usr/sbin/ldm start-domain ldg1
- Подключаемся к консоли домена:
# /usr/bin/telnet localhost 5000
- Просматриваем алиасы устройств домена в поисках vdisk_cd_media:
ok devalias
- Загружаемся с диска:
ok boot vdisk_cd_media:f
Установка Oracle Solaris 10 из образа
- Остановить необходимый домен:
# /usr/sbin/ldm stop ldg1
- Исключить из списка управляемых доменов:
# /usr/sbin/ldm unbind-domain ldg1
- Добавить образ solaris10.iso к виртуальному дисковому серверу primary-vds0 под именем iso_vol:
# /usr/sbin/ldm add-vdsdev /export/solaris10.iso iso_vol@primary-vds0
- Подключить завиртуализированный привод к домену ldg1 под именем vdisk_iso:
# /usr/sbin/ldm add-vdisk vdisk_iso iso_vol@primary-vds0 ldg1
- Просмотреть все связанные с доменом ldg1 ресурсы:
# /usr/sbin/ldm list-bindings ldg1
- Связать домен ldg1 с Control Domain:
# /usr/sbin/ldm bind-domain ldg1
- Запустить домен ldg1:
# /usr/sbin/ldm start-domain ldg1
- Подключаемся к консоли домена:
# /usr/bin/telnet localhost 5000
- Просматриваем алиасы устройств домена в поисках vdisk_iso:
ok devalias
- Загружаемся с образа:
ok boot vdisk_iso:f
Удаление домена
- Остановить домен ldg1:
# /usr/sbin/ldm stop-domain ldg1
- Отвязать домен ldg1:
# /usr/sbin/ldm unbind-domain ldg1
- Удалить домен ldg1:
# /usr/sbin/ldm remove-domain ldg1
Комментарии (6)
SunTechnik
20.09.2019 20:20Статья более чем спорная.
Solaris 10 — требует Extended Support. Актуальный — Solaris 11.
«Oracle VM представляет из себя гипервизор XEN, установленный на ОС Solaris.» — Это справедливо для Oracvle VM под x86, и не имеет никакого отношения к Oracle VM под SPARC.
Для добавления ресурсов нет необходимости делать Unbind домена.
Непонятна вообще цель статьи. Это краткий перевод родной документации?serhak Автор
23.09.2019 10:59Вы правы, ХЕN используется в версии для x86. Заменил этот абзац.
Цель статьи указана в её заголовке, это небольшая шпаргалка(how-to). На Хабре часто вижу статьи, написанные в таком стиле. Они даже иногда появляются на главной странице, поэтому решил выложить свои заметки. Возможно будет кому-то полезно, возможно нет :)SunTechnik
23.09.2019 12:12Актуальность этой статьи — как сейчас рассказать как ставить Windows XP.
Статья полезна если разбирается какой-то случай от начала и до конца. Этого нет.
В статье много мелких ошибок и неясностей.
Команда /usr/sbin/zfs create -V 10G rpool/LDoms/disk1
создает устройство (zvol), а не файловую систему.
Зачем создавать файловую систему /LDoms?
В Control домене надо делать
mv /etc/hostname.nxge0 /etc/hostname.vsw0
, а не cp.
При Ваших настройках, после перезагрузки поднимется и nxge0, и vsw0 с одинаковыми настройками.
И это далеко не все замечания по статье…
vrangel
Спасибо за статью. Есть вопрос: каким инструментом в Solaris можно виртуализировать среду, развернутую на реальном железе? Есть группа старых серверов, хочется оптимизировать инфраструктуру.
SunTechnik
В самом Solaris есть много инструментов для этого. Простой поиск по Solaris p2v migration выдаст массу рекомендаций из блогов Oracle или документации.
Начинать надо со списка моделей исходных машин и используемых версий Solaris.
LDOM могут быть использованы далеко не всех серверах SPARC, тем более старых.
Гостевой ОС в LDOM может быть только Solaris 10 или Solaris 11.
Виртуализация в Solaris не ограничивается LDOM, есть еще и zones.
Zebra_86
Может подойдёт Solaris Container? Там можно наплодить зоны.