четверг, 10 января 2008 г.

Виртуализация гостевых ОС. Технология BrandZ

В 2005 году компания Sun объявила о выходе программы BrandZ (ранее именовавшеся Project Janus), позволяющей выполнять Linux-приложения под управлением Solaris 10. Проект BrandZ является фреймворком расширяющим инфраструктуру Solaris Zones в создании Branded Zones, который позволяет запускать внутри Solaris Zone операционные среды отличные от Solaris. Например, создать изолированное окружение с GNU или BSD утилитами от Linux или FreeBSD.


Метка lx позволяет запускать Linux приложения на машине с ОС Solaris в пределах зон, которые полностью управляемы Linux.
В официальные релизы Sun Solaris 10 данное расширение еще не входит и доступно только в версиях OpenSolaris Express (Project Nevada). На данный момент поддерживается Linux CentOS и RHEL (Kernel 2.4). Также во второй половине 2008 года я думаю свешится появление технологии BrandZ в коммерческой версии Solaris 10 под наименовнаием Solaris Containers for Linux Applications.
Метка lx - это не дистрибутив Linux и не содержит никакого программного обеспечения Linux вообще. Метка lx позволяет использовать программное обеспечение Linux, чтобы запускать его на машине с ядром Solaris и включает инструменты необходимые для установки CentOS или Red Hat Enterprise Linux в зоне на системе Solaris. Метка lx на сегодня поддерживается только на x86/x64 системах, загруженных с 32-битовым или с 64-битовым ядром. Независимо от основного ядра, только 32-битовые приложения Linux в состоянии запускаться. BrandZ не поддерживает SPARC Linux. Это могло быть интересным проектом сообщества Sun Solaris, но пока это не состоит в будующих планах компании Sun.

Часть 1. Настройка Solaris Zones для работы с BrandZ

Для настройки BrandZ создадим зону. Все действия описанные ниже проиводятся в Sun OpenSolaris Express CE Build 78 (Nevada)
bash-3.2# zonecfg -z linux_rhel 
centos: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:centos> create -t SUNWlx
zonecfg:centos> set zonepath=/zfs/linux_rhel
zonecfg:centos> add net
zonecfg:centos:net> set address=192.168.1.235
zonecfg:centos:net> set physical=rtls0
zonecfg:centos:net> end
zonecfg:centos> verify
zonecfg:centos> commit
zonecfg:centos> exit
bash-3.2# chmod 700 /zfs/linux_rhel
Кто сталкивался с настройкой зон уже понял в чем собственно является расширение BrandZ на первый взгляд. Шаблон SUNWlx который включается при создании зоны присваевает этой зоне метку lx. Далее после настройки зоны нам нужно установить саму ОС.

Часть 2. Установка операционой системы в Branded Zone

Установка гостевых ОС на сегодня проиходит 3 способами.
1. Установка с диска
2. Установка с ISO-образа
3. Установка из готового образа файловой системы ОС (Tarball)

Для всех способов применяется ключ -d для указания источника установки. Также после указания истояника установки можно указывать вид установки, например server или desktop.
В этой заметке я буду использовать ISO образы Red Hat Enterprise Linux 3.7 и Tarball Centoss 3.7.

Установка Red Hat Enterprise Linux 3.7 в Branded Zone из ISO образов.
bash-3.2# ls -l /mnt/nfs/Software/ISO/RedHat/RHEL3x/*
total 1738404
-rwxr-xr-x 1 ftp ftp 153401344 Jan 3 18:31 RHEL3.7-i386-AS-Disc1.iso
-rwxr-xr-x 1 ftp ftp 656138240 Jan 3 18:33 RHEL3.7-i386-AS-Disc2.iso
-rwxr-xr-x 1 ftp ftp 667158528 Jan 3 18:34 RHEL3.7-i386-AS-Disc3.iso
-rwxr-xr-x 1 ftp ftp 301643776 Jan 3 18:35 RHEL3.7-i386-AS-Disc4.iso
bash-3.2# zoneadm -z linux_rhel install -d /mnt/nfs/Software/ISO/RedHat/RHEL3x/ server
cannot create ZFS dataset disk01/linux_rhel: dataset already exists
Checking for valid Linux distribution ISO images...
Installing distribution 'Red Hat Enterprise Linux 3 AS (CD Set)'...
Installing cluster 'server'
Installing miniroot for zone 'linux_rhel'.
Setting up the initial lx brand environment.
System configuration modifications complete.
Duplicating miniroot; this may take a few minutes...
Booting zone miniroot...
Miniroot zone setup complete.

Performing full install for zone 'linux_rhel'.
Attempting to locate 426 packages...

