Repartitionnement d’un VPS SSD gamme 2016 sous CentOS 7

Procédure de repartitionnement d’un VPS SSD sous CentOS 7 suite à un passage à l’offre supérieure.

Après trois serveurs dédiés Kimsufi d’OVH ces dernières années, j’ai décidé de faire des économies niveau budget tout en augmentant les performances en essayant leur offre VPS SSD. Et après les quelques tests effectués depuis une paire de semaines, il n’y a pas photo, les VPS même l’offre d’entrée de gamme (VPS SSD 1) offrent des performances meilleures que mon dernier Kimsufi SSD, même avec 2 fois moins de mémoire. Je pense que le gros goulot d’étranglement vient des processeurs Atom des Kimsufi d’entrée et de milieu de gamme, pas vraiment adaptés à une utilisation serveur. Coté VPS, on a beau être à la base sur des ressources système partagées, on reste sur du processing à base de Xeon.

Cette petite introduction faite, passons au sujet de ce billet, le repartitionnement du disque dur suite à un upgrade de l’offre, sans perte de données. En effet, après deux semaines de test sur le VPS SSD 1 et ses 10 Go de stockage, tous les sites migrés, j’ai fait la migration vers le VPS SSD 2 qui double la RAM et l’espace disque. Mais voilà, une fois l’offre à jour , il faut repartitionner cet espace disque car on reste avec les 10 Go utilisables du départ.

Procédure de repartitionnement d’un VPS SSD

Le tutoriel ci-dessous présente les étapes de repartitionnement afin de bénéficier de tout l’espace disque disponible sur un VPS SSD installé sous CentOS 7. A noter qu’OVH décrit la procédure, mais la fin diffère un peu au niveau de l’agrandissement de la partition car CentOS 7 utilise le système de fichier XFS.

C’est parti, on exécute l’outil de manipulation de partitions fdisk sur l’unique disque existant sur un VPS SSD qui doit se nommer vda, suivi de l’appui sur la touche p pour avoir les infos sur ce disque :

$ sudo fdisk /dev/vda
 Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
 Be careful before using the write command.

Command (m for help): p

Disk /dev/vda: 21.5 GB, 21474836480 bytes, 41943040 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
 Disk label type: dos
 Disk identifier: 0x000af71d

Device Boot Start End Blocks Id System
 /dev/vda1 * 2048 20971519 10484736 83 Linux

On voit bien que le disque fait 21.5 Go par contre le bloc de fin de la partition vda1 indique toujours 20971519. Pour l’étendre, il faut détruire la partition et la recréer à la bonne taille. Cela peut faire peur, mais tant que l’on enregistre pas la nouvelle table de partition et que l’on ne reboot pas, il n’y a pas de danger. Toutefois, on ne le répétera jamais assez, il faut faire des sauvegardes avant ce genre de manipulation.

A ce stade, il faut noter le numéro de début du bloc de la partition, ici 2048.

On peut maintenant détruire la partition avec la commande d :

Command (m for help): d
 Selected partition 1
 Partition 1 is deleted

Dans la foulée, on la recréé avec la commande n. Il faut choisir partition primaire, le numéro de partition est le 1, le premier secteur est le 2048 noté plus haut et on laisse vide le dernier secteur pour utiliser l’ensemble du disque.

Command (m for help): n
 Partition type:
 p primary (0 primary, 0 extended, 4 free)
 e extended
 Select (default p): p
 Partition number (1-4, default 1): 1
 First sector (2048-41943039, default 2048): 2048
 Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039):
 Using default value 41943039
 Partition 1 of type Linux and of size 20 GiB is set

A ce stade, en cas d’erreur par exemple, on peut tout annuler en appuyant sur q, on revient alors comme avant avec notre disque de 10 Go. Pour sauvegarder et ainsi écrire la nouvelle table de partition, on appuie sur w :

Command (m for help): w
 The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
 The kernel still uses the old table. The new table will be used at
 the next reboot or after you run partprobe(8) or kpartx(8)
 Syncing disks.

Voilà, le nouveau partitionnement est prêt, il ne reste plus qu’à redémarrer le serveur pour qu’il soit effectif :

$ sudo reboot

Lorsque la machine a redémarré, on voit que la partition est toujours à 10 Go :

$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 10G 6.6G 3.5G 66% /

Il faut maintenant étendre le système de fichier XFS au 20 Go disponibles. Cette opération se fait avec l’utilitaire xfs_growfs pour un tel file system. Voyons d’abord les information de la partition avec la commande xfs_info :

$ sudo xfs_info /dev/vda1
 meta-data=/dev/vda1 isize=256 agcount=6, agsize=524224 blks
 = sectsz=512 attr=2, projid32bit=1
 = crc=0 finobt=0
 data = bsize=4096 blocks=2621184, imaxpct=25
 = sunit=0 swidth=0 blks
 naming =version 2 bsize=4096 ascii-ci=0 ftype=0
 log =internal bsize=4096 blocks=2560, version=2
 = sectsz=512 sunit=0 blks, lazy-count=1
 realtime =none extsz=4096 blocks=0, rtextents=0

On étend le système de fichier XFS au maximum :

$ sudo xfs_growfs /dev/vda1
 meta-data=/dev/vda1 isize=256 agcount=6, agsize=524224 blks
 = sectsz=512 attr=2, projid32bit=1
 = crc=0 finobt=0
 data = bsize=4096 blocks=2621184, imaxpct=25
 = sunit=0 swidth=0 blks
 naming =version 2 bsize=4096 ascii-ci=0 ftype=0
 log =internal bsize=4096 blocks=2560, version=2
 = sectsz=512 sunit=0 blks, lazy-count=1
 realtime =none extsz=4096 blocks=0, rtextents=0
 data blocks changed from 2621184 to 5242624

Et c’est terminé, cela a pris moins d’une seconde. On vérifie avec df :

$ sudo df -h
 Filesystem Size Used Avail Use% Mounted on
 /dev/vda1 20G 6.6G 14G 33% /

Notre partition XFS a été augmentée au maximum sans aucune perte de données.

2 pensées sur “Repartitionnement d’un VPS SSD gamme 2016 sous CentOS 7”

  1. Bonjour,

    tant pour le monde RedHat que pour le monde Debian, pour redimensionner la partition, il suffit d’installer le paquet « cloud-init » et redémarrer la machine.

    Pas besoin de redimensionner à la main, tout se fait automatiquement au redémarrage.

    Merci tout de même pour les infos :p

    1. Merci de ces précisions Jerome, je ne connaissais pas cloud-init. Apparemment celui-ci peut faire beaucoup de choses sur des instances de VM. Dans le cas précis de cet article, le redimensionnement de partition est une chose à faire une seule fois et ensuite on n’y pense même plus, autant rester avec les outils classiques je pense.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *