niezależna wyszukiwarka VPSów rankingowana według ceny

nie znaleziono pasujących usług

Instalowanie ZFS na partycji root w działającym VPS

Ten przewodnik wyjaśnia, jak zainstalować ZFS jako system plików root na VPS, który zawiera istniejącą instalację systemu Linux, bez utraty danych. VPS będzie miał małą partycję rozruchową EXT4 dla GRUB2 z jądrem i initrd oraz dużą pulę ZFS zamontowaną na root z włączoną kompresją. Większość poleceń będzie wydawana z obrazu live CD, a także zostanie pokazane obejście, jeśli VPS nie obsługuje montowania obrazów ISO.

Spis treści:
1. Wykonaj kopię zapasową danych
2. Uruchom obraz live OS
3. Zainstaluj ZFS w środowisku live OS
4. Podziel dysk VPS na partycje
5. Zainstaluj ZFS na dysku VPS
6. Przywróć kopię zapasową do nowego systemu plików root ZFS
7. Zainstaluj GRUB2
8. Uruchom system z puli root ZFS
Krok 1: Wykonaj kopię zapasową danych
Jeśli masz drugi VPS lub komputer domowy z wystarczającą ilością miejsca do przechowywania kopii zapasowej, uruchom z tego komputera:
# rsync -aqrxz root@target:/ backup.d
gdzie target to nazwa hosta VPS, który jest konwertowany. Spowoduje to skopiowanie całego systemu plików root przez SSH na maszynę kopii zapasowej, a przywrócenie tej kopii na docelowy VPS później będzie proste. Jeśli musisz skompresować kopię zapasową z powodu braku miejsca, możesz alternatywnie utworzyć skompresowane archiwum TGZ:
# ssh root@target "tar -cf - --acls --xattrs --one-file-system --absolute-names /" | gzip -1 >backup.tgz
Jednak przy przywracaniu systemu plików root z archiwum TAR konieczne będzie odtworzenie wszystkich dowiązań symbolicznych, których cele mają bezwzględne ścieżki, ponieważ TAR konwertuje ich cele na względne ścieżki, więc użycie rsync jest prostszą alternatywą. Później zostanie pokazane, jak prawidłowo przywrócić archiwum TAR.
Krok 2: Uruchom system operacyjny z obrazu live
Konwersja na ZFS zostanie przeprowadzona z systemu operacyjnego uruchomionego z płyty live. W zależności od możliwości panelu sterowania Twojego VPS, może on już mieć gotowy do uruchomienia obraz systemu live. Alternatywnie, możesz pobrać obraz ISO Debian live z lustra Debiana i przesłać go do panelu sterowania swojego VPS, a następnie uruchomić ISO z tego miejsca; to zadziała dobrze, nawet jeśli Twój VPS działa na innej dystrybucji. Upewnij się, że używasz obrazu ISO systemu live, a nie obrazu instalacyjnego, ponieważ obrazy instalacyjne nie zawierają apt i nie są w stanie zainstalować niezbędnego oprogramowania w środowisku live. Jeśli panel sterowania Twojego VPS obsługuje uruchamianie z obrazu ISO dostarczonego przez użytkownika, przejdź do Kroku 3, w przeciwnym razie nadal możesz uruchomić pobrany ISO, konwertując partycję wymiany, jeśli istnieje, na EXT4 i przechowując ISO w tej odzyskanej przestrzeni dyskowej, a następnie skonfigurować GRUB2 do uruchamiania z tego ISO. Odbywa się to w następujący sposób:
# fdisk --list /dev/vda
Dysk /dev/vda: 35 GiB, 37580963840 bajtów, 73400320 sektorów
Jednostki: sektory o rozmiarze 1 * 512 = 512 bajtów
Rozmiar sektora (logiczny/fizyczny): 512 bajtów / 512 bajtów
Rozmiar I/O (minimalny/optymalny): 512 bajtów / 512 bajtów
Typ etykiety dysku: dos
Identyfikator dysku: 0x495b5ce4

Urządzenie Rozruch Start Koniec Sektory Rozmiar Id Typ
/dev/vda1 * 2048 69203583 69201536 33G 83 Linux
/dev/vda2 69203584 73397887 4194304 2G 82 Linux swap
Ten VPS ma partycję wymiany o rozmiarze 2GB w /dev/vda2, która jest wystarczająco duża, aby przechowywać ISO. Utwórz system plików EXT4, zamontuj go i pobierz na niego ISO:
# swapoff /dev/vda2     # wyłącz partycję wymiany
# mkfs.ext4 /dev/vda2   # utwórz system plików EXT4
# mount /dev/vda2 /mnt  # zamontuj odzyskaną przestrzeń
# mkdir /mnt/images/
# wget -O /mnt/images/image_file.iso <image_URL>
następnie poinstruuj GRUB2, aby uruchamiał się z tego ISO; edytuj /etc/grub.d/40_custom w następujący sposób:
#!/bin/sh
exec tail -n +3 $0
# Ten plik zapewnia łatwy sposób dodawania niestandardowych wpisów do menu. Po prostu wpisz
# wpisy menu, które chcesz dodać, po tym komentarzu. Uważaj, aby nie zmieniać
# linii 'exec tail' powyżej.

