Comment redimensionner la partition LVM racine dans Fedora sans LiveCD ou redémarrage

24

J'ai une machine virtuelle qui a récemment vu son image disque passer de 20 Go à 50 Go et fdisk -lvérifie que la machine virtuelle peut voir cette nouvelle taille. Maintenant, je dois redimensionner ma partition LVM racine pour remplir les 30 Go supplémentaires.

J'ai trouvé plusieurs articles sur le redimensionnement de LVM, mais les quelques-uns qui couvrent le redimensionnement de la partition racine affirment tous que vous devez démarrer à partir d'un LiveCD. Existe-t-il un moyen de le faire sans arrêter le serveur? Le serveur est essentiel, je voudrais donc minimiser les temps d'arrêt.

Modifier: Sortie de fdisk -l:

[root@fedora-host ~]# sudo fdisk -l

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders, total 104857600 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 identifier: 0x00097c90

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    83886079    41430016   8e  Linux LVM

Disk /dev/mapper/VolGroup-lv_root: 36.1 GB, 36104568832 bytes
255 heads, 63 sectors/track, 4389 cylinders, total 70516736 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 identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_root doesn't contain a valid partition table

Disk /dev/mapper/VolGroup-lv_swap: 6308 MB, 6308233216 bytes
255 heads, 63 sectors/track, 766 cylinders, total 12320768 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 identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_swap doesn't contain a valid partition table

Edit: Comment redimensionner la partition physique? fdisk peut voir l'espace libre, mais je ne sais pas comment redimensionner la partition LVM principale pour l'utiliser. J'ai essayé de démarrer dans un LiveCD et d'utiliser la resizecommande parted'd , mais tout ce que cela me donne, c'est l'erreur "Impossible de détecter le système de fichiers". J'ai trouvé ce guide , qui dit que je dois supprimer la partition et en créer une nouvelle avec la taille correcte, mais cela semble très dangereux.

Édition finale: la resizecommande de Parted est étrangement incapable de redimensionner les partitions LVM. Allez comprendre. Au lieu de cela, j'ai simplement supprimé l'ancienne partition et créé une nouvelle avec la nouvelle plage, comme indiqué dans le lien ci-dessus, et qui a correctement redimensionné la partition LVM. J'ai ensuite suivi les conseils ci-dessous pour redimensionner les volumes et les systèmes de fichiers à l' intérieur de la partition LVM.

Cerin
la source
Montrez-nous la sortie de fdisk - l. Vous avez redimensionné la partition et pas seulement le volume, non?
Zoredache
@Zoredache, j'ai ajouté cette sortie à la question.
Cerin

Réponses:

33

Vous pouvez développer un volume logique en ligne. Vous devez le démonter pour le réduire (ce qui nécessite un mode LiveCD / Rescue.)

  1. pvresize /dev/sda2(en supposant que votre partition LVM est sda2. Remplacez si nécessaire.)
  2. lvextend /dev/mapper/root -l+100%FREE (ou, quel que soit le nom de votre volume logique racine.)
  3. resize2fs /dev/mapper/root (en supposant ext2 / 3/4)
Aaron Copley
la source
1
Personnellement lvextend -L [size][unit] /dev/group/volume, je préfère , ne serait-ce que parce que je peux augmenter un volume de 10 gigaoctets en spécifiant-L +10G
Hubert Kario
Oui, mais le PO a demandé; Now I need to resize my root LVM partition to fill the extra 30GB.(Ce qui est d'augmenter le volume logique par l'espace libre disponible.)
Aaron Copley
"La nouvelle taille (1076 extensions) correspond à la taille existante (1076 extensions)"
Cerin
7
Je pensais que cette astuce était intéressante: si vous ajoutez l' -roption à lvextend, elle accrochera fsadmpour redimensionner le FS. Cela rendrait la troisième étape redondante.
Jodie C
3
Notez que cette réponse suppose que la partition a déjà été étendue pour remplir l'espace libre et que seuls les volumes logiques doivent être mis à jour. La pvresize /dev/sda2commande ne fait rien tant que la partition / dev / sda2 n'a pas été redimensionnée avec parted ou fdisk. J'ai dû redimensionner le mien avec fdisk car séparé sur mon système ne montrerait pas ou n'a pas de commande de redimensionnement. Le redimensionnement de Fdisk implique la suppression et la recréation de la partition.
Jason
2

