VPS Price Tracker logo
onafhankelijke zoekmachine voor VPS'en, gesorteerd op prijs
Opslagserver Seedbox Snelle CPUVeel RAM

Zoek VPS:

Databasegrootte: 440.492 VPS
Database-update:11 uur geleden

geen overeenkomende diensten gevonden

ZFS installeren op root in een actieve VPS

Deze handleiding legt uit hoe u ZFS kunt installeren als het root-bestandssysteem van een VPS met een bestaande Linux-installatie zonder gegevensverlies te veroorzaken. De VPS krijgt een kleine EXT4-bootpartitie voor GRUB2 met de kernel en initrd, en een grote ZFS-pool die op root is gekoppeld met ingeschakelde compressie. De meeste opdrachten worden uitgevoerd vanuit een live CD-image en er wordt een workaround getoond als de VPS het koppelen van ISO-images niet ondersteunt.

Index:
1. De gegevens back-uppen
2. Een live OS-image opstarten
3. ZFS installeren in de live OS-omgeving
4. De VPS-schijf partitioneren
5. Installeer ZFS op de VPS-schijf
6. Herstel de back-up naar het nieuwe ZFS-rootbestandsysteem
7. Installeer GRUB2
8. Start op vanaf de ZFS-rootpool
Stap 1: Maak een back-up van de gegevens
Als u een tweede VPS of thuiscomputer heeft met voldoende ruimte om de back-upgegevens op te slaan, voer dan vanaf die computer het volgende uit:
# rsync -aqrxz root@target:/ backup.d
waarbij target de hostname is van de VPS die wordt geconverteerd. Hiermee wordt het volledige rootbestandsysteem via SSH naar de back-upmachine gekopieerd, en het later herstellen van deze back-up op de doel-VPS zal eenvoudig zijn. Als u de back-up moet comprimeren vanwege een gebrek aan ruimte, kunt u in plaats daarvan een gecomprimeerd TGZ-archief maken:
# ssh root@target "tar -cf - --acls --xattrs --one-file-system --absolute-names /" | gzip -1 >backup.tgz
Bij het herstellen van een root-bestandssysteem vanuit een TAR-archief is het echter nodig om alle symlinks waarvan de doelen absolute padnamen hebben opnieuw aan te maken, omdat TAR hun doelen omzet in relatieve padnamen; het gebruik van rsync is daarom het eenvoudigere alternatief. Hoe het TAR-archief correct hersteld kan worden, wordt later beschreven.
Stap 2: Start een live OS-image
De conversie naar ZFS wordt uitgevoerd vanuit een live CD-besturingssysteem. Afhankelijk van de mogelijkheden van uw VPS-controlepaneel is er mogelijk al een live OS-image klaar om te starten. Als alternatief kunt u een Debian live ISO downloaden van de Debian mirror en deze uploaden naar uw VPS-controlepaneel om de ISO vervolgens vanaf daar te starten; dit werkt prima, zelfs als uw VPS een andere distributie gebruikt. Let erop dat u een live OS ISO-image gebruikt en geen installatie-ISO, omdat installatie-images geen apt hebben en niet in staat zijn om de benodigde software in de live-omgeving te installeren. Als uw VPS-controlepaneel het starten vanaf een door de gebruiker geleverde ISO-image ondersteunt, ga dan direct naar Stap 3. Anders kunt u de gedownloade ISO nog steeds starten door een swap-partitie, indien aanwezig, om te zetten naar EXT4 en de ISO in die vrijgemaakte opslagruimte op te slaan, waarna GRUB2 kan worden geconfigureerd om vanaf die ISO te starten. Dit gebeurt als volgt:
# fdisk --list /dev/vda
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 83 Linux
/dev/vda2 69203584 73397887 4194304 2G 82 Linux swap
Deze VPS heeft een swap-partitie van 2 GB in /dev/vda2 die groot genoeg is om de ISO op te slaan. Maak het EXT4-bestandssysteem aan, koppel het en download de ISO naar deze partitie:
# swapoff /dev/vda2     # schakel swap-partitie uit
# mkfs.ext4 /dev/vda2   # maak EXT4-bestandssysteem aan
# mount /dev/vda2 /mnt  # koppel de teruggewonnen ruimte
# mkdir /mnt/images/
# wget -O /mnt/images/image_file.iso <image_URL>
instrueer GRUB2 vervolgens om vanaf deze ISO op te starten; bewerk /etc/grub.d/40_custom als volgt:
#!/bin/sh
exec tail -n +3 $0
# Dit bestand biedt een eenvoudige manier om aangepaste menu-items toe te voegen. Typ simpelweg de
# menu-items die u wilt toevoegen na deze opmerking. Pas op dat u
# de 'exec tail'-regel hierboven niet wijzigt.

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
}
en pas de configuratie toe met
update-grub2
Wanneer u de VPS opnieuw opstart, biedt het GRUB2-menu de optie om vanaf het live-image te booten. Ga vanaf daar verder met behulp van de VNC-rescueconsole die wordt aangeboden via het controlepaneel van de provider.
Stap 3: ZFS installeren in de live OS-omgeving
Boot het live OS-image en open de terminal. Installeer vervolgens de ZFS-pakketten in de live OS-omgeving:
# echo deb http://deb.debian.org/debian stretch contrib >> /etc/apt/sources.list
# apt update
# apt install zfs-dkms
# modprobe zfs
Nu beschikt het live OS over de ZFS-kernelmodule en de ZFS-hulpprogramma's die nodig zijn om het root-bestandssysteem van uw VPS te formatteren.
Stap 4: Partitioneer de VPS-schijf
Er zijn twee alternatieve scenario's voor het partitioneren van de VPS-schijf:
  1. Als u de live ISO in /dev/vda2 hebt opgeslagen, mag u die partitie nu niet wijzigen omdat het live-systeem ervan afhankelijk is, en er zal helemaal geen partitionering van de VPS-schijf worden uitgevoerd. ZFS wordt geformatteerd op de bestaande /dev/vda2-partitie, en /dev/vda1 blijft ongewijzigd en wordt later opnieuw gebruikt als uw permanente bootpartitie voor het opslaan van de kernel en initrd. Ga naar Stap 5.
  2. Als uw live-omgeving niet afhankelijk is van een ISO-bestand dat op de VPS-schijf is opgeslagen, partitioneer de schijf dan opnieuw door één kleine bootpartitie voor GRUB2 aan te maken en één grote partitie voor de ZFS-root die over alle resterende schijfruimte loopt. Voer fdisk uit om de volgende twee partities aan te maken:
    # 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
    Maak een primaire bootpartitie van 100MB aan en markeer deze als opstartbaar met een asterisk (*), met een partitie-ID = 83 (Linux). Deze wordt geformatteerd als EXT4 voor compatibiliteit met GRUB2 en bevat de bootgegevens. Maak vervolgens een andere primaire partitie aan voor ZFS, met ID = bf (Solaris). Schrijf de wijzigingen naar de schijf en sluit fdisk. Nu de schijf correct is gepartitioneerd, kunt u de bootpartitie formatteren:
    # mkfs.ext4 /dev/vda2