Installing zone 'z_linux' from
ISO "/mnt/nfs/Software/ISO/RedHat/RHEL3x//RHEL3.7-i386-AS-Disc1.iso".

Installing 304 packages; this may take several minutes...
...
...
Completing installation; this may take a few minutes.
Setting up the initial lx brand environment.
System configuration modifications complete.
Installation of Red Hat Enterprise Linux 3 to zone
'z_linux' completed Sat Jan 5 13:31:27 ALMT 2008.

Installation of zone 'z_linux' completed successfully.

Details saved to log file:
"/zfs/z_linux/root/var/log/z_linux.install.15754.log"
После того как установка закончилась, запустим нашу новую зону.
bash-3.2# zoneadm list -cv
ID NAME STATUS PATH BRAND IP
0 global running / native shared
- linux_rhel installed /zfs/linux_rhel lx shared
bash-3.2# zoneadm -z z_linux boot
bash-3.2# zoneadm list -cv
ID NAME STATUS PATH BRAND IP
0 global running / native shared
3 linux_rhel running /zfs/linux_rhel lx shared
После прямого подключения к зоне в процессе ее загрузки вы можете увидеть следующее
bash-3.2# zlogin -C linux_rhel
[Connected to zone 'linux_rhel' console]

[NOTICE: Zone booting up]
INIT: version 2.85 booting
Welcome to Red Hat Enterprise Linux AS
Press 'I' to enter interactive startup.
Configuring kernel parameters: [ OK ]
Setting clock : Wed Jan 9 13:20:10 EST 2008 [ OK ]
Setting hostname z_linux: [ OK ]
Checking root filesystem [ OK ]
Activating swap partitions: [ OK ]
Checking filesystems [ OK ]
Mounting local filesystems: [ OK ]
Enabling swap space: [ OK ]
INIT: Entering runlevel: 3
Entering non-interactive startup
Starting system logger: [ OK ]
Starting kernel logger: [ OK ]
Starting automount: No Mountpoints Defined [ OK ]
Starting cups: [ OK ]
Starting sshd: [ OK ]
Starting crond: [ OK ]
..
..
Red Hat Enterprise Linux AS release 3 (Taroon Update 7)
Kernel 2.4.21 on an i686

linux_rhel login:
Собственно все, система установлена и готова к работе. Сама установка у меня лично заняла где то минут 20-30.

Установка Centoss 3.7 в Branded Zone из Tarball.

Тут все намного легче потому что этот архив называемый tarball, является готовым снимком файловой системы с Centoss и является готовым решением для BrandZ от Sun Microsystems, который можно скачать с сайта проекта BrandZ.

Для начала создадим зону
bash-3.2# zonecfg -z linux_centos 
centos: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:centos> create -t SUNWlx
zonecfg:centos> set zonepath=/zfs/linux_centos
..
..
zonecfg:centos> verify
zonecfg:centos> commit
zonecfg:centos> exit
bash-3.2# chmod 700 /zfs/linux_centos/
Далее берем готовый тарбал скаченный отсюда и начинаем обычную установку которая длится минут 10-15.
bash-3.2# zoneadm -z centos install -d /zfs/centos_fs_image.tar.bz2 
cannot create ZFS dataset disk01/linux_centos: dataset already exists
Installing zone 'linux_centos' at root directory '/zfs/linux_centos'
from archive '/zfs/centos_fs_image.tar.bz2'

This process may take several minutes.

Setting up the initial lx brand environment.
System configuration modifications complete.
Setting up the initial lx brand environment.
System configuration modifications complete.

Installation of zone 'linux_centos' completed successfully.

Details saved to log file:
"/zfs/linux_centos/root/var/log/centos.install.645.log"

bash-3.2# zoneadm list -cv
ID NAME STATUS PATH BRAND IP
0 global running / native shared
- linux_rhel running /zfs/linux_rhel lx shared
- linux_centos installed /zfs/linux_centos lx shared
bash-3.2# zoneadm -z linux_centos boot
bash-3.2# zlogin linux_centos

-bash-2.05b# uname -a
Linux centos 2.4.21 BrandZ fake linux i686 i686 i386 GNU/Linux
-bash-2.05b# cat /etc/redhat-release
CentOS release 3.7 (Final)
Вот и все. На сегодня о BrandZ я написал все что знал сам, а то что не написал либо не знаю либо подзабыл :)
В следующий раз попробую написать об установке в Branded-zones ОС с ядром 2.6

Проект BrandZ: http://opensolaris.org/os/community/brandz/
Установка BrandZ: http://opensolaris.org/os/community/brandz/install/

Комментариев нет: