CentOS piensa que el disco está ocupado, no se puede montar o fsck

25

Soy un usuario desde hace mucho tiempo y soy el que envía preguntas por primera vez. He pasado un día completo buscando una solución en este y muchos otros sitios, pero debo recurrir a solicitar asistencia para resolver mi situación.

Historia: Nuestro servidor HP Proliant, Centos 5.9 se apagó ayer sin los procedimientos de apagado adecuados. A partir de ese momento, la partición / home ha estado en un estado en el que no podemos fsck, montarla o desmontarla. umount indica que no está montado, pero mount / fsck indica que está ocupado o ya está montado. Originalmente, esto provocó que el servidor no se iniciara. Finalmente, eliminamos el disco / partición de / etc / fstab para que el arranque no fallara.

# mount -t ext3 /dev/cciss/c0d0p1 /home
mount: /dev/cciss/c0d0p1 already mounted or /home busy

# fsck /dev/cciss/c0d0p1 
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
fsck.ext3: Device or resource busy while trying to open /dev/cciss/c0d0p1
Filesystem mounted or opened exclusively by another program?

Como puede ver, el disco no está montado de ninguna manera.

salida df:

# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/cciss/c0d1p3    198381228  24920704 163220696  14% /
/dev/cciss/c0d1p2    267818128    191652 253802544   1% /logs
/dev/cciss/c0d1p1       194442     33575    150828  19% /boot
tmpfs                 49495044         0  49495044   0% /dev/shm

salida de montaje:

# mount
/dev/cciss/c0d1p3 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/cciss/c0d1p2 on /logs type ext3 (rw)
/dev/cciss/c0d1p1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

/ etc / fstab

# cat /etc/fstab
LABEL=/                 /                       ext3    defaults        1 1
LABEL=/logs             /logs                   ext3    defaults        1 2
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
LABEL=SW-cciss/c0d1p5   swap                    swap    defaults        0 0

/ etc / mtab

# cat /etc/mtab 
/dev/cciss/c0d1p3 / ext3 rw 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
/dev/cciss/c0d1p2 /logs ext3 rw 0 0
/dev/cciss/c0d1p1 /boot ext3 rw 0 0
tmpfs /dev/shm tmpfs rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0

/ proc / monturas

# cat /proc/mounts 
rootfs / rootfs rw 0 0
/dev/root / ext3 rw,data=ordered 0 0
/dev /dev tmpfs rw 0 0
/proc /proc proc rw 0 0
/sys /sys sysfs rw 0 0
/proc/bus/usb /proc/bus/usb usbfs rw 0 0
devpts /dev/pts devpts rw 0 0
/dev/cciss/c0d1p2 /logs ext3 rw,data=ordered 0 0
/dev/cciss/c0d1p1 /boot ext3 rw,data=ordered 0 0
tmpfs /dev/shm tmpfs rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0
/etc/auto.misc /misc autofs rw,fd=7,pgrp=9694,timeout=300,minproto=5,maxproto=5,indirect 0 0
-hosts /net autofs rw,fd=13,pgrp=9694,timeout=300,minproto=5,maxproto=5,indirect 0 0

lsof

# lsof /dev/cciss/c0d0p1 
#

fusor

# fuser /dev/cciss/c0d0p1  
#

fdisk -l

# fdisk -l /dev/cciss/c0d0

Disk /dev/cciss/c0d0: 1800.2 GB, 1800280694784 bytes
255 heads, 63 sectors/track, 218871 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

           Device Boot      Start         End      Blocks   Id  System
/dev/cciss/c0d0p1   *           1      218871  1758081276   83  Linux

Según otras recomendaciones en la web, hemos utilizado el Terminal Remoto ILO3 para arrancar desde un LiveCD de Centos. Cuando hicimos esto, pudimos montar / desmontar, fsck, la partición sin ningún error o problema. (es decir: el disco en sí está bien).

También usamos "debugfs" para realizar un borrado de inodo para el Journal Inode <8>. fsck luego reconstruyó el diario sin error. Nuevamente, pudimos montar / desmontar el disco sin ningún problema cuando arrancamos en el LiveCD.

Cuando volvimos a la partición de arranque normal, volvimos al mismo lugar, incapaz de montar o fsck debido a que el sistema operativo cree que la partición está ocupada.

Estoy buscando entender qué más dentro de Linux podría estar indicando que este disco está en uso. ¿Qué otras utilidades se pueden usar para encontrar esto y borrarlo?

Cualquier ayuda es muy apreciada.


Información adicional, según lo solicitado :

lsof y fuser on / home, junto con mostrar / home contenidos y permisos de directorio.

# lsof /home
# fuser /home
# ls -la /home
total 16
drwxr-xr-x  2 root root 4096 Mar 15  2013 .
drwxr-xr-x 27 root root 4096 Nov 19 08:31 ..
# ls -l / | grep home
drwxr-xr-x   2 root root  4096 Mar 15  2013 home
#

El montaje -o remontado falla, ya que esta partición no se ha montado desde el arranque más reciente. (Esta era una partición funcional desde que se instaló el servidor, y solo mostró este problema después del reinicio completo ayer).

