Skip to content

Changement du type de disque d'une instance Scaleway

Nous avons une instance avec un type de disque "local" dont la taille est limitée à 40Go.

Nous avons besoin de plus de place disque donc la (seule) solution est de changer le type de disque pour "block storage".

Ce document décrit la procédure à suivre pour faire cet échange en minimisant le temps d'interruption des services installés sur la machine.

Procédure

La procédure consiste :

  • à éteindre l'instance existante
  • à faire un snapshot de son disque
  • à créer la nouvelle instance à partir de ce snapshot
  • à déplacer les adresses IP de l'ancienne vers la nouvelle instance
  • à étendre la partition de la nouvelle instance

Eteindre l'instance

Temps estimé : < 5 minutes

Eteindre l'instance depuis l'interface de Scaleway.

Cette étape est optionnelle car il est possible de faire un snapshot de l'instance alors qu'elle est en fonctionnement.

Mais cette étape est fortement recommandée pour être sûr de la cohérence des données du snapshot notamment si des services comme MySQL tournent sur l'instance.

Faire un snapshot du disque

Temps estimé : < 5 minutes

Depuis l'interface de Scaleway, aller dans la page de l'ancienne instance puis dans l'onglet "Volumes associés". Cliquer sur les ... en regard du disque actuel (qui doit être du type SSD Local) et choisir "Snapshot".

Snapshot SSD local

Choisir le type "Unifié" (indispensable pour pouvoir faire un disque de type Block ensuite) :

Snapshot unifié

Notice

Quand j'ai fait le snapshot pour la machine YunoHost d'AddApps, le snapshot a été fait de façon instantané alors qu'il avait duré quelques minutes quand je l'avais fait 2 heures avant.

J'ai 2 hypothèses pour expliquer ça :

  • car j'en avais fait un une ou deux heures avant
  • car la machine était éteinte

Créer une nouvelle instance à partir du snapshot

Temps estimé : < 5 minutes

Créer une nouvelle instance en choisissant le snapshot comme image du disque de démarrage :

Instance depuis snapshot

Déplacer les adresses IP

Depuis la page de l'ancienne instance, détacher l'IP v4 et l'IP v6.

Détacher les IP

Depuis la page de la nouvelle instance, détacher l'IP v4 puis attacher l'IP v4 et l'IP v6 de l'ancienne instance.

Attacher les IP

A ce stade, les services installés sur l'instance doivent répondre à nouveau.

Notice

Après avoir supprimé l'IP v4 attribuée à ma nouvelle instance et lui avoir ajouté l'IP v4 et l'IP v6 de l'ancienne instance, j'ai dû redémarrer la nouvelle instance pour que ces changements soient pris en compte.

Notice

Idée : j'aurais pu détacher les 2 IP de l'ancienne instance de façon à pouvoir les affecter à la nouvelle instance dès sa création. A tester la prochaine fois.

Etendre la partition

Dans l'interface de Scaleway, augmenter la taille du volume de la nouvelle instance :

Augmenter le volume

Se connecter en SSH sur la nouvelle instance pour étendre la partition.

Avant :

cfadmin@yunohost-addapps:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
...
/dev/sda1        37G   33G  2.1G  95% /
...

Augmenter la partition (ici /dev/sda1) :

cfadmin@yunohost-addapps:~$ sudo growpart /dev/sda 1
CHANGED: partition=1 start=262144 old: size=77862823 end=78124967 new: size=155987823 end=156249967

Warning

Attention : il y a un espace entre /dev/sda et 1

Augmenter le filesystem :

cfadmin@yunohost-addapps:~$ sudo resize2fs -p /dev/sda1
resize2fs 1.46.2 (28-Feb-2021)
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
old_desc_blocks = 5, new_desc_blocks = 10
The filesystem on /dev/sda1 is now 19498477 (4k) blocks long.

Après :

cfadmin@yunohost-addapps:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
...
/dev/sda1        74G   33G   38G  47% /
...

On voit bien que la taille du disque est passée à 74G.

Supprimer les éléments devenus inutiles

Pour éviter de payer des coûts inutiles, nous pouvons supprimer :

  • l'ancienne instance avec son disque local
  • le snapshot qui a permis de faire le transfert
  • l'IP v4 créée avec la nouvelle instance qui est devenue inutile