niedziela, 28 marca 2010

Wirtualizacja w Fedorze 12

Wirtualizacja
Wirtualizacja w Fedorze 12 przeszła duże zmiany, dodano nowe funkcje, które nadal obsługują Xen, KVM i wiele innych platform wirtualizacji.
KVM i QEMU uzyskały w tym wydaniu wiele nowych funkcji. Zmniejszono użycie pamięci i zwiększono wydajność KVM dzięki dodaniu KSM i "Huge Page Backed Memory" KVM. Znacznie zwiększono wydajność formatu obrazu qcow2. Dodano obsługę podłączania SR-IOV i NIC w trakcie pracy. gPXE jest teraz używane zamiast etherboot do uruchamiania gości przez PXE.
Natomiast w bibliotece libvirt dodano API do zarządzania pamięcią masową i interfejsami sieciowymi. libvirt uruchamia teraz także procesy QEMU bez uprawnień.
Nowa biblioteka (libguestfs) i narzędzie interaktywne (guestfish) są teraz dostępne do uzyskiwania dostępu i modyfikowania obrazów dysków maszyn wirtualnych.


Łączenie tych samych stron jądra i zmniejszone użycie pamięci przez gości
Łączenie tych samych stron jądra (KSM) umożliwia łączenie identycznych stron pamięci przez jądro do pojedynczej strony współdzielonej przez jeden lub więcej procesów. Ta funkcja jest wykorzystywana przez KVM, aby zmniejszyć użycie pamięci przy wielu maszynach wirtualnych. Ponieważ pamięć jest współdzielona, łączne użycie pamięci gości będzie zmniejszone.


"KVM Huge Page Backed" dla KVM
Umożliwienie gościom KVM używania funkcji "Huge Page Backed Memory", aby zmniejszyć zużycie pamięci i zwiększyć wydajność przez zmniejszenie obciążenia pamięci podręcznej procesora. Użytkownicy gości KVM używający tej funkcji powinni zauważyć zwiększoną wydajność z pewnymi oszczędnościami pamięci gospodarza. Poprawa wydajności jest uzależniona od obciążenia maszyny. Używanie tej funkcji dla pamięci gości ma swoje słabe strony - nie można używać przestrzeni wymiany, ani balonować pamięci gościa.


Podłączanie NIC w czasie pracy KVM
Interfejsy sieciowe mogą być teraz dodawane do uruchomionego gościa KVM przy użyciu libvirt/virt-manager bez potrzeby ponownego uruchamiania gościa. 


Wydajność qcow2 w KVM
Natywny format plików obrazów programu QEMU to qcow2. Format qcow2 dostarcza ulepszone funkcje w porównaniu do surowych obrazów, w tym: obrazy podstawowe, migawki, kompresję i szyfrowanie.
Użytkownicy chcący uchronić dane maszyny wirtualnej przed awarią gospodarza często wyłączają zapisywanie pamięci podręcznej na gospodarzu. Poprzednio prowadziło to do bardzo niskiej wydajności gości w obrazach w formacie qcow2.
Wydajność wejścia/wyjścia obrazów dysków qcow2 została znacznie zwiększona. Użytkownicy, którzy nie używali formatu qcow2 z powodu niskiej wydajności mogą teraz ponownie rozważyć migrację i skorzystanie z dodatkowych funkcji, które ten format dostarcza względem surowych obrazów dysków. 


Stabilne ABI gościa KVM
Gościom KVM przedstawiana jest emulowana platforma sprzętowa lub ABI zawierające m.in. model procesora, APIC, PIT, tablice ACPI, kontrolery IDE/USB/VGA, NIC. Kiedy QEMU jest aktualizowane do nowej wersji, niektóre części tej platformy mogą ulegać zmianie wraz z rozszerzaniem emulacji o nowy sprzęt. Stanowi to problem dla gości Windows, gdzie zmiana ABI może wymagać ponownej aktywacji systemu.
Od teraz ABI prezentowane gościom nie będzie się zmieniało wraz z aktualizacjami QEMU.


Biblioteka libguestfs do manipulowania maszynami wirtualnymi
Dodana bardzo późno w cyklu produkcyjnym Fedory 11, biblioteka libguestfs jest teraz oficjalną funkcjonalnością Fedory 12. libguestfs jest biblioteką do uzyskiwania dostępu i modyfikowania obrazów dysków gości. Używając jądra Linux i kodu QEMU, libguestfs może uzyskać dostęp do każdego typu systemu plików gościa, do którego mogą Linux i QEMU.
Następujące narzędzia są dostarczane lub rozszerzone przez libguestfs:

    *      Dowiązania do języków programowania OCaml, Perl, Python, Ruby i Java.
    *      guestfish - dostarcza interaktywną powłokę do modyfikowania systemów plików maszyn wirtualnych i wykonywania poleceń w kontekście gościa.
    *     virt-df - wyświetla wolne miejsce na systemach plików maszyn wirtualnych
    *    virt-inspector - wyświetla wersję systemu operacyjnego, jądro, sterowniki, punkty montowania, aplikacji itp. w maszynie wirtualnej.
    *      virt-cat - wyświetla za pomocą "cat" dowolny plik wewnątrz maszyny wirtualnej. 


