Kiosk Mode VDI or Poor Man's VDI – story continues

Под впечатлением от статьи и с выходом новго VDI 3 (еще в стадии EA) начал “крутить” VirtualBox + SRSS с точки зрения простой и максимально дешевой альтернативы на исходным же технологиях. В результате выяснил, что алтернативы с “пол-пинка” сделать не получится и за VDI денег не просто так берут, зато получил скрипт и работающюю предельно простую, на мой взгляд, схему, простую и понятную (с моей точки зрения), в работе. Конечно, не хватает “свистелок” вроде графического интерфейса . Но все впереди 😉

И сразу же влеплю маааленький такой disclaimer – это НЕ попытка отговорить Вас от покупки Sun VDI – все-таки организации требуется нечто большее, чем пустой набор неких скриптов, написанных с непонятным качеством, возможно даже в предпразничную пору. Этот пример – лишь повод взглянуть на новые технологии, которые предлагает компания Sun (ну и конечно, мы – UBTec – я же инженер своей компании – хотя здесь пишу отсебятину).

Дальше много непонятных букофф, надеюсь, кому-то будет полезным на “подумать”.


Предварительно – я не буду описывать, как поставить то или иное ПО, как его настроить – на то есть неплохие, а местами отличные мануалы на сайтах docs.sun.com, virtualbox.org, opensolaris.org. Хост, на котором проводим экспиремент – SF X4150 (UBTec Company Demo), Dual Quad Xenon, RAM 8 GB, 4 SAS 146 GB. Размечены два зеркальных пула – rpool (диски c0t0d0 и c0t1d0) , используется для работы ОС, размещения свопа и тд тп – ничего необычного. Второй пул – диски c0t2d0 и c0t3d0 – называется vpool, также зеркальный, используется специально для размещения наших Виртуальных Машин (VM). Размещение образов дисков – на томах ZFS (VOL). Как всегда – есть проблема с возможным корректным бэкапом 😉 Потому уход в стороны Файловой Системы (FS) – неизбежен – что позволит размещать Дисковые Образа (VDI) на отдельных файловых системах.

Как оно работает

Для работы нужны Solaris 11 “Nevada” build 112 (я его использую) , SRSS 4.1 (патчи по вкусу) , SRWC 2.1 (таки опять – по вкусу накидать патчей) , VirtualBox 2.2.2, любая машина с поддержкой аппаратной виртуализации и достаточным количеством памяти. Здесь я перечислил те дистрибутивы на котором построил стенд – Вы же можете использовать , например , вместо Solaris 11 – Solaris 10 10/08 – единственный момент – это обязательное использование SRSS версии 4 и выше. ZFS – версия не важна , iSCSI – не используем – очень маленькая инсталляция. При выполнении настройки SRSS (utconfig) выберите имя для пользователей киосков kwin – это специфичная часть инсталляции.

Есть исходный образ виртуальной машины – я его подготовил на ноутбуке, после совещания с вендоводом для тестов был выбран дистрибутив Windows XP Professional, размер образа VDI – 2 Гб (наш будущий диск C:), объем памяти – 256 МБ, название для образа выбрал winxp-refrence.vdi. Можно использовать и собственно хост соляриса – как угодно – мне удобнее было на Маке это сделать. Заранее подогнал настройки WinXP под необходимые требования – как то классический интерфейс и тд – не специалист, знаю, что надо было бы сделать еще и sysprep.exe – но это не цель в данном тесте/деме. Файл VDI переложил на хост. Делаем маленький финт ушами – создаем новый VOL для размещения VDI (zfs create -b 128k -V 2G vpool/winxp-refrence.vdi) – здесь ключевой момент – размер volblocksize=128k – если оставить по умолчанию 8к – результат будет соовсем плохонький с точки зрения производительности. После даем команду dd if=/vpool/vmfs/winxp-refrence.vdi of=/dev/zvol/dsk/vpool/winxp-refrence.vdi bs=128k. Этот

Ну далее начниается совсем простое:

zfs snapshot vpool/winxp-refrence.vdi@WinXPClear
 let i=0 ; while [ $i -le 9 ] ; do
 zfs clone vpool/winxp-refrence.vdi@WinXPClear vpool/winxp-kwin${i}
 chown kwin${i} /dev/zvol/dsk/vpool/winxp-kwin${i}
 let i++
 done

Скрипт для работы в Киоске, например, CDE, который obsolete, но никак не издохнет, что есть очень ГУТ – потому как существенно менее ресурсоемкий, чем JDS:

#!/bin/bash
#
# ident "@(#) cr_virt.sh 1.01 07/05/2009"
#
# Changelog :
# 1.00 :
# - VBoxSDL initialy used for VMs
# 1.01 :
# - uttsc + VBoxHeadless used
#
exec 2>/var/tmp/cr_virt.sh.$$ ### debug
set -x

PATH=$PATH:/usr/bin:/opt/SUNWut/bin:/opt/SUNWuttsc/bin
_VMUSER="$LOGNAME"
_BASEFOLDER="/vpool/vms/${_VMUSER}"
_VRDPPORT="3389${_VMUSER#kwin}"trap "VBoxManage controlvm winxp-${_VMUSER} poweroff ; rm -r ~/.VirtualBox ; rm -r /vpool/vms/${_VMUSER} ; exit" 0 1 2 3 14 15

mkdir $_BASEFOLDER
VBoxManage createvm --name winxp-${_VMUSER} --basefolder $_BASEFOLDER --register
VBoxManage modifyvm winxp-${_VMUSER} --memory "512MB" --acpi on --nic1 nat \
--vtxvpid on --hwvirtex on --ostype WindowsXP
VBoxManage modifyvm winxp-${_VMUSER} --hda /vpool/vmfs/winxp-${_VMUSER}.vdi
VBoxHeadless -s winxp-${_VMUSER} --vrdp on --vrdpport $_VRDPPORT &
sleep 2
uttsc -P $_VRDPPORT -m -b localhost
wait %1
rm -r ~/.VirtualBox
rm -r /vpool/vms/${_VMUSER}

который должен быть размещен в любом удобном месте на хосте (mkdir -p /usr/local/bin && vi cr_virt.sh – copy/paste). Не забываем про настройки киосков – в части создания приложений для Киоска CDE необходимо правильно выбрать тип сессии.

Смотрим на результат, комментируем, я продолжаю активно “точить” скрипты.

Результат

10 рабочих мест – уникальных инсталляций Windows XP. Пригодно для выполнения любых задач 🙂

TODO List

Просто ОГРОМЕН! Да мноооого чего делать надо: уйти от использования томов как унаследованной (по причинам простоты первичного использования), начать использовать utaction (сделать нормальное “засыпание” витруальной машины – позволит качественно улучшить утилизацию ресурсов), написать нормальный(е) скрипты. Короче, работы – непочатый край. Но я не ставлю себе в задачи делать что-то более существенное – идею, надеюсь, донести смог – а доделывать буду уже для себя/для работы, не уверен, что смогу отслеживать изменения еще и на блоге.

Sincerely u,
Ilyxa

English Version … Auto-translated by Google.

Leave a Reply