Votre système est-il vraiment passé de 20 à 50 Go? Cela semble vraiment étrange puisque votre appareil sda2 fait ~ 40 Go, lv_root affiche 36 Go et swap affiche 6 Go.

Votre sortie de fdisk -lmontre le total des secteurs de /dev/sdais 104857600. Le dernier secteur utilisé par /dev/sda2est 83886079. Cela me dit que vous n'avez pas ajusté la taille de la partition pour utiliser tout l'espace disponible sur le lecteur. La commande pvresize ne modifie pas la table de partition. Vous devez d'abord modifier la table de partition.

Zoredache
la source
1

Installez gparted. Exécutez en tant que root (utilisez ssh -X ou x2go si distant). Sélectionnez la partition. Il devrait montrer de l'espace libre après la fin (à droite). Si ce n'est pas le cas, vous devez redémarrer votre machine virtuelle pour voir la nouvelle taille du périphérique virtuel. Cela devrait être un temps d'arrêt minimal avec systemd.

Cliquez avec le bouton droit et sélectionnez redimensionner. Faites glisser l'extrémité vers la fin du disque. Assurez-vous de ne pas toucher au début. gparted est capable de déplacer une partition pendant le redimensionnement, mais cela détruira bien sûr un système en cours d'exécution. Mais déplacer la fin est bien. Examinez l'opération en attente que gparted effectuera pour vous assurer que vous étendez et ne déplacez pas la partition. Cliquez sur appliquer. gparted changera la partition sur le disque, puis émettra l'ioctl du noyau pour relire la table de partition, changeant également la taille du périphérique de bloc en direct. Puis, comme il voit qu'il s'agit d'un PV LVM, il exécute pvresize pour vous. Quittez gparted et vgs affiche maintenant votre nouvel espace.

J'ai entendu des rumeurs selon lesquelles se séparer peut faire tout cela sans les frais généraux d'une interface graphique, mais je n'ai jamais pu comprendre le vaudou. Parted doit être l'une des pires interfaces CLI que j'aie jamais essayé d'utiliser.

N'utilisez pas fdisk, vous devez supprimer et réallouer la partition à redimensionner, et par défaut, elle effacera la signature LVM2 lors de l'écriture. Je pense avoir vu une option "avancée" pour désactiver ce comportement destructeur, mais je ne l'ai jamais testé.

Vous pouvez également essayer cfdisk (curses fdisk). Il peut avoir un redimensionnement de partition utilisable. Il est assez facile d'exécuter pvresize manuellement, et une commande indique au noyau de relire la table de partition. Mais je devrais tester pour m'assurer qu'il n'efface pas la signature LVM comme fdisk.

Stuart Gathman
la source
0

Si le volume physique LVM se trouve sur une partition, non, vous ne pouvez pas le redimensionner sans redémarrer.

Vous pouvez modifier la table de partition sur le lecteur, mais Linux refusera de l'utiliser jusqu'à ce que vous redémarriez.

Si vous utilisez XFS, passez resize2fsà xfs_growfs.

Vous pouvez afficher les PV que vous utilisez et les LV dans le groupe de volumes en utilisant pvset lvs.

PV sur disque brut

pvresize /dev/sda
lvextend /dev/<volume-group>/<lv-name> -L +<size>G
resize2fs /dev/<volume-group>/<lv-name>

PV sur une partition

D' abord , vous devez redimensionner la partition, l' utilisation parted, fdiskou un outil similaire pour cela. N'oubliez pas que ces outils ne modifient que la description de l'emplacement des partitions, ils ne déplacent pas les données. En d'autres termes, vous pouvez facilement étendre uniquement la dernière partition du disque. Redémarrez ensuite votre machine et après cela, vous devriez être en mesure d'informer LVM qu'elle dispose d'un espace supplémentaire disponible:

pvresize /dev/sda2
lvextend /dev/<volume-group>/<lv-name> -L +<size>G
resize2fs /dev/<volume-group>/<lv-name>
Hubert Kario
la source
À l'aide d'un Gparted Live CD, sudo pvresize /dev/sda2signale «1 volume (s) physique (s) redimensionné (s)», mais sudo lvextend /dev/mapper/VolGroup-lv_root -L +10Géchoue avec l'erreur «espace libre insuffisant: 320 extensions nécessaires, mais seulement 0 disponible». sudo fdisk -lrapporte que j'ai 54G disponible, alors que sudo pvdisplayseulement 40G sont en cours d'utilisation. Pourquoi lvextend échoue?
Cerin
1
@Cerin, vous avez manqué la première déclaration de Huberts pour un PV sur une partition. Vous devez d'abord redimensionner la partition, utilisez parted, fdisk ou un outil similaire pour cela .
Zoredache
@Zoredache, Ok, eh bien, c'est essentiellement toute ma question. Je ne sais pas comment faire ça. Je viens de démarrer dans un LiveCD Gparted et j'ai essayé d'utiliser la resizecommande de parted pour augmenter la taille de la partition principale, mais cela m'a donné l'erreur "Impossible de détecter le système de fichiers". Comment redimensionnez-vous la partition en utilisant parted ou fdisk?
Cerin
@Cerin: recherchez SF ou posez une autre question
Hubert Kario
0

J'envisagerais de vérifier ssm (system-storage-manager) s'il est disponible sur votre distribution.

Découvrez ceci pour un peu plus d'informations: /unix//a/293173

ssm semble faciliter le redimensionnement des volumes logiques sans avoir à tout faire vous-même.

J'ai pu utiliser pour étendre ma partition domestique avec elle après avoir redémarré mon système d'exploitation et ouvert une session en tant que root. (J'ai dû redémarrer deux fois au total, mais cela a finalement fonctionné et j'ai maintenant un 50G supplémentaire disponible dans ma / home parition.)

Bryan Cole
la source
0

Après avoir combiné 25 howto, j'ai enfin cette solution. Il ne nécessite aucun cd live, il est complètement à la volée.

Étape 1. formatez la partition avec parted (no gui). Dans cet exemple, la taille maximale du disque est passée de 8 Go à 32 Go dans la boîte virtuelle.

    # parted
       ....
       Number   Begin   End     Size     Type     FileSystem       Flags
         1      1049kB  1075MB  1074MB   primary  ext4             boot
         2      1075MB  8590MB  7515MB   primary                   lvm
       ....
    (parted) mkpart primary ext2 8590 100%
       ....
       Number   Begin   End     Size     Type     FileSystem       Flags
         1      1049kB  1075MB  1074MB   primary  ext4             boot
         2      1075MB  8590MB  7515MB   primary                   lvm
         3      8590MB  34,4GB  25,8GB   primary  ext2             lba
       ....
    (parted) set 3 lvm on
    (parted) set 3 lba off
    (parted) print
       ....
         3      8590MB  34,4GB  25,8GB   primary  ext2             lvm
       ....
    (parted) quit

Étape 2. Créez un volume physique basé sur la nouvelle partition

# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created.

Étape 3. Ajoutez le volume physique au groupe de volumes. Dans une installation de serveur fedora 28 ordinaire, le groupe de volumes est appelé fedora.

# vgextend fedora /dev/sda3
  Volume group "fedora" successfully extended

Étape 4. Ajoutez l'espace disponible dans le groupe de volumes au volume logique. Dans une installation de serveur fedora 28 ordinaire, le volume logique est appelé root.

# lvextend -l+100%FREE /dev/fedora/root
  Size of logical volume fedora/root changed from <6,20 GiB (1586 extents) to 30,19 GiB (7729 extents).
  Logical volume fedora/root successfully resized.

Étape 5. Dites au système de fichiers du volume logique d'utiliser l'espace supplémentaire. Dans fedora, le système de fichiers est xfs.

Attention! xfs_growfs utilise le point de montage pour identifier le système de fichiers, pas le nom du système de fichiers que vous trouvez dans la sortie df !!!!!!!

La commande 'xfs_growfs / dev / mapper / fedora-root' vous dira / dev / mapper / fedora-root n'est pas un système de fichiers XFS monté. Si vous utilisez un système de fichiers différent, reportez-vous à https://www.tldp.org/HOWTO/LVM-HOWTO/extendlv.html

# xfs_growfs /
    data blocks changed from 1624064 to 7914496

Étape 6. Profitez

# df
FileSystem               1K-blocks      Used   Available used% Mounted on
....
/dev/mapper/fedora-root   31647744   6492840    25154904  21% /
/dev/sda1                   999320    125576      804932  14% /boot
....
Lieven Vanlerberghe
la source
-1

Essayez testdisk

sudo dnf install testdisk

sudo testdisk

Il suffit de créer un fichier journal Ensuite, il listera les partitions, - sélectionner le média / partition - puis taper - et analyser - recherche rapide - sélectionner et écrire

Salil Kothadia
la source