首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CentOS认为磁盘很忙,不能挂载或fsck

CentOS认为磁盘很忙,不能挂载或fsck
EN

Server Fault用户
提问于 2013-11-19 15:29:24
回答 5查看 57.4K关注 0票数 28

我是一个长期的用户,第一次提问提交者。我花了整整一天的时间搜索这个网站和许多其他网站来寻找解决方案,但我必须求助于寻求帮助来解决我的问题。

历史:我们的HP,CentOS5.9服务器昨天在没有适当的关闭程序的情况下被关闭。从那时起,/home分区就一直处于这样一种状态,即我们无法对它进行伪装、挂载或保存它。umount声明它没有挂载,但是挂载/fsck表示它正在忙或已经挂载。这最初导致服务器没有启动。我们最终从/etc/fstab中删除了磁盘/分区,这样引导就不会失败。

代码语言:javascript
运行
复制
# 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输出:

代码语言:javascript
运行
复制
# 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

挂载输出:

代码语言:javascript
运行
复制
# 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

代码语言:javascript
运行
复制
# 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

代码语言:javascript
运行
复制
# 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/坐骑

代码语言:javascript
运行
复制
# 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

艾索夫

代码语言:javascript
运行
复制
# lsof /dev/cciss/c0d0p1 
#

熔炉

代码语言:javascript
运行
复制
# fuser /dev/cciss/c0d0p1  
#

fdisk -l

代码语言:javascript
运行
复制
# 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,分区,没有任何错误或问题。(如:磁盘本身很好)。

我们还使用“调试器”来为日志inode <8>执行Inode清除。fsck然后没有错误地重新构建日志。同样,我们能够在引导到LiveCD时没有任何问题地挂载/卸载磁盘。

当我们切换回正常的引导分区时,我们回到了相同的位置,因为操作系统认为分区很忙,所以无法挂载或fsck。

我想了解Linux中还有什么可以指示这个磁盘正在使用。还可以使用哪些其他实用程序来查找和清除它呢?

任何帮助都是非常感谢的。

附加信息,按要求:

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

代码语言:javascript
运行
复制
# 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
#

挂载-o重新挂载失败,因为自最近一次引导以来,该分区尚未挂载。(这是一个工作分区,因为服务器安装了,昨天硬重启之后才显示出这个问题)。

代码语言:javascript
运行
复制
# mount -o remount -t ext3 /dev/cciss/c0d0p1 /home
mount: /home not mounted already, or bad option

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

2013/11/19 11:上午12时科技委

dmsetup输出:

代码语言:javascript
运行
复制
# 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

代码语言:javascript
运行
复制
# lsof -n | grep /home
#

最终解决方案:

代码语言:javascript
运行
复制
# 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
EN

回答 5

Server Fault用户

回答已采纳

发布于 2013-11-19 16:44:20

它可能已经被设备映射器使用了。

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

如果没有,也要查找dmesg中的错误。

代码语言:javascript
运行
复制
# 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

票数 16
EN

Server Fault用户

发布于 2014-07-31 14:07:57

在故障排除过程中,在尝试lsof或fuser时,不要只检查相关的分区--直接检查磁盘。这很快就会引导您找到正确的解决方案:

坏:

代码语言:javascript
运行
复制
fuser /dev/cciss/c0d0p1

好:

代码语言:javascript
运行
复制
fuser /dev/cciss/c0d0

坏:

代码语言:javascript
运行
复制
lsof /dev/c0d0p1

好:

代码语言:javascript
运行
复制
lsof /dev/ | grep c0d0
票数 1
EN

Server Fault用户

发布于 2016-11-11 05:53:58

在将现有的SAN克隆到新服务器后,我刚刚遇到了这种情况。我的解决办法是:

  • 进入维护模式
  • mount -o remount,rw /dev/sda1 ( sda1是你有问题的东西)
  • 删除/移动/etc/blkid/blkid.tab

服务器随后启动。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/556014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档