วิธีการล้างรายการ inode เด็กกำพร้าที่ไม่ได้ประมวลผล?


17

ฉันพยายามติดตั้งระบบไฟล์ที่ติดตั้งแบบอ่านอย่างเดียวซึ่งอ่านได้เขียนได้ :

mount -o remount,rw /mountpoint

น่าเสียดายที่มันไม่ทำงาน:

mount: /mountpoint not mounted already, or bad option

dmesg รายงาน:

[2570543.520449] EXT4-fs (dm-0): Couldn't remount RDWR because of unprocessed orphan inode list.  Please umount/remount instead

A umountใช้งานไม่ได้เช่นกัน:

umount /mountpoint
umount: /mountpoint: device is busy.
    (In some cases useful info about processes that use
     the device is found by lsof(8) or fuser(1))

แต่น่าเสียดายที่ค่าlsofของfuserไม่แสดงกระบวนการใด ๆ ในการเข้าถึงบางสิ่งบางอย่างที่อยู่ภายใต้จุดติด

ดังนั้น - ฉันจะล้างรายการเด็กกำพร้าที่ยังไม่ได้ประมวลผลนี้เพื่อให้สามารถติดตั้งระบบไฟล์ได้อีกครั้งโดยไม่ต้องบูตคอมพิวเตอร์ใหม่


1
คุณเคยลองแล้วfuser -km /mountpointหรือยัง? ระวังแม้ว่าแฟล็ก -k จะฆ่ากระบวนการทั้งหมดที่เข้าถึงไดเรกทอรีนั้น
Richard Keller

คุณสามารถให้ข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับสิ่งที่ dm-0 ประกอบด้วยได้หรือไม่?
thinice

ฉันรู้สึกว่าฉันรู้ว่าเกิดอะไรขึ้น แต่คุณสามารถบอกฉันได้ไหมว่าเดิมคือระบบไฟล์ rw ซึ่งประกอบใหม่ (เนื่องจากข้อผิดพลาด ata หรืออะไรก็ตาม) ro และตอนนี้คุณกำลังพยายาม rw อีกครั้งหรือไม่
แมทธิว Ife

@Mlfe: ระบบไฟล์เคยถูกเล่าให้ฟังอีกครั้งroตามวัตถุประสงค์ เป็นระบบไฟล์ของ LVM ที่เก็บสแน็ปช็อตสำรองข้อมูลรายวันซึ่งจะถูกตั้งค่าเป็นrwระหว่างการสำรองข้อมูลและroหลังจากเสร็จสิ้นการสำรองข้อมูล
bmk

คำตอบ:


6

คุณล้างรายการ inode ของเด็กกำพร้าที่ไม่ได้ประมวลผลโดยการ unmount และ remounting ระบบไฟล์

การสนทนาเพิ่มเติมจากรายการส่งเมล linux-ext4 มีข้อมูลเพิ่มเติมเกี่ยวกับข้อความนี้และสาเหตุที่อาจปรากฏขึ้น กล่าวโดยย่อหนึ่งในสองสิ่งเกิดขึ้น: ไม่ว่าคุณจะพบข้อผิดพลาดของเคอร์เนลหรือมีความเป็นไปได้มากขึ้นความเสียหายของระบบไฟล์บางอย่างเกิดขึ้นหนึ่งในครั้งก่อนหน้านี้ที่คุณได้ติดตั้งระบบไฟล์ใหม่อีกครั้ง ซึ่งอาจเป็นสาเหตุที่ระบบคิดว่าบางสิ่งยังคงใช้ระบบไฟล์เมื่อไม่มี

หากเป็นเวลาหนึ่งปีและคุณยังไม่ได้บูตเครื่องใหม่เพียงแค่เลิกและกำหนดเวลาการบำรุงรักษา


ในขณะเดียวกันฉันกำหนดเวลาการบำรุงรักษาและรีบูตเครื่อง นั่นแก้ปัญหาได้ (ฉันไม่ได้คาดหวังอะไรอีกแล้ว ... ) ฉันจะยอมรับคำตอบของคุณ อาจเป็นสิ่งที่ถูกต้องที่คุณมีความเสียหายของระบบไฟล์ - แม้ว่าฉันจะไม่สามารถพิสูจน์ได้
bmk

25

หากคุณใช้ ext2 / ext3 / ext4 คุณควรจะสามารถใช้e2fsckทำความสะอาดไอโหนดที่ไม่ได้ใช้งาน:

e2fsck -f

สำหรับ reiserfs คุณสามารถใช้reiserfsckซึ่งจะทำความสะอาด inodes กำพร้า


ไม่แน่ใจว่าทำไม downvote นี้อาจให้เหตุผลสำหรับการ downvote การรัน e2fsck จะช่วยทำความสะอาด inphaned inodes ซึ่งคุณจะเห็นในคอนโซลเอาต์พุตclearing orphaned inode XXXXซึ่ง XXXX เป็นหมายเลข inode คุณสามารถรัน e2fsck ได้อย่างง่ายดายโดยไม่ต้องบูตระบบใหม่ หลังจากรัน e2fsck คุณควรสามารถติดตั้งพาร์ติชันใหม่ได้
Richard Keller

2
ขอบคุณมาก .. ฉันใช้เวลาในการหาข้อผิดพลาด การทำ 'e2fsck -f / dev / sda1' แก้ไขโหนดที่ถูกโยงถึงสำหรับฉันพร้อมกับการแก้ไขอื่น ๆ ผมแค่บอกว่าใช่ทุกคนและทำงานได้ดีในขณะนี้ :)
whitehat

1
ขอบคุณมาก!!. คำสั่งของคุณแก้ไขดิสก์ VirtualBox VM แบบอ่านอย่างเดียวหลังจากการติดตั้ง VirtualBox เวอร์ชันใหม่ที่ไม่น่าพึงพอใจ: sudo e2fsck -f / dev / sda1
nine9five

2
สมบูรณ์แบบทำงานให้ฉันบนพาร์ติชันรูท คำตอบที่ยอมรับ (รีบูต) ไม่ทำงานคนเดียว ฉันต้องรีบูตหลังจาก e2fsck ดังนั้นดูเหมือนว่าคุณยังคงต้องการหน้าต่างการบำรุงรักษา
AdamS

1
คำตอบที่ดีกว่าคำตอบที่ยอมรับ มันทำงานได้อย่างสมบูรณ์แบบสำหรับ VPS ของฉัน พบข้อผิดพลาดมากมายและแก้ไขได้มากกว่าการรีบูตและทุกอย่างกำลังทำงานอีกครั้ง บันทึกวันของฉัน
Brain Foo Long

6

e2fsck -f <mount point> จะไม่ทำงาน

ก่อนอื่นหาจุดยึดด้วย

sudo mount -l

จากนั้น fsck ไดรฟ์โดยตรง

เช่นสำหรับฉัน

sudo e2fsck -f /dev/xvda2

เมื่อคุณ google ปัญหาและมาถึงทางออกของคุณเองใน stackoverflow ชีวิตของฉันเสร็จสมบูรณ์แล้ว
Ganesh Krishnan

1

ฉันจะแนะนำให้ unmount พาร์ติชั่นก่อนโดยบังคับคือใช้ตัวเลือก -f และตรวจสอบระบบไฟล์โดยใช้ fsck


1
น่าเสียดายที่umount -fไม่ประสบความสำเร็จเช่นกัน umountเกิดข้อผิดพลาดเป็นเช่นเดียวกับธรรมดา
bmk

1

คุณอาจจะลอง unmount ขี้เกียจเช่น:

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