CentOS คิดว่าดิสก์ไม่ว่างไม่สามารถเมานต์หรือ fsck ได้


25

ฉันเป็นผู้ใช้ที่ยาวนานและเป็นผู้ส่งคำถามครั้งแรก ฉันใช้เวลาทั้งวันในการค้นหาและเว็บไซต์อื่น ๆ เพื่อหาวิธีแก้ไข แต่ฉันต้องหันไปขอความช่วยเหลือเพื่อแก้ไขสถานการณ์ของฉัน

ประวัติความเป็นมา: เซิร์ฟเวอร์ HP Proliant, Centos 5.9 ของเราปิดการทำงานเมื่อวานนี้โดยไม่มีขั้นตอนการปิดระบบที่เหมาะสม จากจุดนั้นไปข้างหน้าพาร์ติชั่น / home อยู่ในสถานะที่เราไม่สามารถ fsck, ติดตั้งหรือขยายได้ umount ระบุว่ายังไม่ได้เมาต์ แต่เมานต์ / 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 เมื่อเราทำสิ่งนี้เราสามารถเมานต์ / unmount fsck พาร์ติชันโดยไม่มีข้อผิดพลาดหรือปัญหาใด ๆ (เช่น: ดิสก์นั้นใช้ได้)

นอกจากนี้เรายังใช้ "debugfs" เพื่อทำการ inode clear สำหรับ Journal Inode <8> fsck สร้างวารสารใหม่โดยไม่มีข้อผิดพลาด อีกครั้งเราสามารถติดตั้ง / ถอนการติดตั้งดิสก์โดยไม่มีปัญหาใด ๆ เมื่อบูตเข้าสู่ LiveCD

เมื่อเราเปลี่ยนกลับไปเป็นพาร์ติชันสำหรับบูตปกติเรากลับไปที่เดิมไม่สามารถเมานต์หรือ fsck เนื่องจากระบบปฏิบัติการเชื่อว่าพาร์ติชั่นนั้นไม่ว่าง

ฉันต้องการทำความเข้าใจว่ามีอะไรอีกใน Linux ที่สามารถระบุได้ว่าดิสก์นี้ใช้งานอยู่ มีสาธารณูปโภคอื่นใดบ้างที่สามารถใช้เพื่อค้นหาสิ่งนี้และล้างมัน

ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก


ข้อมูลเพิ่มเติมตามที่ร้องขอ :

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

5
ตัวอย่างที่ดีของคำถามครั้งแรกที่ดี
TheCleaner

2
คำถามที่ดี! มันเป็นช็อตที่ยาวมาก ๆแต่คุณลองมาแล้วmount -o remount /homeหรือ นอกจากนี้ผมจะตรวจสอบเพื่อให้แน่ใจว่า / บ้านเป็นที่ว่างเปล่าจริงเมื่อระบบไฟล์ไม่ได้ติดตั้ง (ที่ควรจะไม่เป็นปัญหา แต่ใครจะรู้?) และมองหาข้อความใด ๆ dmesgที่เกี่ยวข้องในบันทึกของระบบรวมทั้ง
CVn

2
คุณทำดิสก์ lsof คุณลองทำ lsof / fuser ของ / home ด้วยหรือไม่ในกรณีที่มีสิ่งใดที่ทำงานซึ่งส่งผลต่อจุดเมานท์
Jenny D พูดว่า Reinstate Monica

1
ยังไงก็ตามคุณมีโอกาสส่งออกไดเร็กตอรี่นั้นเช่นผ่าน nfs ไหม? หากเริ่มต้นเซิร์ฟเวอร์ nfs ก่อนที่จะติดตั้งไดเรกทอรีมันสามารถบล็อกคุณติดตั้ง
Jenny D พูดว่า Reinstate Monica

1
อะไรคือผลลัพธ์ของlsof -n | grep /home? AFAIK lsof / home ค้นหากระบวนการที่มี / home open แต่ไม่รายงานการใช้ไดเรกทอรีย่อย
Zoredache

คำตอบ:


16

อาจมีการใช้งานโดยอุปกรณ์ทำแผนที่

ตรวจสอบตารางอุปกรณ์ mapper 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

ahah! multipath ได้อ้างสิทธิ์ในดิสก์ 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

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.