web-dev-qa-db-fra.com

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

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

J'ai trouvé plusieursarticlesà propos le redimensionnement de LVM, mais les quelques-uns qui couvrent le redimensionnement de la partition racine prétendent 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 commande parted'd resize, 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 commande resize 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 la partition LVM.

24
Cerin

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)
33
Aaron Copley

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

Votre sortie de fdisk -l montre le total des secteurs de /dev/sda est 104857600. Le dernier secteur utilisé par /dev/sda2 est 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.

2
Zoredache

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 pas déplacez 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.

1
Stuart Gathman

Après avoir combiné 25 howto's, 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 s'appelle 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. Indiquez 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
....
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: https://unix.stackexchange.com/a/29317

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.)

0
Bryan Cole

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, basculez resize2fs à xfs_growfs.

Vous pouvez afficher les PV que vous utilisez et les LV dans le groupe de volumes à l'aide de pvs et 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

Vous devez d'abord redimensionner la partition, utilisez parted, fdisk ou un outil similaire pour cela. N'oubliez pas que ces outils modifient niquement 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>
0
Hubert Kario