Table of Contents
Mode de secours PXE CentOS
Table of Contents
Cet article décrit comment mettre en oeuvre un environnement rescue sur le serveur DRBL.
Mise en oeuvre du mode secours
Description de l'environnement DRBL
Le serveur déployé comporte
- Un serveur TFTP fonctionnel
- Un serveur NFS opérationnel./tftpboot/node_root/etc/exports
A propos du dossier TFPBOOT
Le dossier /tftpboot
contient :
- les exports NFS
- un dossier
/tftpboot/nbi_img/
contenant le système d'ammorce PXE:- menu de boot
pxelinux.cfg/default
- noyau linux
vmlinuz-pxe
- rootfs
initrd-pxe.img
A propos des exports NFS
Deux types d'export sont déclarés dans le fichier de configuration /tftpboot/node_root/etc/exports
:
- un export partagé
/tftpboot/node_root
- des imports individuels vers chaque nodes
/tftpboot/nodes/xxx.xxx.xxx.xxx
Préparation serveur PXE:
Créer le système d'ammorce
Copier les fichiers du noyau rescue dans les répertoire d'ammorce:
cp /home/petra/txxa1/initramfs-0-rescue-20aa28ba84a14b598632dce463c0538f.img /tftpboot/nbi_img/initrd-rescue.img cp /home/petra/txxa1/vmlinuz-0-rescue-20aa28ba84a14b598632dce463c0538f /tftpboot/nbi_img/vmlinuz-rescue
les fichiers initramfs & vmlinuz peuvent être générés pour le noyau de secours avec le noyau actuel du serveur à secourir:
/etc/kernel/postinst.d/51-dracut-rescue-postinst.sh $(uname -r) /boot/vmlinuz-$(uname -r)
Créer le fichier kickstart
Créer un fichier de configuration kickstart (ks.cfg) et le placer dans l'un des sous répertoires de l'export partagé (par exemple /tftpboot/node_root/tmp
) du serveur NFS.
# Fichier de configuration Kickstart en mode de secours CentOS 4.4 # # Langue du système # lang fr_FR.UTF-8 # # Modules de langue à installer # #langsupport --default=fr_FR.UTF-8 fr_FR.UTF-8 # #Clavier système # keyboard fr # #Souris système # mouse none # # Récupérer le système de secours de NFS # nfs --server=xx.xxx.xxx.xx --dir=/tftpboot/nodes_root/tmp # # Récupérer le système de secours de http # # url --url http://$yourwebserver/directory/that/contains/disc1/CentOS/RPMS/ # Informations réseau # #network --bootproto=dhcp
Configurer l'entrée dans le menu PXE ainsi :
LABEL CentOS 7 Rescue via NFS KERNEL vmlinuz-rescue MENU LABEL CentOS 7 Rescue via NFS IPAPPEND 2 APPEND initrd=initrd-rescue.img ramdisk_size=10000 text rescue ks=nfs:xx.xxx.xxx.xx:/tftpboot/node_root/tmp/ks.cfg
Utilisation du mode rescue
Démarrer le système en mode rescue en utilisant l'entrée ajoutée dans le menu PXE CentOS 7 Rescue via NFS
Récupérer l'environnement natif
Afin de réparer un système de fichier endommagé il faut le monter dans l'arbre du système de secours.
Un environnement chrooté est nécessaire dans la pluspart des cas parcequ'on a besoins des bibliothèques dynamiques.
Système de fichier LVM
Si l’on souhaite accéder à une partition LVM en mode secours, les manipulations suivantes sont nécessaires:
Création d’un répertoire en local
pour monter les partitions logiques LVM
mkdir /mnt/LVM
Récupération des partitions LVM
Récupérer les noms des volumes group de la partition LVM :
lvm vgscan
Note: Si les nodes n'aparaissent pas sous /dev relancer la commande avec lvm vgscan --mknodes
Activer les volumes group de la partition LVM :
lvm vgchange -ay <VolName>
Récupérer les noms dees volumes logiques de la partition LVM :
lvm lvs
Monter les volumes logiques
Monter les volumes logiques de la partition LVM sur le répertoire local :
mount /dev/<VolName>/<LogName> /mnt/LVM
Préparer le jail chroot
Afin de disposer d'un système de fichier autonome, monter le système de fichier racine sur le répertoire /mnt
mount -t xfs /dev/mapper/vg00-lvroot /mnt mount -t xfs /dev/mapper/vg00-lvproduits /mnt/produits mount -t xfs /dev/mapper/vg01-lvvar /mnt/var mount -t xfs /dev/mapper/vg01-lvvar_log /mnt/var/log mount -t proc proc proc/ mount --rbind /sys sys/ mount --rbind /dev dev/
Il faut maintenant pratiquer l'échange de clefs avec le serveur PXE afin de permmettre les sauvegardes restaurations avec l'authentification par clef (sans devoir saisir le mot de passe):
Générer le trousseau de clef dans l'environnment chrooté du serveur:
chroot /mnt ssh-keygen
Implémenter la clef dans le fichier authorized_keys
du serveur PXE:
ssh-copy-id -f -i /root/.ssh/id_rsa.pub <user>@<adresse-ip-serveur-pxe>
Tester une connexion sans mot de passse:
ssh <user>@<adresse-ip-serveur-pxe>
Important: après les opérations de secours penser à faire le ménage dans le fichier authorized_keys
du serveur PXE
Récupérer le chargeur d'amorçage GRUB
Le chargeur de démarrage GRUB peut parfois être endommagé, compromis ou supprimé en raison de divers problèmes, tels que des défaillances liées au matériel ou aux logiciels, ou peut parfois être remplacé par d'autres systèmes d'exploitation, en cas de double amorçage. Un chargeur de démarrage Grub corrompu empêche un système CentOS / RHEL de démarrer et de transférer le contrôle au noyau Linux.
La première étape du chargeur d'amorçage Grub est installée sur les 448 premiers octets au début de chaque disque dur, dans une zone généralement appelée enregistrement de démarrage principal (MBR).
La taille maximale du MBR est de 512 bytes. Si, pour une raison quelconque, les 448 premiers octets sont écrasés, CentOS ou Red Hat Enterprise Linux ne peuvent être chargés que si on démarre en mode de secours que l'on réinstalle le chargeur d'amorçage MBR GRUB.
Identifier le disque dur en exécutant la commande ci-dessous dans l'invite de secours.
# ls /dev/sd*
Si l'ordinateur utilise un ancien contrôleur RAID physique sous-jacent, les disques porteront d'autres noms, tels que /dev/cciss
. De plus, si le système CentOS est installé sur une machine virtuelle, les disques durs peuvent être nommés /dev/vda
ou /dev/xvda
.
Après avoir identifié le disque dur de la machine, on peut commencer à installer le chargeur de démarrage GRUB en lançant les commandes ci-dessous.
Dans le chroot installer grub sur le secteur d'ammorçage
/sbin/grub2-install /dev/sda
Redémarrer
reboot
Sauvegarder le système de fichier
Dans le chroot faire un snapshot des dump xfs
$ xfsdump -l0 - <chemin-vers-le-fs-xfs> | gzip -c | ssh user@host dd of=/backup.dgz
Restaurer xfs depuis un hôte distant:
Dans le chroot faire xfsrestore
des sauvegardes distantes:
$ ssh user@host "dd if=/somewhere/backup.dgz" | gunzip -c | xfsrestore - /