CentOS认为磁盘繁忙,无法挂载或fsck

我是一个长期的用户,第一次提问者。 我已经花了整整一天的时间在这个网站和其他许多网站上寻找解决scheme,但是我必须求助于解决我的问题。

历史:我们的HP Proliant,Centos 5.9服务器昨天没有正确的关机程序。 从这一点来看,/ home分区一直处于一种我们无法安装,挂载或卸载它的状态。 umount表示没有挂载,mount / fsck表明它已经挂载或已经挂载。 这最初导致服务器无法启动。 我们最终从/ etc / fstab中删除了磁盘/分区,以便启动不会失败。

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

如您所见,磁盘没有以任何方式安装。

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 

安装输出:

 # 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 /坐骑

 # 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 # 

定影

 # 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 

根据网上的其他build议,我们使用ILO3远程terminal从CentOS LiveCD启动。 当我们这样做时,我们能够挂载/卸载fsck,没有任何错误或问题的分区。 (即:磁盘本身是好的)。

我们还使用“debugfs”为Journal Inode <8>执行一个inode清除。 然后fsck重新build立日志没有错误。 再次,我们能够挂载/卸载磁盘没有任何问题,当启动进入LiveCD。

当我们切换回正常的启动分区时,我们又回到了原来的位置,由于操作系统认为分区繁忙,无法mount或fsck。

我期待着了解Linux内部还有什么可以指出这个磁盘正在使用中。 还有什么其他的工具可以用来find并清除它?

任何帮助是极大的赞赏。


其他信息,请求

/ home上的lsof和fuser,以及显示/ home内容和目录权限。

 # 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 # 

mount -o remount失败,因为这个分区自从最近的启动以来还没有被挂载。 (这是自服务器安装以来的一个工作分区,昨天硬重启后才显示这个问题)。

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

我可以重新将这个分区添加到/ etc / fstab,并在需要时重启。


2013/11/19 11:12 CST

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 # 

最终解决scheme

 # 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 

它可能正在使用设备映射器。

使用dmsetup table检查您的设备映射dmsetup table 。 如果它在那里,用dmsetup remove <name>清除映射。

如果不是,请在dmesg查找错误。


 # 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 

啊啊! 多path已经声明了这个磁盘。 您可以通过运行multipath -ll来查看。

运行: multipath -F刷新所有未使用的映射,然后multipath -ll应该不输出任何内容。

或者,使用/dev/mapper/mpath0p1而不是/dev/cciss/c0d0p1

有关故障排除过程,在尝试使用lsof或fuser时,不要只检查相关分区 – 直接检查磁盘。 这很快会引导你到正确的解决scheme:


坏:

 fuser /dev/cciss/c0d0p1 

好:

 fuser /dev/cciss/c0d0 

坏:

 lsof /dev/c0d0p1 

好:

 lsof /dev/ | grep c0d0 

在将现有SAN LUN克隆到新服务器后,我刚刚遇到此问题。 我的解决scheme是:

  • 进入维修模式
  • mount -o remount,rw /dev/sda1 (其中sda1是你遇到的问题)
  • 删除/移动/etc/blkid/blkid.tab

服务器启动后。

从我自己的经验说起。 检查你的fstab,以确保你试图挂载设备作为它的逻辑卷,而不是你给的别名或使用/ etc / multipath / bindings。