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:
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:
# rsync -aqrxz root@target:/ backup.d
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.# ssh root@target "tar -cf - --acls --xattrs --one-file-system --absolute-names /" | gzip -1 >backup.tgz
- 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
# 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>
#!/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
}
update-grub2
- 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
- Krok 4: Podziel dysk VPS na partycje
-
Istnieją dwa alternatywne scenariusze partycjonowania dysku VPS:
- 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.
-
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
# 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
- 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
# passwd
# service restart ssh
## z VPS-a kopii zapasowej
# rsync -arxz backup.d/* root@target:/mnt/
## z VPS-a kopii zapasowej
# cat backup.tgz | ssh root@target "tar -C /mnt -zaxf -"
## z VPS-a kopii zapasowej
# tar -tvf backup.tgz | egrep -- '->' >list_of_symlinks.txt
## z kopii zapasowej VPS
# scp list_of_symlinks.txt root@target:/mnt/root/
## 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
- 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
# chroot /mnt
# apt install pkg-dev linux-headers-amd64 linux-image-amd64
# apt install zfs-dkms zfs-initramfs
# apt install grub-pc
# update-initramfs -u -k all
## this is /etc/default/grub
GRUB_CMDLINE_LINUX="root=ZFS=rpool"
# update-grub
# 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
# reboot
Przeczytaj więcej artykułów