Proxmox ZFS

Wirtualizacja bez kontrolera RAID – (Proxmox + ZFS)

Instalacja jakiegokolwiek serwera bez kontrolera RAID jest dość ryzykowna, tym bardziej gdy w grę wchodzi instalacja systemu na fizycznym sprzęcie.
Wizja uszkodzonego dysku systemowego serwera na którym mają być uruchamiane maszyny wirtualne może mrozić krew w żyłach u wielu administratorów.
Czasem jednak zdarza się tak, że nie możemy sobie pozwolić na kontroler. Może być to celowe działanie podyktowane wymogiem uruchomienia dysków w trybie non-raid, ale najczęściej są to kwestie finansowe.
W takich przypadkach z pomocą przychodzą tzw software raid. Problem polega na tym że nie zawsze wdrożenie tego rozwiązania jest łatwe i przyjemne.
Proxmox umożliwia instalację systemu z wykorzystaniem raid opartego o system plików ZFS. W porównaniu ze zwykłym software raidem, funkcjonalność i stabilność ZFS to swego rodzaju game changer. Tym bardziej, że wdrożenie tego rozwiązania to dosłownie parę „kliknięć”.

Co to jest ZFS?

ZFS (Zettabyte File System) to zaawansowany system plików stworzony przez Sun Microsystems, obecnie rozwijany przez OpenZFS. Jest unikatowy ze względu na swoje zaawansowane funkcje, które obejmują zarządzanie magazynowaniem, ochronę integralności danych, oraz łatwe skalowanie.
Dyski fizyczne są grupowane w „pule” (z ang. pools), co ułatwia zarządzanie przestrzenią dyskową. Pule pozwalają na dynamiczne dodawanie, usuwanie i wymianę dysków bez przerywania pracy systemu.

Dzięki ZFS możemy korzystać z takich funkcjonalności jak:

  • Skalowanie (Dodając kolejne dyski do puli możemy obsłużyć ogromną ilość danych – teoretycznie nawet do 256 ZiB)
  • Deduplikacja
  • Kompresja
  • Snapshoty (Możemy tworzyć migawki na poziomie systemu plików do których możemy wrócić).
  • Klonowanie
  • RAID-Z

Obecnie ZFS jest używany i wspierany między innymi przez takie firmy jak: Canonical (Ubuntu), iXsystems (True NAS), Oracle, Dell a także Proxmox.

Instalacja Proxmox

Proxmox Virtual Environment to oparte na Debianie darmowe i otwarte oprogramowanie służące do wirtualizacji.
Umożliwia uruchamianie maszyn wirtualnych opartych na KVM jak również kontenerów LXC co daje elastyczność w wyborze najlepszego rozwiązania dla danych potrzeb. Proxmox VE umożliwia także tworzenie klastra wysokiej dostępności (HA). Co ważne, Proxmox posiada narzędzia do tworzenia kopii bezpieczeństwa maszyn.
Proxmox posiada wsparcie dla ZFS i umożiwia tworzenie RAID już na samym etapie instalacji. Dzięki temu w instalatorze Proxmox możemy wybrać dwa dyski i stworzyć na nich Raid 1 (mirror), na którym zainstalujemy nasz wirtualizator.

Przygotowanie ISO

Ze strony producenta: https://www.proxmox.com/en/downloads, pobieramy aktualny obraz ISO z Proxmox VE.
Bootowalny pendrive przygotujemy za pomocą oprogramowania Balena Etcher, ktory działa zarówno na Windows, MacOS i Linux.

Instalator

Gdy uruchomiliśmy instalator, pierwszym krokiem będzie akceptacja umowy licencyjnej. Gdy ją zaakceptujemy instalator przeniesie nas do konfiguracji partycji i dysków. W tym miejscu wybieramy Options a następnie w okienku Harddisk options w sekcji filesystem wybieramy zfs (RAID1). w zakładce Advanced Options, można wybrać dodatkowe opcję. Tym razem je pomijamy i klikamy OK.
W dalszej części będziemy musieli stworzyć hasło root’a, podać adres mailowy do powiadomień, skonfigurować sieć i podać nazwę FQDN naszego przyszłego serwera Proxmox. Tak na prawdę sama instalacja jest prosta i intuicyjna.

