# Changer un disque d’un hyperviseur Cette fiche a pour vocation de documenter le changement d’un disque pour un **hyperviseur**. ## Disposition actuelle Actuellement, chaque hyperviseur a deux disques de 1 à 2 To, en redondance. Il faut noter que la redondance boot est gérée par Proxmox, la redondance donnée est quant à elle gérée par ZFS. Ils sont partitionnés comme suit : - Partition d’espacement, du secteur 2014 secteurs de 34 à 2047. Parfois de 2048 à 4095. Cette partition ne contient aucune données, elle ne sert que comme espacement avant la première « vraie » partition ??? - Partition de boot, cette partition s’occupe du démarrage du système, elle est entièremnt gérée par Proxmox. Elle occupe 512 Mo à partir du secteur 2048 / 4096. C’est une partition EFI. - Le reste du disque est occupée par la partiton de donnée (par exemple 1 To), c’est une partiton en miroir gérée par ZFS, elle a le type `Solaris /usr & Apple ZFS`. Il est important de noter que **ZFS ne s’occupe du miroir que d’une unique partition et non du disque entier**. Cette table de partition est donnée à titre indicative, et peut varier ou être amené à évoluer. En cas de changement de disque, il est préférable de copier le partitionnement de l’autre disque le plus fidélement possible. ## Changement physique du disque Identifier le disque à changer grâce à la LED de statut, et procéder au changement physique du disque. De nombreux bugs de compatibilité ou physique peuvent survenir qu’il faudra malheuresement traiter au cas pour cas. Les conseils de débuggage de la fiche en question s’appliquent, notamment `dmesg -T` qui journalise les évènement disques notamment. ## Partitionnement du nouveau disque Cette étape peut se faire sur un ordinateur en amont ou directement sur la machine si elle fonctionne. Cette étape peut se faire via l’utilitaire `fdisk` préinstallé sur les serveurs. Pour lister les disques actuellement présents et leurs table de partionnement faites : ``` fdisk -l ``` Une fois le disque identifié (nous supposerons dans la suite que vous souhaitez repartitionner le disque /dev/sdx), pour commencer l’édition, tapez : ``` fdisk /dev/sdx ``` Cela ouvre une interface interractive afin de gérer le partionnement, les changements seront mis en cache, et il faut les valider à la fin. Tapez `p` pour afficher la table de partitionnement courante. Et `m` pour la liste des commandes. La première étape est de (re)faire une table de partitionnement. Nous utiliserons le format `GPT`. Tapez `g` pour créer une table vierge. Il faut maintenat créer les partitions. Nous commençons par la partition d’espacement. Tapez `n` pour ajouter une nouvelle partition. Donnez lui l’identifiant `1`. Mettez le premier secteur à `34` ou `2048` en fonction de ce que permet le disque. Entrez ensuite le dernier secteur `2047` ou `4095`. Il faut ensute changer le type de la partition avec `t` en `BIOS boot` (numéro `4`). L’auteur de ces lignes se demande si cette partition est vraiment utile ? Nous allons créer la partition. Créer une partition `2` en tapant `n`. Faites la commencer après la premiére (option par défaut). Donnez lui, 512 Mo en tapant `+512M`. Puis changer le type via `t` en `EFI System` (numéro `1`). Il faut maintenant créer la partition de données. Créer une partition `3` avec `n`. Faites la commencer après (défaut). Laissez là prendre toute la fin du disque (option par défaut) ou faites la correspondre à la taille de l’autre disque (en donnant `+nombre de secteur` par exemple). Changer le type en `Solaris /usr & Apple ZFS` via `t` (numéro `163`). La table de partitionnement est maintenant complète, vérifiez-là une dernière fois avec `p` avant de l’enregistrer avec `w`. ## Redondance boot Nous allons configurer la deuxième partition EFI pour le démarrage du système. Cela nécessite d’utiliser l’utilitaire `proxmox-boot-tool`. Je suppose dans la suite que cette partition est `/dev/sdx2`. La documentation officielle est https://pve.proxmox.com/wiki/Host_Bootloader. Pour afficher les disques de démarrage, faites `proxmox-boot-tool status`. Si des anciens disques sont toujours présents, il est possible de néttoyer avec `proxmox-boot-tool clean` (à vérifier). Nous allons commencer par formater la partition avec `proxmox-boot-tool format /dev/sdx2`. Ensuite nous initialisons le système avec `proxmox-boot-tool init /dev/sdx2`. Le disque doit maintenant apparaître dans `proxmox-boot-tool status`. ## Miroir ZFS Il faut maintenant configurer le miroir zfs de la partition de données que je supposerais être `/dev/sdx3`. Je suppose ici que la pool zfs est configuré et qu’il s’agit d’un simple changement de disque. Faites `zpool status` pour voit l’état de la pool. Un des disques doit être dans l’état `REMOVED` ou `OFFLINE`. Notez sont nom, cela peut-être soit l’identifiant de l’ancien disque ou un numéro quelquonque. Il faut identifier le nom du nouveau disque, par exemple via `ls -l /dev/disk/by-id`. Notez le nom de la partition, par exemple `ata-ST2000XX000-xxxxxx_XXXXXXXX-part3`. Attention ! Contrairement au disques de stockage, nous nous intéressons seulement à synchroniser la partition de données, **remarquez le -part3**. Nous pouvons maintenant lancer le remplacement avec `zpool replace rpool -part3` où `rpool` est le nom de la pool où effectuer le changement (on n’oublie pas le `-part3` !). La commande peut prendre quelques minutes à s’éxécuter. ZFS va maintenant procéder à la synchronisation du miroir. Cette opération peut prendre quelques heures à une journée.