Linux fsck.ext3 dice "Dispositivo o recurso ocupado" aunque no monté el disco

Linux fsck.ext3 dice "Dispositivo o recurso ocupado" aunque no monté el disco

EditarQuizás no valga la pena leer esta vieja pregunta, porque la solución es simple. Utilicé checkdisk en todo el disco en lugar de en una partición de ese disco, eso es todo. matnagel/Editar

Estoy ejecutando una instancia de servidor Ubuntu 8.04 con un disco virtual de 8 GB en vmware 1.0.9.

Para el mantenimiento del disco, hice una copia del disco virtual (haciendo una copia de los 2 archivos vmdk de sda ​​en la máquina virtual detenida en el host) y lo agregué a la máquina virtual original. Ahora esta máquina virtual tiene su disco virtual sda original más una copia 1:1 (sdd). Hay 2 discos adicionales sdb y sdc que ignoro).

Esperaría que sdb no se monte cuando inicie vm. Así que intento hacer un fsck ext2 en sdd desde la máquina virtual en ejecución, pero informa que fsck informó que sdb estaba montado.

$ sudo fsck.ext3 -b 8193 /dev/sdd
e2fsck 1.40.8 (13-Mar-2008)
fsck.ext3: Device or resource busy while trying to open /dev/sdd
Filesystem mounted or opened exclusively by another program?

El comando "montar" no me dice que sdd está montado:

$ sudo mount
/dev/sda1 on / type ext3 (rw,relatime,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
/sys on /sys type sysfs (rw,noexec,nosuid,nodev)
varrun on /var/run type tmpfs (rw,noexec,nosuid,nodev,mode=0755)
varlock on /var/lock type tmpfs (rw,noexec,nosuid,nodev,mode=1777)
udev on /dev type tmpfs (rw,mode=0755)
devshm on /dev/shm type tmpfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sdc1 on /mnt/r1 type ext3 (rw,relatime,errors=remount-ro)
/dev/sdb1 on /mnt/k1 type ext3 (rw,relatime,errors=remount-ro)
securityfs on /sys/kernel/security type securityfs (rw)

Cuando ignoro la advertencia y continúo con fsck, informo muchos errores.

¿Cómo puedo controlar esto? ¿Existe una mejor manera de averiguar si el SDD está montado? ¿O cómo está "ocupado? ¿Cómo desmontarlo entonces? Cómo evitar que Ubuntu se monte automáticamente. ¿O hay algo más que me falta? Además, desde /var/log/syslog no puedo ver que esté montado, esta es la última parte de la secuencia de inicio:

kernel: [   14.229494] ACPI: Power Button (FF) [PWRF]
kernel: [   14.230326] ACPI: AC Adapter [ACAD] (on-line)
kernel: [   14.460136] input: PC Speaker as /devices/platform/pcspkr/input/input3
kernel: [   14.639366] udev: renamed network interface eth0 to eth1
kernel: [   14.670187] eth1: link up
kernel: [   16.329607] input: ImPS/2 Generic Wheel Mouse as /devices/platform/i8042/serio1/
kernel: [   16.367540] parport_pc 00:08: reported by Plug and Play ACPI
kernel: [   16.367670] parport0: PC-style at 0x378, irq 7 [PCSPP,TRISTATE]
kernel: [   19.425637] NET: Registered protocol family 10
kernel: [   19.437550] lo: Disabled Privacy Extensions
kernel: [   24.328857] loop: module loaded
kernel: [   24.449293] lp0: using parport0 (interrupt-driven).
kernel: [   26.075499] EXT3 FS on sda1, internal journal
kernel: [   28.380299] kjournald starting.  Commit interval 5 seconds
kernel: [   28.381706] EXT3 FS on sdc1, internal journal
kernel: [   28.381747] EXT3-fs: mounted filesystem with ordered data mode.
kernel: [   28.444867] kjournald starting.  Commit interval 5 seconds
kernel: [   28.445436] EXT3 FS on sdb1, internal journal
kernel: [   28.445444] EXT3-fs: mounted filesystem with ordered data mode.
kernel: [   31.309766] eth1: no IPv6 routers present
kernel: [   35.054268] ip_tables: (C) 2000-2006 Netfilter Core Team
mysqld_safe[4367]: started
mysqld[4370]: 100124 14:40:21  InnoDB: Started; log sequence number 0 10130914
mysqld[4370]: 100124 14:40:21 [Note] /usr/sbin/mysqld: ready for connections.
mysqld[4370]: Version: '5.0.51a-3ubuntu5.4'  socket: '/var/run/mysqld/mysqld.sock'  port: 3
/etc/mysql/debian-start[4417]: Upgrading MySQL tables if necessary.
/etc/mysql/debian-start[4422]: Looking for 'mysql' in: /usr/bin/mysql
/etc/mysql/debian-start[4422]: Looking for 'mysqlcheck' in: /usr/bin/mysqlcheck
/etc/mysql/debian-start[4422]: This installation of MySQL is already upgraded to 5.0.51a, u
/etc/mysql/debian-start[4436]: Checking for insecure root accounts.
/etc/mysql/debian-start[4444]: Checking for crashed MySQL tables.

Respuesta1

Sí, tienes razón en que estás ejecutando fsck en todo el disco en lugar de en la partición. Para verificar si el sistema de archivos está montado, puede verificar /etc/mtab y también grep la salida de lsof para asegurarse de que ningún proceso tenga su partición abierta.

Respuesta2

Me acabo de dar cuenta de que escribí

$ sudo fsck.ext3 /dev/sdd

que indica que se debe verificar todo el disco y no la partición: debería ser

$ sudo fsck.ext3 /dev/sdd1

Creo que esto hace que la pregunta quede obsoleta. solo estoy comprobando...

Respuesta3

Para referencia futura, marque siempre /proc/mounts, ya que el mountcomando solo muestra lo que hay en /etc/mtab, lo que potencialmente puede no estar sincronizado con la realidad.

Respuesta4

Verifique /etc/fstab, asegúrese de no estar usando /dev/sdd dos veces.

Si es así, cuando se le solicite la contraseña de root para ingresar al shell de rescate, vuelva a montar / como rw:

montar -o remontar -o rw /

cree un directorio de montaje temporal para /fs, o dondequiera que viva su /etc/fstab (/tmp/root, por ejemplo)

mkdir /tmp/raíz

monta tu root fs allí

montar /dev/sd??? /tmp/raíz

edita tu /etc/fstab

vi /tmp/root/etc/fstab

soluciona tu problema, escríbelo, reinicia....

información relacionada