un moteur de recherche indépendant pour les VPS classés par prix

aucun service correspondant trouvé

Installation de ZFS sur la racine dans un VPS en fonctionnement

Ce guide explique comment installer ZFS comme système de fichiers racine d'un VPS contenant une installation Linux existante sans provoquer de perte de données. Le VPS aura une petite partition de démarrage EXT4 pour GRUB2 avec le noyau et l'initrd, ainsi qu'un pool ZFS de grande taille monté sur la racine avec la compression activée. La plupart des commandes seront exécutées à partir d'une image live CD et une solution de contournement sera présentée si le VPS ne supporte pas le montage d'images ISO.

Index :
1. Sauvegarder les données
2. Démarrer une image live OS
3. Installer ZFS sur l'environnement live OS
4. Partitionner le disque du VPS
5. Installer ZFS sur le disque du VPS
6. Restaurer la sauvegarde sur le nouveau système de fichiers racine ZFS
7. Installer GRUB2
8. Démarrer dans le pool racine ZFS
Étape 1 : Sauvegarder les données
Si vous disposez d'un deuxième VPS ou d'un ordinateur personnel avec suffisamment d'espace pour stocker les données de sauvegarde, exécutez depuis cet ordinateur :
# rsync -aqrxz root@target:/ backup.d
target est le nom d'hôte du VPS en cours de conversion. Cela copiera l'intégralité du système de fichiers racine via SSH vers la machine de sauvegarde, et la restauration de cette sauvegarde sur le VPS cible sera simple par la suite. Si vous devez compresser la sauvegarde par manque d'espace, vous pouvez également créer une archive TGZ compressée :
# ssh root@target "tar -cf - --acls --xattrs --one-file-system --absolute-names /" | gzip -1 >backup.tgz
Cependant, lors de la restauration d'un système de fichiers racine à partir d'une archive TAR, il sera nécessaire de recréer tous les liens symboliques dont les cibles ont des noms de chemins absolus, car TAR convertit leurs cibles en noms de chemins relatifs. Ainsi, l'utilisation de rsync est l'alternative la plus simple. La manière de restaurer correctement l'archive TAR sera montrée plus tard.
Étape 2 : Démarrer une image live OS
La conversion vers ZFS sera effectuée à partir d'un système d'exploitation live CD. Selon les capacités de votre panneau de contrôle VPS, il peut déjà avoir une image live OS prête à démarrer. Alternativement, vous pouvez télécharger une ISO live Debian depuis le miroir Debian et la téléverser sur votre panneau de contrôle VPS, puis démarrer l'ISO à partir de là ; cela fonctionnera parfaitement même si votre VPS exécute une distribution différente. Veillez à utiliser une image ISO live OS, et non une ISO d'installation, car les images d'installation ne disposent pas d'apt et ne peuvent pas installer le logiciel nécessaire dans l'environnement live. Si votre panneau de contrôle VPS prend en charge le démarrage à partir d'une image ISO fournie par l'utilisateur, passez à l'Étape 3, sinon vous pouvez toujours démarrer l'ISO téléchargée en convertissant une partition swap, si elle existe, en EXT4 et en stockant l'ISO dans cet espace de stockage récupéré, puis GRUB2 peut être configuré pour démarrer à partir de cette ISO. Cela se fait comme suit :
# fdisk --list /dev/vda
Disque /dev/vda: 35 GiB, 37580963840 octets, 73400320 secteurs
Unités: secteurs de 1 * 512 = 512 octets
Taille de secteur (logique/physique): 512 octets / 512 octets
Taille d'E/S (minimale/optimale): 512 octets / 512 octets
Type d'étiquette de disque: dos
Identifiant de disque: 0x495b5ce4