Zarządzanie interfejsami sieciowymi
Często używane konfiguracje sieci gospodarza, takie jak mostki, więzy, VLAN i sensowne ich kombinacje mogą być teraz tworzone używając ogólnozadaniowej biblioteki konfiguracji sieci, netcf. Ulepszenia API biblioteki libvirt umożliwiają używanie tej nowej funkcjonalności przez gospodarzy zdalnego zarządzania za pomocą libvirtd
 
Single Root I/O Virtualizaton
"Single Root I/O Virtualization" jest funkcją PCI, umożliwiającą tworzenie wirtualnych funkcji (VF), które współdzielą zasoby fizycznych funkcji (PF). Urządzenia VF są przydzielane do maszyn wirtualnych i pojawiają się jako fizyczne urządzenia PCI wewnątrz gościa. Ponieważ system operacyjny gościa de facto steruje bezpośrednio sprzętem, wydajność wejścia/wyjścia jest porównywalna z wydajnością komputera gospodarza.

gPXE jest teraz domyślne dla gości
Goście QEMU mogą teraz używać nowocześniejszej i aktywnie rozwijanej biblioteki gPXE zamiast przestarzałego narzędzia etherboot do uruchamiania przez PXE.

Uprawnienia wirtualizacji
Wprowadzono zmiany w maszynach wirtualnych QEMU/KVM, aby poprawić bezpieczeństwo gospodarza w przypadku dziury w pliku binarny QEMU.

    *    Uprawnienia pliku /dev/kvm zostały zaktualizowane, aby umożliwiać nieuprawnionym użytkownikom używanie akceleracji sprzętowej KVM.
    *      Procesy QEMU utworzone przez program virt-manager na lokalnym pulpicie są uruchamiane jako lokalny użytkownik pulpitu.
    *      Procesy QEMU wywoływane przez uprawnionego demona libvirtd są teraz uruchamiane jako nieuprawnione konto, użytkownik "qemu", grupa "qemu".
    *      Demon libvirtd zmieni właściciela wszystkich dysków powiązanych z maszyną wirtualną podczas jej uruchamiania na użytkownika "qemu", grupę "qemu", poza dyskami tylko do odczytu/udostępnionymi.
    *      Aby przywrócić poprzednie zachowanie Fedory (uruchamianie wszystkich procesów QEMU jako "root"), wprowadzono dwa nowe parametry konfiguracji w pliku /etc/libvirt/qemu.conf. Ich zmiana nie jest zalecana.

Zarządzanie wirtualizowaną pamięcią masową
Wirtualizacja identyfikatora N_Portu (NPIV) protokołu Fibre Channel umożliwia tworzenie wielu wirtualnych N_Portów na pojedynczym fizycznym adapterze magistrali gospodarza. API urządzeń węzła biblioteki libvirt zostało rozszerzone, aby tworzyć i niszczyć wirtualne adaptery używając NPIV.
API pozwalające na wykrywanie pamięci masowych i tworzenie pul zostało rozszerzone, aby wykrywać i skanować ponownie pamięci masowe na podstawie każdego gospodarza SCSI. Administratorzy mogą teraz wykrywać, konfigurować i dostarczać pamięć masową dla maszyn wirtualnych bez potrzeby używania wielu różnych narzędzi.

Inne ulepszenia 
Zestaw zgodności z technologią libvirt
Fedora zawiera teraz Zestaw zgodności z technologią libvirt (TCK). TCK jest zestawem testów funkcjonalności dostarczającym szczegółowych raportów dostępnej funkcjonalności dla każdego sterownika biblioteki libvirt i może być używany do szybkiego identyfikowania niepowodzeń lub regresji w rozwoju funkcji wirtualizacji w Fedorze. 

Repozytorium testowe technologii wirtualizacji
Repozytorium testowe technologii wirtualizacji zostało utworzone dla osób, które chcą testować najnowsze pakiety związane z wirtualizacją. Te repozytorium jest przeznaczone głównie do testowania i wczesnego eksperymentowania. Nie jest przeznaczone dla wdrożeń "produkcyjnych".

Obsługa Xena przez jądro
Pakiet jądra w Fedorze 12 obsługuje uruchamianie jako gość domU, ale nie będzie działało jako dom0, dopóki jego obsługa nie zostanie dołączona w oryginalnym jądrze. Prace są w trakcie, i jest duża nadzieja, że ta obsługa zostanie dołączona do jądra 2.6.33 i Fedory 13.
Ostatnie wydanie Fedory z obsługą dom0 to Fedora 8.
Uruchamianie gościa Xena domU na gospodarzu Fedory 12 wymaga opartego na KVM programu Xenner. Xenner uruchamia razem jądro gościa i mały emulator Xena jako gościa KVM.

KVM wymaga sprzętowej obsługi wirtualizacji w systemie gospodarza.
Systemy bez sprzętowj obsługi wirtualizacji nie obsługują gości Xena w tym momencie.