Comment étendre une partition PV Linux en ligne après la croissance du disque virtuel

14

VMware permet d'étendre la taille d'un disque virtuel en ligne - lorsque la machine virtuelle est en cours d'exécution. Les prochaines étapes attendues pour le système Linux sont:

  1. étendre la partition: supprimez et créez une plus grande avec fdisk
  2. étendre la taille PV avec pvresize
  3. utiliser des extensions libres pour les lvresizeopérations
  4. puis resize2fspour le système de fichiers

Mais je suis bloqué sur la première étape: fdisket sfdiskaffiche toujours l'ancienne taille du disque.

Mon disque est un disque virtuel SCSI connecté grâce au contrôleur logique LSI virtuel.

Comment actualiser la taille du disque virtuel et les informations de la table de partition disponibles dans le noyau Linux sans redémarrer ?

Pour autant que je sache, toutes les étapes sont possibles pour un Windows en cours d'exécution, sans redémarrage et même sans aucune action de l'utilisateur grâce aux outils VMWare. Sous Linux, je m'attends à faire toutes les étapes en ligne aussi et je sais déjà que les étapes 2, 3 et 4 fonctionnent en ligne. Mais le premier - changer la taille de la partition déclarée dans la table de partition semble (encore) nécessiter un redémarrage.

Mise à jour: Mon système est un Debian Lenny avec le noyau 2.6.26 et le disque que j'ai étendu est le disque principal avec un grand PV contenant le LV "racine" pour "/".

Yves Martin
la source

Réponses:

9

Vous pouvez le faire sans redémarrage. pvresize ne redimensionne pas le volume physique tant que la partition n'est pas mise à jour avec l'espace ajouté. Vous devez fdisk la partition et la recréer avec la nouvelle taille complète du disque, après avoir pu réanalyser les lecteurs pour qu'il puisse voir l'espace supplémentaire en premier lieu.

Plus d'informations: http://theducks.org/2009/11/expanding-lvm-partitions-in-vmware-on-the-fly/

GRegg
la source
Je suis d'accord mais quoi que je fasse pour ré-analyser le lecteur SCSI, je n'ai jamais vu la nouvelle taille de disque visible dans fdisk, donc j'ai été bloqué jusqu'au premier redémarrage. Et "partprobe" est une nouvelle commande pour moi. Je dois absolument tester cette procédure ... Merci.
Yves Martin
Pour information partprobeest une commande du partedprojet.
Yves Martin
Si vous ne voyez pas la nouvelle taille de disque, fdiskle problème ne vient pas de LVM. Je dois vous demander comment vous numérisez, car cela me ramène généralement la nouvelle taille de disque. Je ne partitionne pas non plus les disques sur lesquels je vais utiliser LVM si je peux l'aider. Si vous pvcreatele disque entier, la mise à jour de la table de partition est juste une chose de moins que vous devez faire lorsque vous allez le redimensionner.
Bratchley
14

Les autres réponses fournies ne répondent pas à votre question, j'ai identifié la commande correcte pour analyser à nouveau un disque déjà connecté.

Nous devons analyser à nouveau votre disque déjà connecté, identifiez d'abord le disque que vous souhaitez analyser à nouveau.

ls /sys/class/scsi_disk/

Dans mon exemple, je vois un lien symbolique nommé 0:0:0:0, nous analysons donc à nouveau ce disque scsi.

echo '1' > /sys/class/scsi_disk/0\:0\:0\:0/device/rescan

Je viens également d'étendre mon disque VMware et j'ai dû parcourir d'autres réponses pour trouver la bonne commande. Espérons que cela sauvera les futurs chercheurs de vaines tentatives.

JM Becker
la source
Fonctionne parfaitement!
Emil Styrke
Vous pouvez également trouver les disques par leur nom "/ dev /" dans /sys/block/, vous pouvez donc utiliser par exemple /sys/block/sda/device/rescan.
mwfearnley
4

Dans la mesure où le système de fichiers racine /est monté sur le disque qui a été redimensionné, la table de partition et la taille du disque ne sont pas actualisées par une nouvelle analyse SCSI avec Linux 2.6.26.

J'espère vraiment que ce sera mieux bientôt avec les nouvelles versions du noyau.

J'ai donc dû:

  • redémarrez une première fois pour voir la nouvelle taille de disque dans fdisk
  • supprimer l'ancienne partition PV principale dans fdisk
  • créer une entrée de partition avec le même numéro et démarrer le secteur jusqu'à la fin du disque
  • redémarrer une deuxième fois OU exécuter à partprobepartir du partedpackage uniquement s'il /n'y est pas monté
  • Maintenant, je peux courir pvresizepour obtenir un nouvel espace libre lvextendet resize2fsallouer un peu plus d'espace à un système de fichiers

On m'a recommandé de simplement jeter cette vieille table de partition stupide et de l'exécuter pvcreatedirectement sur l'appareil car Grub2 est capable de charger une image du noyau directement à partir d'un système de fichiers sur une partition LVM. Mais une telle configuration n'est pas du tout évidente avec les installateurs de distribution.

Mise à jour: Je viens de vérifier avec Debian GNU / Linux Jessie 8.2 exécutant les noyaux 3.16 et parted3.2, le partprobesuccès réussit maintenant après l'édition de la table de partition cfdisksans redémarrage. pvresizefonctionne immédiatement après.

Si vous souhaitez étendre un PV stocké en tant que partition PC logique, par exemple /dev/sda5sur une partition principale étendue /dev/sda2, n'utilisez pas fdiskmais préférez parted:

