Parfois, lors du redimensionnement ou de la manipulation de 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. Je pense donc qu'il s'agit d'un problème lié à Linux plutôt qu'à un problème de cfdisk.) Pourquoi, pourquoi et pourquoi cela ne se produit-il que de temps en temps et que puis-je faire pour l'éviter?
Remarque: Veuillez supposer qu'aucune des partitions que je suis en train de modifier n'est ouverte, montée ou utilisée.
Mise à jour:
cfdisk demande ioctl(fd, BLKRRPART, NULL)
à Linux de relire la table de partition. Deux des autres outils recommandés jusqu'ici ( hdparm -z
DEVICE
, sfdisk -R
DEVICE
) font exactement la même chose. La partprobe
DEVICE
commande, par contre, semble utiliser un nouvel ioctl appelé BLKPG, qui pourrait être meilleur; Je ne sais pas. (Il se rabat également sur BLKRRPART si BLKPG échoue.)
BLKPG semble être une opération "cette partition a changé; voici la nouvelle taille" et ressemble à l' partprobe
appelée individuellement sur toutes les partitions du périphérique transmis. Elle devrait donc fonctionner si les partitions individuelles sont inutilisées. Cependant, je n'ai pas eu l'occasion de l'essayer.
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.
Réponses:
IMHO la réponse la plus fiable / meilleure est
la source
kpartx
etudevadm trigger
pendant 10 minutes. Je vous remercie!La relecture des informations de la table de partition ne fonctionne pas toujours, mais essayez
ou
Si cela fonctionne, les valeurs dans / proc / partitions changeront.
la source
hdparm
commande ne fonctionnera que si les partitions ne sont pas montées.sfdisk -R
été enlevé quelque part entre util-linux 2.24.2 et 2.26.1man 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.
Sur Centos7:
Selon https://access.redhat.com/solutions/199573
Tu devrais essayer :
Cela a fonctionné pour moi.
la source
Compte tenu de cette hypothèse, la table de partition peut être réanalysé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 peut donc pas être réanalysée sans créer d'incohérences.
la source
Ce n'est pas basé sur la partition que vous éditez.
Supposons que vous n’ayez qu’un seul disque dur (
/dev/sda
) et deux partitions (/dev/sda1
,/dev/sda2
) et que vous n’ayez monté qu’une partition (/dev/sda1
). Si vous supprimez ou modifiez tout ce qui concerne une autre partition qui n'est même pas montée (/dev/sda2
), vous obtiendrez l'erreur suivante: la relecture de la table de partition a échoué et le noyau utilise l'ancienne table.Mais si vous avez deux disques durs (
/dev/sda
,/dev/sdb
) et qu’aucune des partitions de (/dev/sdb
) n’est utilisée. Ensuite, vous pouvez ajouter / supprimer / redimensionner / éditer des partitions/dev/sdb
et elles seront relues sans problème. Mais même si une partition de / dev / sdb a été montée pendant la modification. Ensuite, le noyau continuera d'utiliser l'ancienne table.la source
Il y a quelques jours, moi-même (l'interlocuteur initial) rencontrais une situation où aucune des autres réponses (y compris la réponse
partprobe /dev/sdX
actuellement acceptée et la plus votée) ne fonctionnait. Qu'est - ce qui a bien fonctionné, cependant:(Je ne sais pas pourquoi cela a fonctionné et les autres pas, mais je suis heureux que cela ait fonctionné, car cela m'a évité un redémarrage sur un serveur occupé.)
la source
je suis sur centos 6,5 x64; noyau 2.6.32. et je teste l'astuce fdisk pour redimensionner.
Toutes les commandes suivantes ne permettent pas au noyau de relire la partition:
j'ai toujours besoin d'un redémarrage pour que cela fonctionne
la source
Avec tous les points de montage non montés, exécutez Yocto 2.4:
Échec de recharger la table de partition après la suppression des partitions sur le périphérique. Aussi essayé - et ont échoué étaient:
Tous ont signalé des erreurs similaires "Erreur BLKRRPART: périphérique ou ressource occupé ..." m'invitant à redémarrer. Est-ce que cet échec des méthodes de travail antérieures est probablement dû au fait que udev est maintenant sous le contrôle de systemd? En pensant à cela, j'ai essayé:
Et du coup mon disque est à nouveau disponible, sans redémarrage!
la source
systemd
monde moderne , CECI est la bonne réponse. Veuillez noter que vous devez également redémarrer l’un de ceux-ci (ou les deux)systemd-udev-settle
etsystemd-udev-trigger
. Redémarrersystemd-udevd
comme Camp l’a dit ne me suffisait pas. Mais redémarrer aussi les deux autres a fait l'affaire!Quand une commande comme
blockdev --rereadpt /dev/sdX
échoue aveccela signifie généralement que certaines (anciennes) partitions sont encore utilisées par le noyau.
Causes possibles / solutions:
sdX1
- est toujours montée - vérifiez avecmount
et démontez-la/dev/sdX1
fait partie d'un raid logiciel - vérifiezcat /proc/mdstat
et arrêtez éventuellement les tableaux pertinents, p.ex.mdadm --stop /dev/md126
/dev/sdX1
fait partie d'un volume physique LVM - vérifier avecpvdisplay
/vgdisplay
et éventuellement désactiver avecvgchange
/dev/sdX1
fait partie d' un certain mappage de périphérique - par exemple viacryptsetup
- vérifier/dev/mapper
etlsblk
et éventuellement supprimer l'application (par exemplecryptsetup luksClose
)ps
et éventuellement en tuer unSi un outil - dire
blockdev --rereadpt
ne les généralement similaires (partx -uv
,kpartx
,partprobe
,kpartprobe
) ne parviennent pas d'une manière similaire jusqu'à ce que la cause soit éliminée.la source
Vous pouvez aussi essayer:
(Mais ne fonctionnera pas, voir le commentaire ci-dessous)
la source
kpartx -a <partition>
peut être exécuté deux fois sur une partition nouvellement créée .... au lieu de redémarrer le système.la source
sync; sync; sync
”? Sm Je sens la superstition…N'oubliez pas de vérifier que le service udev est en cours d'exécution. Ceci est particulièrement utile lorsque partprobe, hdparm, blockdev et diverses autres commandes ne semblent pas avoir d’incidence sur les fichiers de périphérique disponibles dans le répertoire / dev /.
la source
Pour moi non plus
partprobe
oublockdev
solution élaborée. Bien que celui-ci fonctionne:la source
Si vous lisez la page de manuel pour 'man oracleasm-scandisks', vous remarquerez le texte ci-dessous. oracleasm utilise / proc / partitions comme source de toutes les analyses qu'il effectue. Vous devez répertorier vos périphériques bruts dans / proc / partitions avant de pouvoir effectuer une analyse. Les paramètres Scanorder et Scanexclude que vous placez dans / etc / sysconfig / oracleasm se rapportent aux noms trouvés dans / proc / partitions (!!!!).
---------- homme oracleasm-scandisks ------ ...
COMMENT LA BALAYAGE SE DÉROULE-T-IL? La numérisation se déroule en quatre étapes de base.
la source
oracleasm-scandisks