Périphérique Démarrage Début Fin Secteurs Taille Id Type
/dev/vda1 * 2048 69203583 69201536 33G 83 Linux
/dev/vda2 69203584 73397887 4194304 2G 82 Linux swap
Ce VPS dispose d'une partition swap de 2 Go dans /dev/vda2, qui est suffisamment grande pour stocker l'ISO. Créez le système de fichiers EXT4, montez-le et téléchargez l'ISO dessus :
# swapoff /dev/vda2     # désactiver la partition swap
# mkfs.ext4 /dev/vda2   # créer le système de fichiers EXT4
# mount /dev/vda2 /mnt  # monter l'espace récupéré
# mkdir /mnt/images/
# wget -O /mnt/images/image_file.iso <image_URL>
puis configurez GRUB2 pour démarrer à partir de cet ISO ; modifiez /etc/grub.d/40_custom comme suit :
#!/bin/sh
exec tail -n +3 $0
# Ce fichier permet d'ajouter facilement des entrées de menu personnalisées. Il suffit de taper les
# entrées de menu que vous souhaitez ajouter après ce commentaire. Veillez à ne pas modifier
# la ligne 'exec tail' ci-dessus.

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
}
et appliquez la configuration avec
update-grub2
Lorsque vous redémarrez le VPS, le menu GRUB2 proposera l'option de démarrer à partir de l'image live. Procédez à partir de là en utilisant la console de secours VNC offerte par le panneau de contrôle du fournisseur.
Étape 3 : Installer ZFS sur l'environnement du système d'exploitation live
Démarrez l'image du système d'exploitation live et accédez à son terminal. Ensuite, installez les paquets ZFS sur l'environnement du système d'exploitation live :
# echo deb http://deb.debian.org/debian stretch contrib >> /etc/apt/sources.list
# apt update
# apt install zfs-dkms
# modprobe zfs
Maintenant, le système d'exploitation live dispose du module noyau ZFS et des utilitaires ZFS nécessaires pour formater le système de fichiers racine de votre VPS.
Étape 4 : Partitionner le disque du VPS
Il existe deux scénarios alternatifs pour partitionner le disque du VPS :
  1. Si vous avez stocké l'ISO live dans /dev/vda2, vous ne devez pas modifier cette partition maintenant car le système live en dépend, et aucune partition ne sera effectuée sur le disque du VPS. ZFS sera formaté sur la partition existante /dev/vda2, et /dev/vda1 restera tel quel et sera ensuite réutilisé comme votre partition de démarrage permanente pour stocker le noyau et l'initrd. Passez à Étape 5.
  2. Si votre environnement en direct ne dépend pas d'un fichier ISO stocké sur le disque du VPS, repartitionnez le disque en créant une petite partition de démarrage pour GRUB2, et une grande partition pour la racine ZFS qui s'étend sur tout l'espace disque restant. Exécutez fdisk pour créer les deux partitions suivantes :
    # fdisk /dev/vda

    Commande (m pour l'aide) : p

    Disque /dev/vda : 35 GiB, 37580963840 octets, 73400320 secteurs
    Unités : secteurs de 1 * 512 = 512 octets
    Taille de secteur (logique/physique) : 512 octets / 512 octets
    Taille d'E/S (minimale/optimale) : 512 octets / 512 octets
    Type d'étiquette de disque : dos
    Identifiant de disque : 0x495b5ce4

    Périphérique     Démarrage    Début      Fin  Secteurs Taille Id Type
    /dev/vda1           2048 69203583 69201536  33G bf Solaris
    /dev/vda2  *    69203584 73397887  4194304   2G 83 Linux
    Créez une partition de démarrage principale de 100 Mo et marquez-la comme amorçable avec un astérisque (*), avec un ID de partition = 83 (Linux). Elle sera formatée en EXT4 pour la compatibilité avec GRUB2, et elle contiendra les données de démarrage. Ensuite, créez une autre partition principale pour ZFS, avec l'ID = bf (Solaris). Écrivez les modifications sur le disque et fermez fdisk. Maintenant que le disque est correctement partitionné, vous pouvez formater la partition de démarrage :
    # mkfs.ext4 /dev/vda2
Étape 5 : Installer ZFS sur le disque du VPS
Formatez /dev/vda1 en tant que volume 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
Cet ensemble d'options est recommandé par la documentation ZFS pour une compatibilité maximale avec les disques les plus récents et futurs. L'option compression=zstd active l'algorithme de compression ZSTD qui offre un taux de compression supérieur à celui de LZ4 par défaut, bien que vous puissiez utiliser compression=lz4 pour réduire l'utilisation du CPU si votre VPS a un I/O disque élevé. Le pool est nommé rpool, qui est le nom le plus couramment utilisé pour les pools racine. Lorsque cette commande est terminée, rpool sera monté sur le répertoire /mnt de l'environnement live, comme spécifié par l'option -R /mnt ci-dessus, mais il sera automatiquement monté sur / à chaque démarrage ultérieur. Le monter sur /mnt est nécessaire pour restaurer votre sauvegarde dessus depuis l'environnement live.
Étape 6 : Restaurer la sauvegarde sur le nouveau système de fichiers racine ZFS
Installez le serveur OpenSSH sur l'environnement live pour recevoir les données de sauvegarde depuis le VPS de sauvegarde :
# apt install openssh-server
Pour simplifier, activez PermitRootLogin yes dans /etc/ssh/sshd_config de l'environnement en direct, puis définissez un mot de passe root sécurisé et redémarrez OpenSSH :
# passwd
# service restart ssh
et initiez la restauration des données de sauvegarde depuis le VPS de sauvegarde, qui peuplera le pool racine ZFS monté sur /mnt :
## from the backup VPS
# rsync -arxz backup.d/* root@target:/mnt/
ou si vous avez utilisé TAR pour créer une archive de sauvegarde, restaurez-la avec :
## from the backup VPS
# cat backup.tgz | ssh root@target "tar -C /mnt -zaxf -"
cependant, comme je l'ai écrit dans Étape 1, lors de l'extraction, TAR convertit le chemin cible des liens symboliques absolus en chemins relatifs ; ces liens symboliques peuvent tous être correctement restaurés comme suit. Notez que cette restauration n'est pas nécessaire si vous n'avez pas utilisé TAR pour sauvegarder le système de fichiers racine. Depuis le VPS de sauvegarde, listez tous les liens symboliques contenus dans l'archive :
## from the backup VPS
# tar -tvf backup.tgz | egrep -- '->' >list_of_symlinks.txt
puis copiez la liste vers le VPS cible dans /mnt, qui contient maintenant le système de fichiers racine réinitialisé à partir de la sauvegarde :
## from the backup VPS
# scp list_of_symlinks.txt root@target:/mnt/root/
Depuis le VPS cible, chroot dans /mnt et exécutez ce script Bash pour restaurer tous les liens symboliques absolus :
## 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
Votre système de fichiers racine est maintenant entièrement restauré à partir de la sauvegarde et peut être démarré, mais vous avez d'abord besoin d'un chargeur de démarrage fonctionnel.
Étape 7 : Installer GRUB2
Si vous êtes dans le chroot, sortez-en et revenez à l'environnement live. Ensuite, liez les systèmes de fichiers virtuels à /mnt et montez la partition de boot :
# mount --bind /dev  /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys  /mnt/sys
# mount /dev/vda2 /mnt/boot
Vous pouvez choisir de copier tout contenu préexistant de /mnt/boot/ vers la nouvelle partition de boot. Entrez dans le chroot du pool racine, et depuis celui-ci, installez le hook initramfs ZFS, le module noyau ZFS et les outils utilisateur ZFS nécessaires pour générer l'initrd :
# chroot /mnt
# apt install pkg-dev linux-headers-amd64 linux-image-amd64
# apt install zfs-dkms zfs-initramfs
puis installez le paquet GRUB2 :
# apt install grub-pc
# update-initramfs -u -k all
modifiez /etc/default/grub pour définir le pool ZFS comme périphérique racine, en modifiant la variable GRUB_CMDLINE_LINUX :
## this is /etc/default/grub
GRUB_CMDLINE_LINUX="root=ZFS=rpool"
puis appliquez la configuration :
# update-grub
et enfin installez GRUB2 dans le MBR :
# grub-install /dev/vda
Étape 8 : Démarrer dans le pool racine ZFS
Le système est prêt, entièrement restauré à partir de la sauvegarde, et peut être démarré. Quittez le chroot et démontez tous les systèmes de fichiers virtuels, puis exportez le pool racine ZFS :
# exit # quittez le chroot rpool
# umount /mnt/dev
# umount /mnt/proc
# umount /mnt/sys
# umount /mnt/boot
# umount /mnt
# zpool export -a
Vous pouvez maintenant retirer l'image ISO du panneau de contrôle du VPS, si vous avez utilisé cette option, ou supprimer l'ISO du disque dur, et redémarrer le système dans le pool racine ZFS :
# reboot
La conversion du système de fichiers racine du VPS d'EXT4 vers ZFS est terminée, et le VPS démarrera dans votre ancien système installé comme d'habitude.

Lire plus d'articles
Allemand Anglais Arabe Bengali Chinois Coréen Espagnol Français Indonésien Japonais Malais Philippin Polonais Portugais Russe Turc Vietnamien
Aide  –  Index  –  Politique de confidentialité  –  Contact  –