Skip navigation

Съвременната виртуализация

Networkworld България - брой 2, 2007 г. / Съдържание
1244 прочитания, 0

Днес над 25% от големите предприятия вече са внедрили сървърни виртуализационни решения, а още 10% от компаниите са стартирали пилотни проекти в тази насока. Наред с това основни ИТ компании интензивно работят над решения за виртуализация на настолни системи, които скоро ще намерят практическо приложение. Очевидно, че “виртуализация” на приложния и системен софтуер кардинално ще измени подходите и методите за гарантиране на ИТ безопасността, принципите за лицензиране на програмното осигуряване и методите за администриране. Виртуализацията на сървърите, прилагана днес, позволява кардинално да се свият средствата за оборудване, като същевременно се осигури по-високо ниво на защита и резервиране на критичните функции, и главно - дава се възможност за мащабиране и пренасяне на настроени и проверени решения между физически сървъри за време, непостижимо без използване на виртуализационни технологии. Виртуализацията на настолните системи за крайните потребители ще бъде още по-знаменателна и ще позволи например на компаниите да се откажат от централизираните покупки на компютри за персонала, свеждайки ИТ управлението на работните места до даване на разрешение на определени служители за покупка на собствен компютър със зададени параметри по съвместимост и производителност, а също и раздаване на виртуализирани “образи” на ОС с предварително инсталирани и настроени работни програми. От гледна точка на потребителите виртуализацията променя не само и не толкова самите програми или оборудване, колкото методиката и културата на използване на софтуерните приложения, подходите към въпросите на сигурността и инсталирането на “несанкциониран” софтуер. Хардуерна поддръжка на виртуализацията Реализацията на виртуализационна платформа (ВП) в архитектурата x86 поначало не бе предвидена от разработчиците, затова част от командите, които могат да се изпълняват в обичайните универсални ОС, не са длъжни да бъдат разрешени за изпълнение вътре във виртуализационната машина (ВМ). Прост начин за решаване на тези проблеми би била възможността за получаване на т.нар. прекъсвания или изключване при опит за изпълнение на тези команди вътре във ВМ, като целта е те да се обработват вътре във ВП. Сложното е това, че за някои клас команди не съществува прост способ за извикване на това изключение - те се отработват вътре във ВП, но дават не този резултат, който се очаква. Впрочем понякога изпълнението на такава небезопасна команда може да предизвика блокиране на основната ОС или „зависване” на целия компютър. Например, в архитектурата Intel Pentium такива команди са 26 и преди тяхното изпълнение в кода на ядрото гостуващата ОС трябва да предприеме специални мерки, което води до съществени режимни разходи по производителността. Преди около 2 г. Intel и AMD обявиха, че са създали хардуерна поддръжка за решаване на типовите задачи за мониторинг на виртуалната машина (МВМ). Основната цел на инсталирането на хардуерна поддръжка е облекчаване създаването на нови версии на виртуализиращ софтуер и намаляване спадането на производителността при използване на технология за виртуализация. Intel VT Същността на решението VT (Vitrualization Technology) е въвеждане на нов режим VMX за функциониране на процесора, специално предназначен за поддръжка на виртуализацията (Фиг. 1). В този режим програмният код може да работи или като VMX-root, или като VMX-nonroot - обикновено МВМ работи като VMX-root, а кодът на гостуващата ОС като VMX-nonroot. Превключването от VMX-root към VMX-nonroot код се нарича вход във ВМ (VM entry), а обратните превключвания - изход от ВМ (VM exit). Самите превключвания в терминологията на Intel се наричат VMX преходи (VMX transitions).

