CentOS 認為 Disk is busy, can’t mount or fsck
我是長期使用者,也是第一次送出問題。我花了一整天的時間在這個網站和許多其他網站上尋找解決方案,但我必須求助於請求幫助來解決我的問題。
歷史:我們的 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/mounts
# 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 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
它可能正在被設備映射器使用。
使用 . 檢查您的設備映射表
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
.