Беше ми голяма краста да пробвам XEN под линукс с новия ми процесор, който има нужните vmx разширения. Първо няколко думи за XEN. Това е най-интересния начин за витруализация с отворен код. Нещата станаха още по-интересни след като XEN започна да подържа и немодифицирани гост операционни системи но за това по-нататък. Xen представлява т.нар hypervisor – приложение което се зарежда ПРЕДИ операционната система и контролира достъпа до ресурсите на компютъра като по този начин позволява да се изпълняват много операционни системи едновременно. Достъпът до устройствата става през драйверите на една определена операционна система, която върви в особен привилегирован режим наречен Domain 0 или Dom0 за кратко. Гост операционните системи се наричат съответно Domain User или DomU. Dom0 е критичен за сигурността на цялата XEN инсталация понеже има достъп до гост операционните системи и ги контролира. В случая Dom0 е специално пачнат линукс, който освен по драйверите си (по скоро липсата на определени драйвери) не може да се различи от обикновен линукс. Под този линукс обаче има специален демон който отговаря за управлението (стартиране, спиране, рестартиране, мигриране!!!!) на гост операционните системи – xend. Администратора управлява този демон по два начина единият е през xm командата, другият пред питонски libvirt библиотеки. В openSUSE има готино гуи писано на питон който върши работата през libvirt.
На фиг.1 е показан xen Dom0 ядрото с основните приложения на xm командата – стартиране на виртуална машина и списък с параметрите й. Също се вижда промяната на състоянието на виртуалната машина от спряна в работеща.
Фиг.2 е YaST модула за управление на виртуалните машини през libvirt.
От фиг.3 до фиг.8 са дадени екраните за мониторинг на виртуалните машини, както и на Dom0. Преди да продължа с описание на инсталирането на виртуални машини, ще спомена и няколко думи за видовете виртуализация налични под Xen.
В началото Xen ползваше метод наречен паравиртуализация -Dom0 и DomU бяха пачнати за да разбират, че работят под управлението на hypervisor. Това дава предимство на DomU системите да съобразят алгоритмите си с факта, че биват прекъсвани за изпълнение на друга ос. Този метод за софтуерна виртуализация го воят за доста бърз и даваше по тестовете доста високи резултати. Недостатък е разбира се факта, че госта трябва да е пачнат. Това не е проблем с Linux но по този начин не можеше да се пуска боза и други затворени боклуци. Та се наложи първо AMD и после Intel да се намесват и като въвеждат хардуерни инструкции в процесорите които да правят възможно виртуализирането на немодифицирани гост операционни системи. Поради причини които нямам намерение да засягам този вид за т.нар. пълна виртуализация е по-бавен от паравиртуализацията и гостите намя начин как да знаят, че работят под виртуална машина.
Та да се върнем към нашето SuSE. графичната инсталация и възможните избори са дадени на следващите фигури. Интересно, че не намерих начин да пусна звук под гост операционната система.
Инсталирането на openSUSE под XEN паравиртуализиран беше много лесно. Бях приятно изненадан, като видях, че от DVD директно се зарежда модифицирания DomU кернел. С две думи тук никакви въпроси. Друго нещо което пробвах беше като копирам вече инсталиран имидж да направя нова виртуална машина. Пак никакъв проблем. Копира се имидж файла и се внася през гуито или се бута конф файла на ръка.
Предимството на паравиртуализацията е видно на последната фигура. При подаване на команда за изгасяне от Dom0 в DomU се изпълнява нормална процедура по изключване.
За да се пускат немодифицирани гост ОС е нужно да има съответните хардуерни разширения в процесора, чипсета да ги поддържа и BIOS-а на дъното също да е наясно с това. Xen 3 и по-голям нямат проблеми с ползването на разширенията. Процесора на който тръгна всичко е C2D E6550. На лаптопа ми тези разширения ги няма. Командата с която може да се провери това е cat /proc/cpuinfo . Фиг.10 е на процесор със съответните разширения, а фиг.11 без
Възможност да се тества всичко това е да се сложи някаква боза. Например Боза 2003 не знам къв си сървър. Инсталацията протича нормално (пак през гуи-то). Може да е интересно да се види как бозата вижда виртуалната машина (последната фигура от серията).
Тестове за производителност не съм правил, но при пуснати няколко виртуални машини не се забелязва някакво дразнещо забавяне. Графичния интерфейс се показва през VNC съвръв/клиент.
Интересно нещо което не съм пробвал е възможността за прехвърляне на DomU системите от физическа машина към друга физическа машина. Според данните от Xen това ставало за около от 90 до 200 ms. Звучи впечатляващо. Ограничението е единствено машините да са на един събнет за сега. Май може и да падне това но не е ясно кога.
Какви други виртуализационни възможности има за Linux. Едното е разбира се VMware. Какъв е проблема с него-не се поддържа от дистрибуциите и изисква компилирането на модули за кернела, които не винаги минават. Иначе си е добър продукт. Qemu е доста стар претендент в тази категория. Въпроса е в производителността. Нова интересна идея представляват kvm пачовете в линукс кернела. Там се избягва Dom0 модела и се избягва изискването за пренаписването на драйвери. В момента това е доста в начално ниво и не знам да се ползва масово. Във връзка с това трябва да отбележа, че libvirt управлява както xen така и qemu и kvm. В новата федора 8 има някакъв нов интерфесй който смятам да опитам в най-скоро време. За сега Xen е идеален като възможности и поддръжка в линукс.
Само за протокола ще отбележа, че M$ се опитват да копират с поредната им въздухарска технология наречена с безумното име Veridian. Уж щяло да влезе в 2008 сървър (как боза и сървър се съчетават в едно изречение не ми е ясно) ама нещо май няма да успеят. Така че и бозаджиите ще се келешат, че можели да се виртуализират. Намам много данни но от това което чета не е паравиртуализация а пълна виртуализация – по неефективно, ама те са си такива…