Фиг. 1 Архитектура Intel Vitrualization Technology
Поведението на процесора за кода VMX-root е почти същото, както и извън режима VMX, с изключение на наличието на допълнителен набор от VMX команди и ограничаване стойността на заредените в управляващите регистри CR0 и CR4. Поведението на процесора за кода VMX-nonroot е изменено по такъв начин, че се осъществява работа на ВП. Вместо да се изпълняват някои инструкции, включително новата VMCALL, в кода VMX-nonroot ще се осъществи изход от ВМ и управлението се предава на МВМ. Тези преходи остават невидими за гостуващия VMX-nonroot код, ограничавайки прекия му достъп до физическото оборудване, като позволява на МВМ напълно да контролира ресурсите на физическия компютър или да предоставя достъп до тях от гостуващата ОС. Тъй като VMX-режимът за кода VMX-nonroot внася ограничения даже за нивото на привилегии 0 (ядро ОС), гостуващата ОС и нейните програми без каквито и да е модификации могат да функционират във ВМ именно така, както са предвидили разработчиците на ОС при нейното проектиране. Редът за изпълнение на програмите в среда VT е следната. Командата VMXON на процесора се превежда във VMX режим. МВМ може да предава управлението само от гостуващата ОС във всеки момент с помощта на командата VMLAUNCH и VMRESUME (входове във ВМ). МВМ отново получава управлението при изход от ВМ. В ситуацията изход от ВМ управлението ще бъде предадено на предварително установена точка в кода на МВМ. МВМ определя причината за излизане от ВМ, предприема съответстващите действия и може да предаде управлението на гостуващата ОС отново чрез вход във ВМ. В всеки момент МВМ може да реши да напусне режима VMX, изпълнявайки командата VMXOFF.
Фиг.2 Жизнен цикъл на МВМ
Поддръжката на набора команди за включвания и изключвания VMX, командата VMX за преходите, задаването на критерии и правила за излизанията от ВМ и поддръжката на съответстващите структури на данните са първата част от технологията VT. В анонсираните планове на Intel голямо внимание се отделя на по-нататъшното развитие на технологията VT, например, обявена бе технологията VT-d, която позволява да се избегне пълната виртуализация на входно/изходните устройства. Използвайки VT-d, МВМ може да „прикрепи” драйвери към физическите устройства във ВМ, което позволява на гостуващата ОС да взаимодейства с прикачените устройства без да предава управлението на МВМ посредством механизма DMA (пряк достъп до устройствата през паметта, заобикаляйки процесора). Други примери за планирано развитие са заявената поддръжка на система за виртуализация на паметта Extended page tables (EPT — разширена технология за работа със страници от паметта). За сметка на появата на ново ниво на „косвеност” в адресацията на физическата памет тя облекчава проверката за принадлежност на адресите, заделени за гостуващата машина. AMDV През май 2005 г. AMD представи своите технологии за поддръжка на виртуализация Pacifica и Pacifica2, които по-късно бяха преименувани на AMD CPU virtualization technology (AMDV). Архитектурата AMDV прилича на VT и предоставя същите функционални възможности, но предвижда също редица допълнителни функции, липсващи в Intel VT. Две са най-важните разлики при AMDV: Tagged TLB (TTLB) и Device exclusion vector (DEV). При превключване между МВМ и ВМ в процесорите буферите в процесора за асоциативно преобразуване на адреси TLB (Translation Look-aside Buffer) при технологията VT се изчистват, а при AMD елементи от тези буфери, съдържащи препратки между виртуални и реални адреси от страници от паметта, се поместват в тагове, което позволява да се предприемат индивидуални решения за тяхното използване или изчистване. Съответно скоростта на превключване МВМ - ВМ при AMDV може съществено да се повиши, макар че програмната реализация на кеширането за VT също може да даде аналогичен резултат. От друга страна, TLB в AMD процесорите запомнят транслацията на въведените таблични страници (NPTables), което позволява да се получи физически адрес от паметта по виртуален адрес в пространството на гостуващия приложна програма без допълнителен етап на транслация на виртуалния адрес от МВМ пространството във физически. Друга важна разлика е технологията DEV — интензивно използване на вградения в AMD процесорите контролер на паметта. По същество това е аналог на VT-d, който описва на какви физически устройства е разрешен достъп и до какви страници от паметта на ВМ. Тя фактически осъществява свързване на устройствата към ВМ. Това позволява на ВМ да работи коректно чрез DMA без необходимост от контрол от страна на МВМ. Програмна виртуализация Първите подходи към виртуализацията, например емулация на компютри, бяха реализирани преди повече от 30 г. в IBM OS/370, а някои се развиха доста по-късно, но всички те са построени около проста концепция. Програмното осигуряване от висше ниво получава от програмното осигуряване от по-ниско ниво (в случая драйвера), или от електронното оборудване отговор на всякакви заявки. Ако се имитират отговори на програма от по-ниско ниво или от устройство, то програмата от по-високо ниво не е способна да различи кога отговорите идват от имитатора (или емулатора), а кога от истинското устройство. Съответно, подходите за виртуализация се различават в това на какво ниво от йерархията на програмното осигуряване се поставя емулаторът, наборът с повиквания, поддържани от емулатора, и по какъв начин се опростява работата на емулатора, какви модификации се налагат във виртуализираните приложни програми. Емулация на оборудване Тази технология предвижда пълна емулация на оборудване на ниво програмно осигуряване обикновено чрез създаване на процес на потребителко ниво, в който всъщност се осъществява самата емулация. Примери за реализация на такава технология са VMWare Workstation, Plex86, Parallels и MS Virtual PC. Обикновено тази технология позволява да се емулират хардуерни платформи от същия тип, на който е пусната основната операционна система. Прихващането на нежеланите команди може да се осъществи например по метода на бинарната транслация на кода. С помощта на тази технологии могат да се стартират повечето съвременни ОС вътре в емулатора над основната операционна система. Споменатият подход има съществени допълнителни разходи, които зависят от броя емулирани устройства, както и доколко устройствата наподобяват физическите. Технологията е с ниска степен на мащабиране - няма възможност съвместно и ефективно да се използват всички достъпни хардуерни ресурси, а оперативната памет на физическата машина фактически трябва строго да бъде разделена за може да се предоставя на всяка стартирана виртуална машина своя собствена несподелена памет, а освен това съществена част от паметта трябва да бъде резервирана за допълнителните разходи на самата система за виртуализация. Фактически на обичайните сървъри не могат да се стартират повече от 10 - 15 виртуални машини. Другата особеност е строгото разделяне на дисковото пространство между ВМ – обикновено файловата система за виртуалната машина е разположена вътре във файла на основната ОС (или раздел от диска) и е уникална за всеки екземпляр от ВМ. Паравиртуализация Алтернативата бинарна транслация на нежеланите команди може да бъде разделяне на ядрото на гостуващата ОС, замяна на тези команди с повиквания от ВП. Този подход е осъществим, ако е достъпен гостуващ вариант на система или ако има изходния код от ОС и той може да бъде модифициран според лицензията, както в случая с ОС Linux. Такъв подход бе използван в системата Xen, която не се крие от виртуализираната ОС, а до версия 3.0, използваща Intel VT и AMDV, Xen изискваше гостуваща версия на ОС. Още една съществена особеност на Xen е подходът към работата с външни устройства. За решаване на тази задачи се използва една от ОС гости, притежаващи съответните драйвери и пълномощия за достъп до оборудването. В останалите гостуващи ОС драйверите за оборудването се редуцират до специални „предаващи”, които извикват МВМ, а тя предава тези заявки на ОС гост с истинския драйвер. Виртуализация на високо ниво За процесите ОС, предоставяща услуги на потребителите, наличието на „виртуално оборудване” е абсолютно безразлично - за нея е важно да бъдат запазени тези способи на комуникация, които те използват за връзка с ОС, а заявките се обработват по-удобния и ефективен начин. От друга страна, ако ресурсите на физическия компютър и обектите от ядрото на ОС се разделят на подмножества по определени правила, то е възможно създаване на виртуална среда (ВС) за изпълнение – „виртуализация от високо ниво”, която обезпечава всяка ВС със собствено уникално изолирано обкръжение: файлове и системни ресурси, услуги, системни начини за връзка с външния свят и т.н. Сървърно приложение, работещо във ВС, се нарича виртуален частен сървър (ВЧС).
Фиг.3 Пример за архитектура от високо ниво на виртуализация
От гледна точка на приложенията то се пуска на собствен компютър с основна ОС и потребителят може да прави с виртуалния сървър всичко на ниво администратор, не нарушавайки целостността на другите ВС. Средата на потребителя е отделена от оборудването (Фиг. 3) със специален слой, въвеждащ понятието ВС в корена (или основната) на ОС. Това позволява да се реализират допълнителни възможности, например, инсталиране на приложения вътре в множество ВС, бърза миграция (времето за недостъпност на сървъра на ниво 0-3 с или въобще без никакво прекъсване на връзките и спиране на програмите), динамично управление на ресурсите на системата, заделени за конкретния ВС. В сравнение с пълната виртуализация и паравиртуализацията тази от високо ниво гарантира повече ползи: гъвкаво управление на паметта и файловото пространство, ниски загуби за превключване между ВС, възможност за мигновено получаване на всички ресурси на компютъра. Има редица ограничения за използване на ВС, например, технологията Virtuozzo на компанията SWsoft приема по подразбиране, че всеки процес, стартиран на виртуалната машина използва едно и също ядро (да не говорим за една и съща ОС) и във ВС не трябва да се сменят съществени коренови компоненти или версията на ядрото за една гостуваща ОС. Все пак могат да се ползват различни версии на програмното осигуряване, ако те работят с едни и също ядро, модули и съществените библиотеки в случай на Linux, или изпълними файлове от ядрото за Windows. Други съществени ограничения, в общия случай няма (с изключение на прекия достъп до оборудването, който отново е ограничен вътре във BC по съображения за сигурност). Ако има още някакви ограничения, присъщи на една или друга реализации, например във ВС във всеки момент обикновено е възможен директен администраторски достъп до файлове от основната ОС, тогава както при типовите реализация той е възможен само по мрежата, ако това е направил администратор на съответната виртуална машина и, обратно, във VM има възможност да се направи „снимка” на състоянието на системата за последващо връщане към това състояние (snapshot), а във ВЧС това се прави по друг начин, на ниво групи процеси, а не в цялото ядро. Използването на Intel VT и AMDV е добре за производителността на ВП, изградени на принципите на виртуализацията от високо ниво. Все пак то може да послужи за повишаване равнището на защита и надеждност. Трябва да отбележим, че тези технологии за виртуализация се допълват взаимно и могат да бъдат ефективно използвани съвместно в съвременните корпоративни центрове за обработка на данни.
Терминология
Виртуализационна платформа (ВП) — програмен комплекс, обезпечаващ пускане и функциониране на една или няколко модифицирани или немодифицирани копия на гостуващите операционни системи (ОС) по такъв начин, че всяка ОС гост функционира като инсталирана на физическия компютър, може да ползва директно или опосредствено неговите устройства, може да бъде спирана и запазвана в произволен момент от работния си цикъл, рестартирана, клонирана на същия компютър и/или пренесена на друг физически компютър, притежаващ същия комплекс ВП. Виртуална машина (ВМ) — пълен „виртуален свят”, в който ВП капсулира гостуващата ОС, предоставяйки й комплект от „виртуално оборудване”. ВМ става обект, с който оперира ВП. Монитор на виртуални машини (МВМ, супервайзор или VMM, Virtual Machine Monitor) — част от ВП, осигуряващ контрол на различни аспекти от работата на ВМ обектите. Тук има няколко варианта в обозначенията. Обикновено МВМ съществува „паралелно” на основната операционна система, има практически еднакви на нейните пълномощия и не използва специални планировщиков от процесора и други ресурси, докато супервайзорът обичайно има заделени само за него възможности за контрол на оборудването и разпределени някои ресурси, и даже основната система осъществява свои функции посредством използване възможностите на супервайзора, а не се обръща директно към апаратурата (макар че и тук има изключения). Виртуална среда (ВС) – „виртуален свят”, в който ВП капсулира гостуващата ОС и й предоставя комплект от „виртуални ОС услуги”. За разлика от ВМ виртуализацията се прави на по-високо ниво – за приложните и системните програми. Всички копия на ОС гости са инсталирани на машината, разделят едно ядро от основната ОС.
(03.05.2007)

КОМЕНТАРИ

Трябва да сте регистриран потребител, за да коментирате статията
"Съвременната виртуализация"



    

© Ай Си Ти Медиа ЕООД 1997 - 2012 съгласно общи условия за ползване