Jest to kontynuacja poprzedniego wpisu, w którym przedstawiłem narzędzie o nazwie Proxmox, które jest środowiskiem do wirtualizacji. Omówiłem jego instalację na terminalu, czyli komputerze typu mini PC. Poniżej opiszę jak stworzyć swoją pierwszą maszynę wirtualną (ang. Virtual Machine – VM) w Proxmox.
Tworzenie maszyn wirtualnych
Po wejściu do panelu zarządzania środowiskiem Proxmox dostaniemy na dzień dobry okienko wymagające uwierzytelnienia się. Login to root, a hasło to to, które podaliśmy podczas instalacji. Następnie dostaniemy kolejny popup, tym razem o tym, iż nie posiadamy subskrypcji. Proxmox jest rozwiązaniem open-source, ale posiada też płatne subskrypcje, które oczywiście są nieobowiązkowe. Jako zwykły użytkownik prywatny po prostu przeklikujemy to okienko przyciskiem OK. Niestety będziemy musieli to robić przy każdym logowaniu, co trzeba przyznać jest nieco upierdliwe.
Przechodząc do sedna, na wstępie chciałbym zaznaczyć, iż nie planuję omawiać wszystkich ustawień, bo mogłoby mi nie wystarczyć życia. Skupię się jedynie na pokazaniu jak uruchomić swoją pierwszą maszynę wirtualną. W pierwszej kolejności musimy pobrać obraz ISO systemu, który chcemy zainstalować na tej maszynie. Takim systemem może być Ubuntu Server w wersji 22.04 LTS, który można pobrać z oficjalnej strony dystrybucji. Obraz do Proxmoxa można wgrać na dwa sposoby. Pierwszym jest pobranie obrazu najpierw na komputer, a następnie jego upload na serwer, a drugim wskazanie serwerowi linku do obrazu i pobranie go bezpośrednio z poziomu serwera. Oba te działania można wykonać poprzez rozwinięcie drzewa w kolumnie po prawej, wybranie wolumenu local i wejście w zakładkę ISO Images. W górnej części menu pojawią nam się dwa przyciski, odpowiednio Upload (opcja z komputera) i Download from URL (opcja bezpośrednio ze strony dystrybucji).
Teraz możemy już przejść do tworzenia wirtualnej maszyny, a najszybszym sposobem jest skorzystanie z niebieskiego przycisku Create VM wyciągniętego na wierzch interfejsu i ulokowanego w prawym górnym rogu. Proxmox otworzy kreator nowej wirtualnej maszyny. Przejdźmy po kolei przez wszystkie kroki.
- General: Tutaj ustawiamy podstawowe informacje maszyny. Node to taki jakby klaster, do którego ma przynależeć. Zakładam, iż jesteś na początku drogi, więc wybór jest niewielki – jeden Node do wyboru. VM ID to bardzo istotny parametr, który będzie unikatowym identyfikatorem tej maszyny. Name to oczywiście nazwa maszyny, nie jest zbytnio ważne co tutaj wpiszemy, aby tylko potem pomogło nam to w zidentyfikowaniu z jaką maszyną mamy do czynienia. Już na początku swojej drogi warto stworzyć sobie jakiś system nazewnictwa, który docenimy dopiero później, gdy będziemy mieli wiele maszyn wirtualnych. Resource Pool na ten moment nas nie interesuje, bo jeszcze tak owego nie konfigurowaliśmy.
- OS: Jako Storage zostawiamy local, czyli obrazy szukane są na dysku lokalnym. Natomiast jako ISO image wskazujemy pobrany wcześniej obraz systemu. Istotne jest, żeby w zależności od systemu, który instalujemy prawidłowo wskazać parametry Type i Version w sekcji Guest OS.
- System: Tutaj nie mamy nic do zmiany, proponuję zostawić wartości domyślne.
- Hard Disk: Tutaj interesuje nas w zasadzie tylko parametr Disk size (GiB), w którym oczywiście określamy jak dużo przestrzeni dyskowej zamierzamy przypisać tej maszynie wirtualnej. Warto jednak pamiętać, iż tę wartość jest później dość łatwo zwiększyć, natomiast jej zmniejszenie będzie już stanowił większy problem, dlatego najlepiej zacząć od najmniejszej wartości zalecanej przez specyfikację danej dystrybucji (systemu), a później stopniowe rozszerzanie w miarę wystąpienia takiej potrzeby.
- CPU: Tutaj ustawiamy ile mocy obliczeniowej chcemy przypisać do tej maszyny wirtualnej. Proxmox oferuje nie do końca zrozumiały dla mnie podział na Sockets (gniazda) i Cores (rdzenie). Kiedyś co nieco poczytałem na różnych forach na ten temat i o ile dobrze pamiętam to Sockets używa się tylko w przypadku maszyn, które są wyposażone w więcej niż jeden procesor. Pamiętam także, iż przewijał się tam jakiś wzór do obliczania optymalnego ustawienia Cores, w który wstawiało się ilość rdzeni i wątków procesora naszego serwera i odnosiło się to do wymagań sprzętowych jakie zamierzamy postawić maszynie wirtualnej. Niemniej jednak ja w zasadzie operuję tutaj jedynie parametrem Cores i wiem, iż dla procesora 4-rdzeniowego mogę tę wartość ustawiać w zakresie 1-4. Jednakże tutaj dobrą radą jest postępowanie podobnie jak z przestrzenią dyskową Disk size zdefiniowaną w poprzednim punkcie. Zawsze najlepiej po prostu przypisać jedynie jeden rdzeń i modyfikować później tę wartość w razie jak zauważy się taką potrzebę. Różnica jest taka, iż zmienianie ilości przypisanych rdzeni nie ma ograniczeń, tj. można to robić bez problemu zarówno w górę jak i w dół. W teorii widzę choćby możliwość zrobienia tego podczas, gdy maszyna działa, ale zdrowy rozsądek podpowiada mi, żeby tak tego nie robić. Zawsze lepiej zatrzymać maszynę, zmienić ustawienia i uruchomić ją ponownie z nowymi zasobami.
- Memory: Tutaj oczywiście mamy ustawienia dotyczące pamięci operacyjnej. Do ustawienia mamy jeden parametr Memory (MiB), czyli ilość przypisanej pamięci RAM. Ten parametr można zmieniać równie łatwo co ustawienia CPU, a wartość 2048 jest bardzo dobrą bazą wyjściową.
- Network: Nic innego jak ustawienia sieciowe. Na potrzeby tego wpisu pozostawmy wszystko domyślne, ale chciałbym tylko zaznaczyć, iż mamy tutaj wiele innych możliwości, które należy dostosować do adaptowanego rozwiązania. Możemy całkowicie odciąć dostęp do sieci tej maszynie wirtualnej. Możemy odseparować maszyny wirtualne od siebie lub też od interfejsu zarządzającego. Ogólnie jest to już wyższa szkoła jazdy, na której nie chciałbym się skupiać w tym wpisie.
- Confirm: Podsumowanie wszystkich ustawień, które należy sprawdzić i o ile jest OK to sfinalizować działanie kreatora przyciskiem Finish.
Od razu po zatwierdzeniu na liście po lewej powinniśmy zobaczyć świeżo utworzoną maszynę wirtualną, natomiast samo jej uruchomienie i doprowadzenie do stanu używalności może jeszcze chwilę potrwać.
Panel sterowania maszyną wirtualną
Po wybraniu maszyny z listy po lewej zostanie nam w głównym oknie wyświetlony panel sterujący tejże maszyny. Przejdźmy sobie przez wszystkie zakładki tak samo jak zrobiliśmy to dla kreatora powyżej.
- Summary: Wszystkie najważniejsze statystyki dotyczące VMki. Zużycie procesora, pamięci i dysku, do tego ruch sieciowy. Mamy też możliwość dodania notatek dotyczących tej maszyny.
- Console: Jak sama nazwa może wskazywać, jest to miejsce, z którego można prowadzić komunikację z serwerem bezpośrednio z poziomu środowiska Proxmox. o ile zainstalowaliśmy system z interfejsem graficznym to właśnie tutaj dostaniemy do niego dostęp tak samo jakbyśmy podpięli fizycznie monitor, klawiaturę i myszkę. o ile wybraliśmy jednak system bez GUI to zostanie nam wyświetlony interfejs tekstowy (terminal).
- Hardware: Tutaj oraz w zakładce Options można zmienić to co ustawiło się podczas tworzenia maszyny. Dodatkowo istotne jest, iż można tutaj zarządzać nośnikami danych, a więc symulować podpięcie do maszyny pamięci przenośnej lub wsunięcie płyty do CD-ROMu.
- Cloud-Init: Zakładka dla bardziej zaawansowanych, którzy zarządzają całą chmurą maszyn wirtualnych, a to jest tylko kolejny z jej węzłów.
- Options: patrz punkt 3.
- Task History: Podstawowy rejestr zdarzeń, który czasem pomaga zorientować się co stało się z maszyną, gdy np. niespodziewanie uległa ponownemu uruchomieniu.
- Monitor: Szczerze powiedziawszy nigdy nie użyłem tej zakładki i nie mam bladego pojęcia do czego ona służy.
- Backup: Super istotna zakładka, w której możemy zrobić kompletną kopię zapasową maszyny. To według mnie robienie kopii zapasowych w ten sposób to jedna z największych zalet Proxmox. Nie trzeba się bawić w żadne tar -cvpf i inne tego typu akcje wykonywane na działającym systemie. Tutaj po prostu bierzemy cały dysk maszyny, robimy jego klon i jesteśmy gotowi do przeniesienia jej gdziekolwiek.
- Replication: Narzędzie do replikacji (powielenia) magazynów danych pomiędzy Node’ami. Nas to nie dotyczy, bo tak jak pisałem wcześniej na poziomie początkowym operujemy jedynie na jednym Node’zie.
- Snapshots: Jaka jest różnica pomiędzy snapshot’ami a backup’ami? Backup to kompletna kopia maszyny, która zawiera wszystkie jej dane, natomiast snapshot to taki punkt przywracania systemu, czyli zbiór informacji o tym w jakim stanie jest maszyna w momencie jego zrobienia. Jest to bardzo szybki i mało inwazyjny, pod kątem zasobów, sposób zabezpieczenia się przed wprowadzeniem większych zmian na maszynie, których efekt nie do końca jest nam znany i możliwy do przewidzenia. Przed wprowadzeniem takiej zmiany zawsze dobrze jest zrobić właśnie snapshot, co pozwoli później w każdym momencie wrócić do tego punktu i ewentualnie zacząć od nowa lub całkowicie zrezygnować z tych zmian.
- Firewall: Ustawienia zapory sieciowej. Jeszcze nie ustaliłem czy jest to dodatkowa warstwa czy też jest to ten sam poziom co np. ufw odpalone na maszynie wirtualnej.
- Permissions: Proxmox jest środowiskiem, w którym może pracować więcej niż jeden użytkownik. W tej zakładce można przydzielać dostęp do danej maszyny konkretnemu użytkownikowi lub grupie użytkowników. Dodatkową opcją jest także udostępnienie dostępu poprzez API na podstawie uwierzytelnienia Tokenem.
Podsumowanie
Jak pewnie sam zauważyłeś, drogi Czytelniku, Proxmox jest naprawdę potężnym i bardzo rozbudowanym narzędziem. Pozwala na konfigurację niesamowitej ilości parametrów i tworzenie przy tym naprawdę potężnych sieci rozwiązań opartych o wirtualizację. To co pokazałem, w napisanych przeze mnie dwóch wpisach, to jedynie ułamek tego do czego można wykorzystać to środowisko. Sam nie jestem ekspertem w tej dziedzinie i przyznam szczerze, iż nie umiem w nim zrobić wiele więcej niż to co opisałem. Mimo to Proxmox to zdecydowanie moje rozwiązanie numer jeden dla serwera domowego. Jest na tyle stabilny, iż pozwala z czystym sumieniem odpalać naprawdę istotne dla mnie usługi. Może być również jednocześnie używany jako homelab, czyli taki domowy poligon doświadczalny, w którym będzie można równie gwałtownie stworzyć maszyny testowe jak i je unicestwiać, gdy przestaną być potrzebne.