Rekonesans po instalacji

Schemat blokowy

Ponieważ nasz serwer Proxmox jest maszyną wirtualną uruchomioną na KVM, dyski na których pracujemy nazywają się vda i vdb. To standardowe nazwy dla sterownika VirtIO. Oczywiście w środowisku produkcyjnym nie zalecamy używania tzw. zagnieżdżonej wirtualizacji (nested virtualization).

Gdzie:
vdx1 – partycja bootująca
vdx2 – partycja EFI
vdx3 – partycja root z systemem Proxmox.

ZFS Pool

Proxmox tworzy pulę o nazwie rpool do której należą zwykle dwie ostatnie partycje. W tym przypadku sa to /dev/vda3 oraz /dev/vdb3.

Output polecenia:
zpool status -v rpool

Awaria i naprawa puli

Po uruchomieniu serwera i wywołaniu polecenia lsblk widzimy że nowy dysk /dev/vdb nie ma założonych partycji.

Wynik polecenia zpool status -v rpool jasno wskazuje, że mamy problem i nasza pula ma obecnie status DEGRADED. W przypadku uszkodzenia dysku /dev/vda zakończy się to całkowitą utratą danych.

Narzędzie od Proxmox’a proxmox-boot-tool status również informuje nas o problemie.

Kopia tablicy partycji

Pierwszą czynnością którą musimy teraz zrobić jest odwzorowanie tych samych partycji na nowym dysku jakie znajdują się na zdrowym dysku z Proxmox.
Można to zrobić ręcznie np za pomocą polecenia fsdisk ale o wiele bardziej prostym sposobem jest skorzystanie z narzędzia sgdisk
Składnia tego polecenia to:

sgdisk [dysk_wzorcowy] -R [nowy_dysk]

Czyli w tym przypadku polecenie będzie nastepujące:

sgdisk /dev/vda -R /dev/vdb

Teraz dla nowego dysku musimy wygenerować nowy GUUID

sgdisk -G /dev/vdb

Jak widać poniżej polecenie wykonało się poprawnie i cel został osiągnięty

Zamiana dysku w puli ZFS

Wracając do ZFS wywołujemy polecenie

zpool status -v rpool

Na zrzucie ekranu widzimy, że pula w dalszym ciągu ma status DEGRAED. Dzieje się tak ponieważ ZFS probuje odnaleźć poprzednią partycję /dev/vdb3
Kolejnym krokiem jaki wykonamy będzie dołączenie partycji z nowego dysku i wymuszenie replikacji

zpool replace -f rpool 7466380360375522658 vdb3

Czas trwania replikacji zależy od ilości danych jakie znajdują się na dysku.
Gdy sprawdzimy ponownie status naszej puli poleniem zpool status -v rpool, zobaczymy że wszystkie dyski są online i nasza pula wróciła do zdrowia.

Konfiguracja bootloader’a

Co prawda dane pomiędzy partycjami się już synchronizują, jednakże gdybyśmy zakończyli na tym etapie mogłoby się okazać że podczas wymiany kolejnego dysku Proxmox nie uruchomi sie po restarcie. Przyczyną jest brak konfiguracji bootloadera na wymienionym dysku.

Za pomocą narzędzia proxmox-boot-tool formatujemy partycję 2 nowego dysku.

proxmox-boot-tool format /dev/vdb2

Następnie przebudowujemy initramfs

proxmox-boot-tool init /dev/vdb2

Podsumowanie

Jak się okazuje instalacja Proxmox bez tradycyjnego kontrolera RAID, jest procesem prostym, bezpiecznym i oferującym bardzo wiele korzyści.
Pomimo iż skorzystanie z kontrolera RAID jest podejściem rekomendowanym, to warto znać inne rozwiązania i możliwości. Każde z rozwiązań ma swoje zalety i wady, dlatego zawsze warto rozwiązania dopasowywać do danej sytuacji