Oracle VM Server for SPARC для чайников (How-to)

Небольшой How-to для начинающих работать с ОС Solaris и платформой виртуализации Oracle VM Server for SPARC, ранее известной как Sun Logical Domains.

image

Oracle VM представляет из себя гипервизор XEN, установленный на ОС Solaris.

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

Примеры приведены для ОС 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
  • Не забываем прописать настройки сетевого интерфейса в конфигурационные файлы:

    # cp /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
Теги:
Oracle, Solaris, OS, LDOM, VM, Logical Domains, SPARC

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

Похожие публикации