parted /dev/sda2 -1
parted /dev/sda5 -1
pvresize /dev/sda5
Yves Martin
la source
Les commandes à la fin ne fonctionnent pas # parted / dev / sda2 -1 -> parted: option invalide - '1'
Oskar Berggren
3

Vous devez analyser à nouveau les disques avant de pouvoir agrandir la partition.

Dans Centos, vous pouvez le faire en

ls /sys/class/scsi_host

puis pour chaque hôte

echo "- - -" > /sys/class/scsi_host/host#/scan

(remplacez # par le numéro)

Il y a aussi une étape supplémentaire à ce qui précède qui étend ext ou tout système de fichiers que vous utilisez une fois que vous avez redimensionné la partition.

Vous devrez toujours démonter cette partition à un moment donné. Ce que nous avons tendance à faire est d'ajouter un 2ème disque vmware et d'utiliser lvm pour s'étendre sur le nouveau disque (et réduire l'ancien s'il s'agit d'un remplacement) car cela permet à l'ensemble du processus de se produire en direct.

JamesRyan
la source
Mon système est Debian et je lance rescan-scsi-bus.sh depuis scsitools. Je pense qu'elle est équivalente à la commande que vous proposez sur / sys / class / scsi_host mais "fdisk" affiche toujours l'ancienne taille sur mon disque ...
Yves Martin
Reconnaît-il un nouveau disque vmware lors de la nouvelle analyse?
JamesRyan
Non. Ce disque existe déjà, il n'est pas nouveau. La taille du disque a été augmentée dans le client vSphere.
Yves Martin
Je m'en rends compte, mais vous devriez essayer d'en ajouter un nouveau pour voir si votre analyse le
détecte
Je suis d'accord avec vous et je sais déjà par la pratique que l'ajout d'un nouveau disque SCSI à une machine Linux peut être effectué en ligne pour toutes les étapes répertoriées. Comme la VM peut tourner pendant 10 ans ... Je crains le nombre total de disques dans un futur proche ...
Yves Martin
2

En tant que réponse mise à jour, sur Ubuntu 16.04.1, j'ai pu faire ce qui suit pour redimensionner un volume de 1024 Go à 1,4 To:

echo '1' > /sys/class/scsi_disk/32\:0\:1\:0/device/rescan
pvresize /dev/sdb
lvextend -l +100%FREE /dev/nvr01-opt/opt
resize2fs /dev/nvr01-opt/opt

Pas fdisknécessaire, et l'espace était immédiatement disponible.

peelman
la source
3
Quel chanceux êtes-vous. La raison en est que vous n'avez pas de table de partition mais PV direct sur /dev/sdb, qui est probablement vos données d'application uniquement sur le disque secondaire, mais pas votre premier disque avec le système (pour mentionner que je configure mes systèmes de la même manière!). Ma question portait sur l'extension de la dernière PV / partition d'un tel "disque système" (cloné à partir d'un modèle), dans la mesure où les distributions Linux ne prennent pas en charge l'installation sur PV direct alors que le noyau Linux et GRUB devraient pouvoir démarrer et s'exécuter sur le disque système sans table de partition du tout.
Yves Martin
Bon point. Pour ceux qui trouvent cela via Google: gardez cela à l'esprit.
peelman
1

Vous ne nous avez pas fourni suffisamment de détails pour vous dire les commandes exactes dont vous aurez besoin, mais vous devrez essentiellement utiliser la lvextendcommande pour étendre le volume logique, puis la e2fsckcommande et ensuite la resize2fscommande pour réellement étendre votre système de fichiers. Chacune de ces commandes nécessitera des paramètres supplémentaires, en particulier des informations sur le périphérique et le système de fichiers, que nous ne pouvons pas fournir, mais vous devrez les connaître, utilisez simplement l'option --help pour chaque commande pour vous dire comment les utiliser spécifiquement, plus vous finirez probablement à l' aide de la pvdisplay, lvdisplayet les mountcommandes pour aider à remplir ces paramètres.

Chopper3
la source
Je connais toutes les commandes des autres étapes. Ma question est: comment faire croître la partition principale utilisée comme PV sans redémarrage?
Yves Martin
Désolé, vous voulez dire pvresize?
Chopper3
Je suis d'accord que ma question n'était pas suffisamment explicite (même avec la partie en gras). pvresize est mentionné à l'étape 2. Je suis bloqué à l'étape 1: augmenter la taille de la partition "PCAT".
Yves Martin
Avez-vous encore augmenté la taille .vmdk via le VSClient?
Chopper3
3
Pour confirmer, /sbin/rescan-scsi-busne modifiez pas la taille du disque existant. Mais le echo "1" > '/sys/class/scsi_disk/0:0:1:0/device/rescan'fait
Yves Martin
0

Personne n'a posté un ensemble complet de commandes, alors c'est parti:

# the following steps are for adding a new HDD
apt install scsitools
rescan-scsi-bus
pvcreate /dev/sdX
vgextend /dev/vgname /dev/sdx
lvextend -l +100%FREE /dev/vgname/root 
resize2fs /dev/vgname/root

#if resizing existing HDD
fdisk /dev/sdX
create new partition
pvcreate /dev/sdXn
vgextend /dev/vgname /dev/sdXn
lvextend -l +100%FREE /dev/vgname/root 
resize2fs /dev/vgname/root
mzhaase
la source
Désolé de déranger mais je trouve que l'ajout de disque, de partition et de PV à chaque croissance de disque est "moche" et n'est pas évolutif. Ma question concernait l'extension d'une partition principale existante sur le disque sans ajouter de disque, de partition ou de PV.
Yves Martin