[2] Środowiska pracy: KVM, VirtualBox

Różne zadania wymagają różnych narzędzi. Po kilku latach pozytywnych doświadczeń z wirtualizacją na serwerze, gdzie poszczególne hosty wirtualne wykonywały przydzielone im zadania przyszedł czas na stację roboczą. Do tej pory na serwerze używałem po kolei: Xen, OpenVZ, KVM co było ciekawym doświadczeniem. Obecnie nie używam już wirtualizacji na serwerze w zastosowaniach prywatnych - choć jestem ich zwolennikiem w środowiskach produkcyjnych o większych wymaganiach. Ich utrzymanie nie było efektywne czasowo w moich warunkach i zamiast rozbudowy infrastruktury uprościłem i ograniczyłem wymagania oprogramowania. Skąd się wziął zatem pomysł na wirtualizację na stacji roboczej?

  1. Aktualność: oprogramowanie stabilne jest najczęściej nieaktualne, bez najnowszych funkcji.
  2. Stabilność: nowe oprogramowanie jest często niestabilne.
  3. Elastyczność: w zależności od zadania potrzebne są różne zestawy narzędzi, które nie są potrzebne jednocześnie (a trudne w utrzymaniu).
  4. Skalowalność: jeśli na stacji roboczej jest zbyt mało zasobów do wykonania zadania to dobrze jest przenieść obliczenia na inną maszynę bez dodatkowej pracy.
  5. Bezpieczeństwo: próbując nowe rozwiązania nie priorytetyzuje się bezpieczeństwa, więc zanim zostaną sprawdzone warto je wyizolować.
  6. Zarządzalność: pracując równolegle nad różnymi zadaniami dobrze jest móc określić dostępne dla nich zasoby.
  7. Reprodukcja środowiska: złożone prace administratorskie są maksymalnie uproszczone (zmiana następuje tylko w wybranym komponencie a reszta jest przenoszona bez zmian)
  8. Kontrola: zainstalowane jest tylko to co jest konieczne (jak coś nie działa łatwiej to rozpoznać, ...) a przyznanie wysokich uprawnień użytkownikowi dotyczy tylko jednego hosta wirtualnego.
  9. Mobilność: jeśli jest taka potrzeba to można zabrać hosty wirtualne ze sobą i korzystać z nich w wielu miejscach.

Problemem w pracy zdalnej zawsze było środowisko graficzne ale i tak najczęściej wykorzystuję VIM pod konsolą. W pracy nie potrzebuję zaawansowanego środowiska graficznego 3D.

Implementacja:

  1. System główny: wybrałem KDE (Gnome stracił wizję stabilnego rozwoju a inne środowiska mają mniejszą funkcjonalność), po Debianie, OpenSUSE przyszedł czas na Kubuntu które w wydaniu LTS daje stabilność i prostotę obsługi urządzeń zewnętrznych w długim okresie czasu.
  2. Wirtualizacja: KVM (LXC nie pozwala na zastosowanie różnych kerneli) gdy nie potrzeba środowiska graficznego, VirtualBox gdy potrzebne jest podstawowe środowisko graficzne.
  3. Łączność: Openvswitch dla hostów wirtualnych dla których komunikacja routowana jest przez gospodarza.
  4. Hosty wirtualne: Arch, Ubuntu server, debian.
  5. Zaszyfrowany dysk z LVM przeznaczony wyłącznie dla hostów wirtualnych zwiększa prędkość działania i upraszcza administrację.
  6. Zdalny dostęp do systemów plików hostów wirtualnych następuje po sshfs.

Na głównym systemie stacji roboczej pozostają:

  • aplikacje graficzne intensywnie korzystające z CPU i GPU (blender, ...),
  • aplikacje multimedialne (przeglądarka internetowa, gry, ...),
  • aplikacje które używane są równolegle do różnych zadań realizowanych na hostach wirtualnych (LibreOffice, ...).

Choć wygląda to na skomplikowaną konfigurację okazuje się ona praktyczna. Można więcej oprogramowania przenieść na hosty wirtualne jednak obecne rozwiązanie wydaję się być najbardziej wygodne.

Nie w każdych warunkach podział: praca (hosty wirtualne) oraz grafika, rozrywka i multimedia (system główny gospodarza) się sprawdzi - u mnie działa dobrze.