menuentry "Live ISO" {
  set ISOFile="/images/image_file.iso"
  loopback loop (hd0,2)$ISOFile
  linux (loop)/live/vmlinuz boot=live findiso=$ISOFile
  initrd (loop)/live/initrd.img
}
i zastosuj konfigurację za pomocą
update-grub2
Po ponownym uruchomieniu VPS, menu GRUB2 zaoferuje opcję uruchomienia z obrazu live. Kontynuuj od tego momentu, korzystając z konsoli ratunkowej VNC dostępnej w panelu sterowania dostawcy.
Krok 3: Zainstaluj ZFS w środowisku live OS
Uruchom obraz live OS i uzyskaj dostęp do jego terminala. Następnie zainstaluj pakiety ZFS w środowisku live OS:
# echo deb http://deb.debian.org/debian stretch contrib >> /etc/apt/sources.list
# apt update
# apt install zfs-dkms
# modprobe zfs
Teraz środowisko live OS posiada moduł jądra ZFS oraz narzędzia ZFS wymagane do sformatowania głównego systemu plików Twojego VPS.
Krok 4: Podziel dysk VPS na partycje
Istnieją dwa alternatywne scenariusze partycjonowania dysku VPS:
  1. Jeśli przechowałeś obraz live ISO w /dev/vda2, nie możesz teraz modyfikować tej partycji, ponieważ system live od niej zależy, i żadne partycjonowanie nie zostanie wykonane na dysku VPS. ZFS zostanie sformatowany na istniejącej partycji /dev/vda2, a /dev/vda1 pozostanie bez zmian i później zostanie przeznaczony jako stała partycja rozruchowa do przechowywania jądra i initrd. Przejdź do Kroku 5.
  2. Jeśli Twoje środowisko na żywo nie zależy od pliku ISO przechowywanego na dysku VPS, przeprowadź ponowną partycję dysku, tworząc jedną małą partycję rozruchową dla GRUB2 oraz jedną dużą partycję dla korzenia ZFS, która zajmuje całą pozostałą przestrzeń dyskową. Wykonaj fdisk, aby utworzyć następujące dwie partycje:
    # fdisk /dev/vda

    Command (m for help): p

    Disk /dev/vda: 35 GiB, 37580963840 bytes, 73400320 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x495b5ce4

    Device     Boot    Start      End  Sectors Size Id Type
    /dev/vda1           2048 69203583 69201536  33G bf Solaris
    /dev/vda2  *    69203584 73397887  4194304   2G 83 Linux
    Utwórz główną partycję rozruchową o rozmiarze 100MB i oznacz ją jako rozruchową za pomocą gwiazdki (*), z identyfikatorem partycji = 83 (Linux). Będzie ona sformatowana jako EXT4 dla kompatybilności z GRUB2 i będzie zawierać dane rozruchowe. Następnie utwórz kolejną główną partycję dla ZFS, z identyfikatorem = bf (Solaris). Zapisz zmiany na dysku i zamknij fdisk. Teraz, gdy dysk jest prawidłowo podzielony na partycje, możesz sformatować partycję rozruchową:
    # mkfs.ext4 /dev/vda2
Krok 5: Zainstaluj ZFS na dysku VPS
Sformatuj /dev/vda1 jako wolumin ZFS:
# zpool create -o ashift=12 \
  -O acltype=posixacl -O canmount=on -O compression=zstd \
  -O dnodesize=auto -O normalization=formD -O relatime=on -O xattr=sa \
  -O mountpoint=/ -R /mnt \
  rpool /dev/vda1
