Comment étendre LVM PV au début du disque?

J'ai un server avec un disque de 2 To, que quelqu'un a partiellement partitionné comme ceci:

  • Partition primaire standard de 300 Go pour les files du operating system (CentOS 7).
  • 1,7 To LVM avec de très gros volumes logiques – pour d'autres besoins.

Étant donné que la taille réelle des files du operating system s'est avérée à environ 400 Go, plus tard, il a été déplacé vers son propre volume logique sur LVM, de sorte que cette partition de 300 Go au début du disque devient inutilisée.

Donc, j'ai supprimé cette partition, et je veux maintenant déplacer la position de départ de PV au début du disque, de sorte qu'il utilisera de l'espace disque entier. Mais je ne peux pas find d'outils pour le faire – pvextend ne peut étendre la PV qu'à la fin du disque, et non au début.

Oui, je sais que je peux simplement append cette ancienne partition à VG comme une autre PV, mais avoir plusieurs PV sur un seul disque semblent quelque chose d'assez étrange.

Je sais aussi que je peux copyr des partitions sur un périphérique externe ou un stockage en nuage, puis recréer le partitionnement de disque physique à partir de rien. Mais je ne le veux pas en raison du time d'arrêt du server.

Alors, est-il possible d'étendre rapidement le PV au début du disque?

Si votre PV existant a <300 Go de données

Si votre PV existante a less de 300 Go de données, vous pouvez simplement déplacer ces données vers l'avant du disque, puis utiliser pvresize . D'abord, créez une nouvelle pv:

 pvcreate /dev/sda1 

Réinitialiser datatables de la pv existante sur la nouvelle pv:

 pvmove /dev/sda2 /dev/sda1 

Supprimez l'ancien pv:

 vgreduce myvg /dev/sda2 

Maintenant, utilisez parted ou fdisk ou quoi que ce soit pour resize /dev/sda1 pour couvrir tout le disque, puis utilisez pvresize pour étendre le pv pour couvrir la partition.

Utilisation d'un périphérique externe sans time d'arrêt

Vous pouvez utiliser pvmove pour déplacer vos données vers un périphérique différent sans pvmove d'arrêt du server. Vous créeriez un nouveau pv:

 pvcreate /dev/sdb 

Ajoutez-le à votre vg:

 vgextend myvg /dev/sdb 

Déplacez datatables de votre pv existant vers la nouvelle pv:

 pvmove /dev/sda2 /dev/sdb 

Supprimez votre pv existante du volume:

 pvremove /dev/myvg /dev/sda2 

Maintenant, repartition / dev / sda, créez un nouveau pv et inversez le process ci-dessus.