Стартира инициатива за преработка на Xen Hypervisor в Rust

Xen

Xen е хипервайзор, който осигурява сигурна изолация, контрол на ресурсите, гаранции за качество на услугата и миграция на виртуална машина.

Разработчиците на платформата XCP-ng, която се разработва в рамките на проекта Xen, публикуваха план за създаване на заместител на Rust за няколко компонента от софтуерния стек Xen .

Самият Xen хипервизор все още предстои да бъде обработен и работата е фокусирана основно върху преработването на отделни компоненти на набора от инструменти.

Платформата в момента използва компоненти на C, Python, OCaml и Go, някои от които са остарели и причиняват проблеми с поддръжката. Отбелязва се, че използването на Rust няма да доведе до цялостно увеличение на броя на поддържаните езици, тъй като в Go е имплементиран само един компонент, който е планиран за замяна.

Очевидно не очаквайте да пренапишем Xen хипервайзора и всичко в Rust като наш първи опит. Всъщност нашата цел тук е да започнем да заменяме някои от по-малките компоненти около него, което ни позволява да „разрастваме“ самия език и да мислим как да заменяме нещата блок по блок, за цялата платформа.

Rust беше избран, защото съчетава високопроизводителен код с възможности за безопасно използване на паметта, не изисква събирач на боклук, подходящ е за разработване както на ниско, така и на високо ниво компоненти и предоставя допълнителни функции за намаляване на потенциалните грешки, като например проверка на заемки. Rust е и по-широко възприет от настоящия език XAPI OCaml, което ще улесни привличането на нови разработчици към проекта.

На първия етап се планират подмяна на няколко компонента, за да се разрешат процесите и да се подготви основата за подмяна на други части от софтуерния стек. По-конкретно, гост инструментите за Linux първо ще бъдат пренаписани на Rust, който в момента използва езика Go, а фоновият процес за събиране на показатели ще бъде написан на OCaml.

Като се има предвид, че Rust е безопасен и бърз, какво повече ни е необходимо? Също така ни е необходим език за програмиране, който може да работи на различни нива (както по-ниски, така и по-високи в стека). Не бих разчитал на Go или Python за обработка на задачи от ниско ниво, които можем да изпълняваме в XCP-ng, и – по същия начин – не бих разчитал на C за обработка на задачи от по-високо ниво. Използването на Rust предоставя потенциал да бъдем навсякъде в XCP-ng стека.

Освен това Rust вече не е "нишов" език. Например, дори и да е страхотен, OCaml (използван в XAPI) не е добре познат, което намалява шансовете ни лесно да наемем хора с опит в този език. Това също намалява способността на общността с отворен код да спечели сътрудници. Смятаме, че Rust няма да бъде пречка за това (както наемане, така и вноски), вероятно дори обратното: двигател за привличане на повече хора, тъй като това е „желана“ технология.

Необходимостта от препроектиране на инструментите за гости на Linux (xe-guest-utilities) произтича от проблеми с качеството на кода и разработката извън проекта Xen под контрола на Cloud Software Group, което възпрепятства пакетирането и влиянието на общността върху разработката. Планиран е нов вариант на набора от инструменти (xen-guest-agent), създаден изцяло от нулата, като се запазва максимално опростеният и логиката на агента е отделена от библиотеките. Взето е решение да се преработи фоновият процес за събиране на показатели (rrdd), тъй като е компактен и отделен, което улеснява експериментирането с нов език по време на разработка.

Следващата година вероятно ще започнем разработването на компонента xenopsd-ng в Rust, което ще ни позволи да оптимизираме архитектурата на софтуерния стек. Основната идея е да се концентрира работата с ниско ниво API в един компонент и да се организира предоставянето на всички високо ниво API към останалата част от стека чрез него.

И накрая, ако се интересувате да научите повече, можете да намерите подробностите на следния линк.


Добавяне като предпочитан източник в Google