Ten zestaw opcji jest zalecany przez dokumentację ZFS dla najwyższej kompatybilności z najnowszymi i przyszłymi dyskami. Opcja compression=zstd włącza algorytm kompresji ZSTD, który ma wyższy współczynnik kompresji niż domyślny LZ4, chociaż możesz użyć compression=lz4, aby zmniejszyć zużycie procesora, jeśli Twój VPS ma wysokie I/O dysku. Pula nazywa się rpool, co jest najczęściej używaną nazwą dla pul głównych. Po zakończeniu tego polecenia, rpool zostanie zamontowany w katalogu /mnt środowiska live, zgodnie z opcją -R /mnt powyżej, ale będzie automatycznie montowany w / przy każdym kolejnym uruchomieniu. Zamontowanie go w /mnt jest konieczne, aby przywrócić na nim kopię zapasową z środowiska live.
Krok 6: Przywróć kopię zapasową do nowego systemu plików ZFS root
Zainstaluj serwer OpenSSH w środowisku live, aby odebrać dane kopii zapasowej z VPS kopii zapasowej:
# apt install openssh-server
Dla uproszczenia, włącz PermitRootLogin yes w /etc/ssh/sshd_config w środowisku live, następnie ustaw bezpieczne hasło roota i zrestartuj OpenSSH:
# passwd
# service restart ssh
i rozpocznij przywracanie danych z kopii zapasowej z VPS-a kopii zapasowej, co wypełni pulę root ZFS zamontowaną na /mnt:
## z VPS-a kopii zapasowej
# rsync -arxz backup.d/* root@target:/mnt/
lub jeśli użyłeś TAR-a do utworzenia archiwum kopii zapasowej, przywróć je za pomocą:
## z VPS-a kopii zapasowej
# cat backup.tgz | ssh root@target "tar -C /mnt -zaxf -"
jednak jak napisałem w Kroku 1, podczas ekstrakcji TAR konwertuje ścieżkę docelową absolutnych dowiązań symbolicznych na ścieżki względne; te dowiązania symboliczne można prawidłowo przywrócić w następujący sposób. Zauważ, że to przywracanie nie jest konieczne, jeśli nie użyłeś TAR-a do utworzenia kopii zapasowej systemu plików root. Z VPS-a kopii zapasowej, wyświetl listę wszystkich dowiązań symbolicznych zawartych w archiwum:
## z VPS-a kopii zapasowej
# tar -tvf backup.tgz | egrep -- '->' >list_of_symlinks.txt
następnie skopiuj listę do docelowego VPS do katalogu /mnt, który teraz zawiera system plików root odtworzony z kopii zapasowej:
## z kopii zapasowej VPS
# scp list_of_symlinks.txt root@target:/mnt/root/
Z docelowego VPS, chroot do /mnt i wykonaj ten skrypt Bash, aby przywrócić wszystkie bezwzględne dowiązania symboliczne:
## ze środowiska chroot
while read -r row; do
  src=$(echo "$row" | grep -Po '(?<=[0-9]{2}:[0-9]{2} )[^ ]+')
  tgt=$(echo "$row" | grep -Po '(?<= -> ).+')

  echo "łączenie: $src -> $tgt"
  ln -fs "$tgt" "$src"
done </root/list_of_symlinks.txt
Twój system plików root jest teraz w pełni odtworzony z kopii zapasowej i może zostać uruchomiony, ale najpierw potrzebujesz działającego bootloadera.
Krok 7: Zainstaluj GRUB2
Jeśli jesteś wewnątrz chroot, wyjdź z niego i wróć do środowiska live. Następnie podłącz wirtualne systemy plików do /mnt i zamontuj partycję rozruchową:
# mount --bind /dev  /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys  /mnt/sys
# mount /dev/vda2 /mnt/boot
Możesz zdecydować się na skopiowanie istniejącej zawartości z /mnt/boot/ do nowej partycji rozruchowej. Przejdź do chroot w puli root, a następnie zainstaluj hak initramfs ZFS, moduł jądra ZFS oraz narzędzia użytkownika ZFS wymagane do wygenerowania initrd:
# chroot /mnt
# apt install pkg-dev linux-headers-amd64 linux-image-amd64
# apt install zfs-dkms zfs-initramfs
następnie zainstaluj pakiet GRUB2:
# apt install grub-pc
# update-initramfs -u -k all
edytuj /etc/default/grub, aby ustawić pulę ZFS jako urządzenie główne, modyfikując zmienną GRUB_CMDLINE_LINUX:
## this is /etc/default/grub
GRUB_CMDLINE_LINUX="root=ZFS=rpool"
następnie zastosuj konfigurację:
# update-grub
i na końcu zainstaluj GRUB2 do MBR:
# grub-install /dev/vda
Krok 8: Uruchom system z głównej puli ZFS
System jest gotowy, w pełni przywrócony z kopii zapasowej i może zostać uruchomiony. Wyjdź z chroot i odmontuj wszystkie wirtualne systemy plików, a następnie wyeksportuj główną pulę ZFS:
# exit # wyjdź z chroot rpool
# umount /mnt/dev
# umount /mnt/proc
# umount /mnt/sys
# umount /mnt/boot
# umount /mnt
# zpool export -a
Możesz teraz usunąć obraz ISO z panelu sterowania VPS, jeśli skorzystałeś z tej opcji, lub usunąć ISO z dysku twardego i zrestartować system w puli głównej ZFS:
# reboot
Konwersja głównego systemu plików VPS z EXT4 na ZFS została zakończona, a VPS uruchomi się w Twoim starym zainstalowanym systemie jak zwykle.

Przeczytaj więcej artykułów
Angielski Arabski Bengalski Chiński Filipino Francuski Hiszpański Indonezyjski Japoński Koreański Malajski Niemiecki Polski Portugalski Rosyjski Turecki Wietnamski
Pomoc  –  Indeks  –  Polityka Prywatności  –  Kontakt  –