# mount -o remount -t ext3 /dev/cciss/c0d0p1 /home
mount: /home not mounted already, or bad option

Podría volver a agregar esta partición a / etc / fstab y reiniciar si es necesario.


2013/11/19 11:12 am CST

salida de dmsetup:

# dmsetup table                
mpath0: 0 3516173232 multipath 1 queue_if_no_path 0 1 1 round-robin 0 1 1 104:0 1000 
mpath0p1: 0 3516162552 linear 253:0 63

# dmsetup info
Name:              mpath0
State:             ACTIVE
Read Ahead:        256
Tables present:    LIVE
Open count:        1
Event number:      1
Major, minor:      253, 0
Number of targets: 1
UUID: mpath-3600508b1001cb6e6453d25c4052abca5

Name:              mpath0p1
State:             ACTIVE
Read Ahead:        256
Tables present:    LIVE
Open count:        0
Event number:      0
Major, minor:      253, 1
Number of targets: 1
UUID: part1-mpath-3600508b1001cb6e6453d25c4052abca5

lsof -n

# lsof -n | grep /home
#

Solución final:

# multipath -ll
mpath0 (3600508b1001cb6e6453d25c4052abca5) dm-0 HP,LOGICAL VOLUME
[size=1.6T][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=1][active]
 \_ #:#:#:# cciss!c0d0 104:0  [active][ready]

# multipath -F

# multipath -ll
#

# mount -t ext3 /dev/cciss/c0d0p1 /home
# cat /proc/mounts | grep home
/dev/cciss/c0d0p1 /home ext3 rw,data=ordered 0 0
TripSixes
fuente
55
Excelente ejemplo de una buena pregunta por primera vez.
TheCleaner
2
¡Buena pregunta! Es una posibilidad muy remota, pero ¿has considerado intentarlo mount -o remount /home? Además, comprobaría si / home está realmente vacío cuando el sistema de archivos no está montado (eso no debería ser un problema, pero ¿quién sabe?) Y buscaría cualquier mensaje aplicable en los registros del sistema, incluidos dmesg.
un CVn
2
Haces un lsof del disco. ¿Intentó hacer un lsof / fuser of / home también, en caso de que se esté ejecutando algo que afecte el punto de montaje?
Jenny D dice Restablecer a Mónica el
1
Por cierto, ¿estás por casualidad exportando ese directorio, por ejemplo, a través de nfs? Si el servidor nfs se inicia antes de montar el directorio, podría bloquear su montaje.
Jenny D dice Restablecer a Mónica el
1
¿Cuál es la salida de lsof -n | grep /home? AFAIK lsof / home busca un proceso con / home abierto, pero no informa el uso de subdirectorios.
Zoredache

Respuestas:

16

Probablemente esté en uso por el mapeador de dispositivos.

Verifique su tabla de mapeador de dispositivos usando dmsetup table. Si está allí, borre la asignación con dmsetup remove <name>.

Si no, busque errores dmesgtambién.


# dmsetup table
mpath0: 0 3516173232 multipath 1 queue_if_no_path 0 1 1 round-robin 0 1 1 104:0 1000 
mpath0p1: 0 3516162552 linear 253:0 63

¡Ah ah! multipath ha reclamado el disco. Puedes ver corriendo multipath -ll.

Ejecutar: multipath -Fpara eliminar todos los mapas no utilizados, no multipath -lldebería generar nada.

O simplemente use en /dev/mapper/mpath0p1lugar de /dev/cciss/c0d0p1.

MikeyB
fuente
No estoy seguro de lo que me dice esta salida. ¿Muestra esto la salida que estabas esperando? [ Mi retorno de carro no parece funcionar en este cuadro de comentarios ... ]# dmsetup table mpath0: 0 3516173232 multipath 1 queue_if_no_path 0 1 1 round-robin 0 1 1 104:0 1000 mpath0p1: 0 3516162552 linear 253:0 63
TripSixes
1

En relación con el proceso de solución de problemas, cuando intente lsof o fusor, no solo verifique la partición relevante, verifique directamente en el disco. Esto rápidamente lo habría dirigido a la solución correcta:


Malo:

fuser /dev/cciss/c0d0p1

Bueno:

fuser /dev/cciss/c0d0

Malo:

lsof /dev/c0d0p1

Bueno:

lsof /dev/ | grep c0d0
zaTricky
fuente
1

Acabo de encontrar esto después de clonar un SAN LUN existente en un nuevo servidor. Mi solución fue:

  • Ingrese al modo de mantenimiento
  • mount -o remount,rw /dev/sda1 (donde sda1 es lo que sea que esté teniendo problemas)
  • Eliminar / mover /etc/blkid/blkid.tab

El servidor se inició después.

theillien
fuente
-2

Hablando de mis propias experiencias. Compruebe también su fstab, para asegurarse de que está intentando montar el dispositivo como su volumen lógico y no el alias que le dio o está usando off / etc / multipath / bindings.

Rata
fuente