Linux fsck.ext3说“设备或资源繁忙”,虽然我没有安装磁盘

编辑这个老问题也许是不值得一读的,因为它的结构很简单。 我在整个驱动器上使用了Checkdisk,而不是在该驱动器的分区上,就这些了。 matnagel /编辑

我在vmware 1.0.9上运行一个带有8GB虚拟磁盘的Ubuntu 8.04服务器实例。

对于磁盘维护,我制作了虚拟磁盘的副本(通过在主机上停止的vm上制作sda的2个vmdk文件的副本)并将其添加到原始vm中。 现在这个虚拟机有它的原始虚拟磁盘SDA加1:1副本(SDL)。 有2个额外的磁盘sdb和sdc,我忽略。)

我希望在我启动虚拟机时不要挂载sdb。 所以我试着从运行的vm上在sdd上做一个ext2 fsck,但是它报告fsck报告sdb已经挂载了。

$ 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? 

“mount”命令不会告诉我sdd是挂载的:

 $ 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) 

当我忽略警告并继续fsck时,报告了很多错误。

我如何得到这个控制权? 有没有更好的方法来确定是否安装了sdd? 或者,它是如何“忙碌?如何卸载它呢?如何防止ubuntu自动挂载。还是有什么我失踪?也从/ var / log / syslog我看不到它挂载,这是最后一部分的启动顺序:

 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. 

是的,你是对的,因为你在整个驱动器而不是分区上运行fsck。 要检查文件系统是否挂载,你可以检查/ etc / mtab,并且grep lsof的输出以确保没有进程打开你的分区。

我刚刚意识到我input了

$ sudo fsck.ext3 / dev / sdd

它告诉检查整个磁盘而不是分区:它应该是

$ sudo fsck.ext3 / dev / sdd1

我认为这个问题已经过时了。 我只是检查…

为了将来的参考,请务必检查/proc/mounts ,因为mount命令仅显示/etc/mtab ,这可能会与实际情况不同步。

检查/ etc / fstab,确保你没有使用/ dev / sdd两次。

如果是这样,当提示inputroot密码进入救援shell时,remount / as rw:

mount -o remount -o rw /

为/ fs创build临时安装目录,或者/ etc / fstab所在的位置(例如/ tmp / root)

mkdir / tmp / root

挂载你的根在那里

mount / dev / sd? 的/ tmp /根

编辑你的/ etc / fstab

vi / tmp / root / etc / fstab

解决你的问题,写下来,重新启动….