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 :
où 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 :
# rsync -aqrxz root@target:/ backup.d
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.# ssh root@target "tar -cf - --acls --xattrs --one-file-system --absolute-names /" | gzip -1 >backup.tgz
- É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
# 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>
#!/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
}
update-grub2
- É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
- Étape 4 : Partitionner le disque du VPS
-
Il existe deux scénarios alternatifs pour partitionner le disque du VPS :
- 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.
-
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
# 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
- É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
# passwd
# service restart ssh
## from the backup VPS
# rsync -arxz backup.d/* root@target:/mnt/
## from the backup VPS
# cat backup.tgz | ssh root@target "tar -C /mnt -zaxf -"
## from the backup VPS
# tar -tvf backup.tgz | egrep -- '->' >list_of_symlinks.txt
## from the backup VPS
# scp list_of_symlinks.txt root@target:/mnt/root/
## 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
- É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
# 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
- É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
# reboot
Lire plus d'articles