97 votes

Relire la table de partition sans redémarrer ?

Parfois, lors du redimensionnement ou de la manipulation des partitions sur un disque, cfdisk dira :

Wrote partition table, but re-read table failed. Reboot to update table.

(Cela se produit également avec d'autres outils de partitionnement, donc je pense que c'est un problème de Linux plutôt qu'un problème de cfdisk). Pourquoi est-ce le cas, et pourquoi cela se produit-il seulement parfois et que puis-je faire pour l'éviter ?

Note : Veuillez supposer qu'aucune des partitions que je suis en train d'éditer n'est ouverte, montée ou utilisée.


Mise à jour :

cfdisk utilise ioctl(fd, BLKRRPART, NULL) pour dire à Linux de relire la table de partition. Deux des autres outils recommandés jusqu'à présent ( hdparm -z DEVICE , sfdisk -R DEVICE ) fait exactement la même chose. Le site partprobe DEVICE command, d'autre part, semble utiliser un nouvel ioctl appelé BLKPG, qui pourrait être meilleur ; je ne sais pas. (Elle se rabat également sur BLKRRPART si BLKPG échoue).

BLKPG semble être une opération "cette partition a changé ; voici la nouvelle taille", et cela ressemblait à ceci partprobe l'a appelé individuellement sur toutes les partitions du périphérique passé, donc cela devrait fonctionner si les partitions individuelles sont inutilisées. Cependant, je n'ai pas eu l'occasion de l'essayer.

1 votes

man sfdisk dit : Since version 2.26 sfdisk no longer provides the -R or --re-read option to force the kernel to reread the partition table. Use blockdev --rereadpt instead.

94voto

knweiss Points 3875

À mon avis, la réponse la plus fiable/la meilleure est

partprobe /dev/sdX

1 votes

Je viens de développer un dev sous Ubuntu Server, ce dev est un raid matériel. Après avoir étendu le raid sous-jacent en utilisant le raidcontroller, j'ai démonté le système de fichiers et essayé "partprobe /dev/sda" - cela n'a pas fonctionné. "fdisk -l" montrait toujours l'ancienne taille. J'ai alors lancé "hdparm -z /dev/sda" et cela a fonctionné. Je pouvais alors monter et redimensionner mon système de fichiers sans redémarrage. Je sais que je n'ajoute rien d'autre que YMMV.

0 votes

Je suis sur centos 6.5 ; noyau 2.6.32 . toutes les commandes suivantes n'ont pas permis au noyau de relire la partition : - partprobe /dev/sda (warnikg : kernel failed to reread)

0 votes

@Max, j'ai aussi remarqué que parfois même partprobe imprime une erreur indiquant qu'elle n'a pas fonctionné. Parfois, un redémarrage est la seule option pour être sûr. La plupart du temps, cela semble fonctionner pour moi.

25voto

Tom Wilkinson Points 775

Relire les informations de la table de partition ne fonctionne pas toujours, mais essayez de

hdparm -z /dev/sda

ou

sfdisk -R /dev/sda

Si cela fonctionne, les valeurs dans /proc/partitions vont changer.

0 votes

Hdparm a fonctionné pour moi.

5 votes

L'option sfdisk -R n'existe pas.

0 votes

Il convient de noter que hdparm ne fonctionnera que si les partitions ne sont pas montées.

20voto

GvS Points 28137

Il y a quelques jours, j'ai été confronté à une situation où aucune des autres réponses (y compris la réponse de l'auteur de la question initiale) n'a été retenue. partprobe /dev/sdX (actuellement la réponse acceptée et la plus votée) a fonctionné. Qu'est-ce que a fait travail, cependant, était le suivant :

blockdev --rereadpt /dev/sdX

(Je ne sais pas pourquoi cela a fonctionné et pas les autres, mais je suis heureux que cela ait fonctionné, car cela m'a évité un redémarrage sur un serveur occupé).

16voto

uus Points 151

Sur Centos7 :

Selon https://access.redhat.com/solutions/199573

Vous devriez essayer :

partx -u <partition>

Ça a marché pour moi.

2 votes

C'est le seul qui ait fonctionné pour moi. Merci beaucoup de partager ! Top of the day à vous, monsieur !

8voto

Ryan Sampson Points 2898

Note : Veuillez supposer qu'aucune des partitions que j'édite actuellement n'est ouverte, montée ou utilisée d'une autre manière.

Compte tenu de cette hypothèse, la table de partition puede être rescannée avec succès, et le problème ne se posera pas. Si vous obtenez cette erreur, c'est parce que la table de partition est en cours d'utilisation, et ne peuvent donc pas être numérisés à nouveau sans créer d'incohérences.

0 votes

Certaines partitions peuvent être utilisées, mais aucune d'entre elles n'est celle que je suis en train de modifier, bien qu'elles puissent se trouver dans la même table de partition.

9 votes

Le noyau n'est pas si intelligent. Si une partition de la table est utilisée, le noyau ne rescanne pas. Se tromper dans l'autre sens pourrait être catastrophique, c'est pourquoi il faut être prudent. Si vous voulez vous amuser avec des partitions à volonté, utilisez LVM.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X