Stap 5: ZFS installeren op de VPS-schijf
Formatteer /dev/vda1 als een ZFS-volume:
# 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
Deze set opties wordt aanbevolen door de ZFS-documentatie voor de hoogste compatibiliteit met de nieuwste en toekomstige schijven. De optie compression=zstd activeert het ZSTD-compressiealgoritme, dat een hogere compressieratio heeft dan de standaard LZ4, hoewel u compression=lz4 kunt gebruiken om het CPU-gebruik te verminderen als uw VPS een hoge schijf-I/O heeft. De pool heet rpool, wat de meest gebruikte naam is voor root-pools. Wanneer dit commando is voltooid, wordt rpool gekoppeld aan de /mnt-directory van de live-omgeving, zoals gespecificeerd door de bovenstaande optie -R /mnt, maar het zal bij elke volgende boot automatisch worden gekoppeld aan /. Het koppelen aan /mnt is noodzakelijk om uw back-up vanuit de live-omgeving naar de pool te herstellen.
Stap 6: Herstel de back-up naar het nieuwe ZFS root-bestandssysteem
Installeer de OpenSSH-server in de live-omgeving om de back-upgegevens van de back-up-VPS te ontvangen:
# apt install openssh-server
Schakel voor de eenvoud PermitRootLogin yes in /etc/ssh/sshd_config van de live-omgeving in, stel vervolgens een veilig root-wachtwoord in en start OpenSSH opnieuw op:
# passwd
# service restart ssh
en start het herstel van de back-upgegevens van de back-up-VPS, waardoor de ZFS-rootpool die is gekoppeld aan /mnt wordt gevuld:
## from the backup VPS
# rsync -arxz backup.d/* root@target:/mnt/
of als u TAR hebt gebruikt om een back-uparchief te maken, herstel het dan met:
## from the backup VPS
# cat backup.tgz | ssh root@target "tar -C /mnt -zaxf -"
zoals ik echter schreef in Stap 1, zet TAR bij extractie het doelpad van absolute symlinks om in relatieve paden; deze symlinks kunnen allemaal als volgt correct worden hersteld. Let op: dit herstel is niet nodig als u TAR niet heeft gebruikt om het root-bestandssysteem te back-uppen. Maak vanaf de back-up VPS een lijst van alle symlinks in het archief:
## from the backup VPS
# tar -tvf backup.tgz | egrep -- '->' >list_of_symlinks.txt
kopieer vervolgens de lijst naar de doel-VPS in /mnt, waarin nu het root-bestandssysteem staat dat is hersteld vanuit de back-up:
## from the backup VPS
# scp list_of_symlinks.txt root@target:/mnt/root/
Vanaf de doel-VPS, chroot naar /mnt en voer dit Bash-script uit om alle absolute symbolische koppelingen te herstellen:
## from the chroot environment
while read -r row; do
  src=$(echo "$row" | grep -Po '(?<=[0-9]{2}:[0-9]{2} )[^ ]+')
  tgt=$(echo "$row" | grep -Po '(?<= -> ).+')

  echo "linking: $src -> $tgt"
  ln -fs "$tgt" "$src"
