A veces, cuando se cambia el tamaño o de alguna otra manera muck con particiones en un disco, cfdisk dirá:
Wrote partition table, but re-read table failed. Reboot to update table.
(Esto también sucede con otras herramientas de particionamiento, por lo que creo que este es un problema de Linux en lugar de un problema de cfdisk). ¿Por qué es esto y por qué solo ocurre a veces y qué puedo hacer para evitarlo?
Nota: Suponga que ninguna de las particiones que estoy editando están abiertas, montadas o en uso.
Actualizar:
cfdisk usa ioctl(fd, BLKRRPART, NULL)
para decirle a Linux que vuelva a leer la tabla de particiones. Dos de las otras herramientas recomendadas hasta ahora ( hdparm -z
DEVICE
, sfdisk -R
DEVICE
) hacen exactamente lo mismo. El partprobe
DEVICE
comando, por otro lado, parece usar un nuevo ioctl llamado BLKPG, que podría ser mejor; No lo sé. (También recurre a BLKRRPART si BLKPG falla).
BLKPG parece ser una operación de "esta partición ha cambiado; aquí está el nuevo tamaño", y parecía partprobe
llamada individualmente en todas las particiones en el dispositivo pasado, por lo que debería funcionar si las particiones individuales no se utilizan. Sin embargo, no he tenido la oportunidad de probarlo.
man sfdisk
dice: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.
Respuestas:
En mi humilde opinión la respuesta más confiable / mejor es
fuente
kpartx
yudevadm trigger
durante 10 minutos. ¡Gracias!Volver a leer la información de la tabla de particiones no siempre funciona, pero intente
o
Si funciona, los valores en / proc / partitions cambiarán.
fuente
hdparm
comando solo funcionará si las particiones no están montadas.sfdisk -R
se eliminó en algún lugar entre util-linux 2.24.2 y 2.26.1man sfdisk
dice: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.
En Centos7:
De acuerdo con https://access.redhat.com/solutions/199573
Deberías intentarlo :
A mi me funciono.
fuente
Dado ese supuesto, la tabla de particiones se puede volver a analizar con éxito, y el problema no surgirá. Si obtiene ese error, es porque la tabla de particiones está actualmente en uso y, por lo tanto, no se puede volver a escanear sin crear inconsistencias.
fuente
No se basa en la partición que está editando.
Supongamos que solo tiene un disco duro (
/dev/sda
) y dos particiones (/dev/sda1
,/dev/sda2
) y ha montado solo una partición (/dev/sda1
). Si elimina o cambia algo sobre otra partición que ni siquiera está montada (/dev/sda2
), recibirá el error de que la relectura de la tabla de particiones falló y el núcleo usará la tabla anterior.Pero si tiene dos discos duros (
/dev/sda
,/dev/sdb
) y ninguna de las particiones de (/dev/sdb
) está en uso. Luego puede agregar / eliminar / cambiar el tamaño / editar particiones/dev/sdb
y se volverán a leer sin ningún problema. Pero incluso si se montó una partición de / dev / sdb durante el cambio. Entonces el núcleo seguirá usando la tabla anterior.fuente
Yo (el interrogador original) tuve una situación hace unos días cuando ninguna de las otras respuestas (incluida
partprobe /dev/sdX
, actualmente, la respuesta aceptada y mejor votada) funcionó. Lo que funcionó, sin embargo, fue esto:(No sé por qué funcionó esto y los otros no, pero estoy feliz de que funcionó, ya que me ahorró un reinicio en un servidor ocupado).
fuente
estoy en centos 6.5 x64; kernel 2.6.32. y estoy probando el truco de fdisk para cambiar el tamaño.
Todos los siguientes comandos no hicieron la partición releída del núcleo:
Todavía necesito reiniciar para que funcione
fuente
Con todos los puntos de montaje desmontados, ejecutando Yocto 2.4:
Todavía no se pudo volver a cargar la tabla de particiones después de que las particiones se hayan eliminado en el dispositivo. También probé, y fallé:
Todos informaron errores similares de "BLKRRPART falló: dispositivo o recurso ocupado ..." que me indican que reinicie. ¿Es posible que esta falla de los métodos que funcionaban anteriormente se deba al hecho de que udev está ahora bajo control de systemd? Pensando en esas líneas intenté:
Y de repente mi disco vuelve a estar disponible, ¡ sin reiniciar!
fuente
systemd
mundo moderno , ESTA es la respuesta correcta. Tenga en cuenta que también debe reiniciar uno de esos (o ambos)systemd-udev-settle
ysystemd-udev-trigger
. Reiniciar talsystemd-udevd
como dijo Camp no fue suficiente para mí. ¡Pero reiniciar también los otros dos hizo el truco!Cuando un comando como
blockdev --rereadpt /dev/sdX
falla conesto generalmente significa que alguna partición (antigua) de hecho todavía es utilizada de alguna manera por el núcleo.
Posibles causas / soluciones:
sdX1
- todavía está montada - verifiquemount
y desmonte/dev/sdX1
es parte de una redada de software: verifiquecat /proc/mdstat
y posiblemente detenga las matrices relevantes, por ejemplomdadm --stop /dev/md126
/dev/sdX1
es parte de un volumen físico LVM - verifique conpvdisplay
/vgdisplay
y posiblemente desactive convgchange
/dev/sdX1
es parte de alguna asignación de dispositivos - por ejemplo, a través decryptsetup
- comprobar/dev/mapper
ylsblk
y quitar la asignación posiblemente (por ejemplocryptsetup luksClose
)ps
y posiblemente elimine unoSi una de las herramientas - decir
blockdev --rereadpt
no queridos por lo general similares como (partx -uv
,kpartx
,partprobe
,kpartprobe
) fallará de manera similar hasta que se elimina la causa raíz.fuente
También puedes probar:
(Pero no funcionará, mira el comentario a continuación)
fuente
kpartx -a <partition>
se puede ejecutar dos veces en una partición recién creada ... en lugar de reiniciar el sistema.fuente
sync; sync; sync
"? ☺ Huelo superstición ...Recuerde verificar que el servicio udev se esté ejecutando. Esto es especialmente útil cuando partprobe, hdparm, blockdev y varios otros comandos no parecen hacer ninguna diferencia sobre qué archivos de dispositivo están disponibles en el directorio / dev /.
fuente
Para mí no
partprobe
oblockdev
solución trabajado. Aunque, este funciona:fuente
Si lee la página de manual de 'man oracleasm-scandisks', observará el texto a continuación. oracleasm está usando / proc / partitions como la fuente de todos los escaneos que realiza. Debe obtener sus dispositivos sin formato en / proc / particiones antes de poder hacer un scandisk. Los parámetros Scanorder y Scanexclude que coloca en / etc / sysconfig / oracleasm se relacionan con los nombres encontrados en / proc / partitions (!!!!).
---------- hombre-oracleasm-scandisks ------ ...
CÓMO SUCEDE EL ESCANEO El escaneo continúa en cuatro etapas básicas.
fuente
oracleasm-scandisks