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


25

我是长期用户,也是首次提出问题的人。我花了整整一天的时间在此站点和许多其他站点中搜索解决方案,但是我必须求助于解决我的情况。

历史:昨天没有正确的关闭程序,我们的HP Proliant Centos 5.9服务器已关闭电源。从那时起,/ home分区一直处于无法fsck,挂载或卸载的状态。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

在网上的其他建议中,我们使用了ILO3远程终端来启动Centos LiveCD。完成此操作后,我们可以挂载/卸载fsck分区,而没有任何错误或问题。(即:磁盘本身很好)。

我们还使用“ debugfs”对Journal Inode <8>执行了inode清除。fsck然后重新构建日志而没有错误。同样,当引导到LiveCD时,我们能够安装/卸载磁盘而没有任何问题。

当我们切换回普通引导分区时,我们又回到了同一位置,由于操作系统认为分区忙,因此无法挂载或fsck。

我想了解Linux内还有哪些其他迹象表明该磁盘正在使用中。还有哪些其他实用程序可以找到并清除它?

任何帮助是极大的赞赏。


根据要求提供其他信息

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

最终解决方案:

# 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

5
一个很好的第一次问题的很好的例子。
TheCleaner 2013年

2
好问题!这是一个长的路,但是您考虑过尝试mount -o remount /home吗?另外,我将检查以确保未挂载文件系统时/ home实际上为空(这应该不是问题,但是谁知道?),并在系统日志中查找任何适用的消息,包括dmesg
CVn 2013年

2
您对磁盘执行lsof。您是否也尝试过对/ home的lsof / fuser进行处理,以防正在运行的任何事情影响安装点?
珍妮D说恢复莫妮卡

1
顺便说一句,您是否有机会例如通过nfs导出该目录?如果nfs-server在挂载目录之前启动,则可能会阻止您挂载该目录。
珍妮D说恢复莫妮卡

1
输出是lsof -n | grep /home什么?AFAIK lsof / home查找打开/ home的进程,但不报告子目录的使用情况。
Zoredache

Answers:


16

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

使用检查您的设备映射器表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

啊啊!多路径已占用磁盘。您可以通过运行查看multipath -ll

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

或者,只需使用/dev/mapper/mpath0p1代替/dev/cciss/c0d0p1


我不确定此输出告诉我什么。这是否显示您期望的输出?[ 我的回车在此注释框中似乎不起作用。 ]# 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 2013年

1

关于故障排除过程,在尝试使用lsof或fuser时,不仅要检查相关的分区,还要直接检查磁盘。这很快会指导您找到正确的解决方案:


坏:

fuser /dev/cciss/c0d0p1

好:

fuser /dev/cciss/c0d0

坏:

lsof /dev/c0d0p1

好:

lsof /dev/ | grep c0d0

1

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

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

服务器随后启动。


-2

从我自己的经历讲。还要检查您的fstab,以确保您尝试将设备作为逻辑卷而不是您给定的别名或使用/ etc / multipath / bindings进行装载。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.