done </root/list_of_symlinks.txt
Uw root-bestandssysteem is nu volledig hersteld vanuit de back-up en kan worden opgestart, maar u heeft eerst een functionerende bootloader nodig.
Stap 7: GRUB2 installeren
Als u zich in de chroot bevindt, verlaat deze dan en keer terug naar de live-omgeving. Bind vervolgens de virtuele bestandssystemen aan /mnt en mount de boot-partitie:
# mount --bind /dev  /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys  /mnt/sys
# mount /dev/vda2 /mnt/boot
U kunt ervoor kiezen om eventuele reeds bestaande inhoud van /mnt/boot/ naar de nieuwe boot-partitie te kopiëren. Chroot in de rootpool en installeer vanuit daar de ZFS initramfs-hook, de ZFS-kernelmodule en de ZFS-userspace-tools die nodig zijn om de initrd te genereren:
# chroot /mnt
# apt install pkg-dev linux-headers-amd64 linux-image-amd64
# apt install zfs-dkms zfs-initramfs
installeer vervolgens het GRUB2-pakket:
# apt install grub-pc
# update-initramfs -u -k all
bewerk /etc/default/grub om de ZFS-pool als root-apparaat in te stellen door de variabele GRUB_CMDLINE_LINUX te wijzigen:
## this is /etc/default/grub
GRUB_CMDLINE_LINUX="root=ZFS=rpool"
pas vervolgens de configuratie toe:
# update-grub
en installeer tot slot GRUB2 in de MBR:
# grub-install /dev/vda
Stap 8: Start op vanuit de ZFS root pool
Het systeem is gereed, volledig hersteld vanuit de back-up, en kan worden opgestart. Verlaat de chroot en unmount alle virtuele bestandssystemen, exporteer vervolgens de ZFS root pool:
# exit # verlaat de rpool chroot
# umount /mnt/dev
# umount /mnt/proc
# umount /mnt/sys
# umount /mnt/boot
# umount /mnt
# zpool export -a
U kunt nu het ISO-bestand verwijderen uit het VPS-controlepaneel, indien u deze optie heeft gebruikt, of het ISO-bestand van de harde schijf verwijderen en het systeem opnieuw opstarten in de ZFS-rootpool:
# reboot
De conversie van het VPS-rootbestandssysteem van EXT4 naar ZFS is voltooid en de VPS zal als gewoonlijk opstarten in uw eerder geïnstalleerde systeem.

Lees meer artikelen
Transparantie over sponsoring:
Sommige hier vermelde serviceproviders sponsoren VPS Price Tracker door een commissie te betalen voor aankopen die via deze website zijn gestart. Het bestaan van een sponsorovereenkomst is bewust neutraal ten opzichte van de positie of prominentie van de resultaten, die op prijsvolgorde zijn gesorteerd na valutaomzetting.
Arabisch Chinees Duits Engels Filipino Frans Indonesisch Italiaans Japans Koreaans Nederlands Pools Portugees Russisch Spaans Turks Vietnamees
Help  –  Index  –  Privacybeleid  –  Contact  –