inode ของเด็กกำพร้าคืออะไร? [ปิด]


16

ฉันเข้าใจว่า inode คืออะไร แต่คำจำกัดความที่แน่นอนของ inode ที่กำพร้าคืออะไร? ฉันไม่ได้รับความหมายที่แท้จริง

UPDATE

มีเวลาที่เซิร์ฟเวอร์ที่ฉันจัดการหมด inodes แต่เมื่อฉันจะทำ df -h มันแสดงให้ฉันเห็นว่าเซิร์ฟเวอร์มีพื้นที่ว่างเพียง 60% เท่านั้น ฉันเดาว่านี่เป็นเพราะ inodes เด็กกำพร้า inodes ทั้งหมดจะถูกใช้ไปได้อย่างไร แต่ยังมี "พื้นที่" เหลืออยู่บนเซิร์ฟเวอร์? คุณตอบคำถามนี้ได้ไหม?


1
การอัปเดตของคุณเป็นคำถามแยกต่างหากจริง ๆ แล้วจะทำอย่างไรกับความแตกต่างระหว่างความจุของระบบแฟ้มและจำนวนของ inodes ที่สามารถมีได้ คุณควรถามเป็นคำถามแยกต่างหาก
Stephen Kitt

การทำงานdf -iจะแสดงข้อมูลที่เกี่ยวข้องสำหรับ inodes
Kusalananda

พื้นที่ว่างในดิสก์ / ใช้แล้วมีความสัมพันธ์เพียงเล็กน้อยกับ inodes ฟรี / ใช้แล้ว ดิสก์ที่มีไฟล์ขนาดเล็กจำนวนมากจะหมด inodes ก่อนที่จะมีพื้นที่เหลือ
Kusalananda

คำตอบ:


17

inode orphaned เป็น inode ที่ไม่ได้แนบกับรายการไดเรกทอรีในระบบไฟล์ซึ่งหมายความว่าไม่สามารถเข้าถึงได้

inodes เด็กกำพร้าสามารถปรากฏได้หลายสาเหตุ:

  • ไฟล์ชั่วคราวที่ถูกลบ แต่ยังคงเปิดอยู่ (วิธีปฏิบัติทั่วไป) ใช้ inodes ในระบบไฟล์ หากระบบรีบู๊ตโดยไม่ปิดระบบอย่างถูกต้อง inodes เหล่านี้จะยังคงอยู่และถูกปิดใช้งาน
  • ความเสียหายของระบบไฟล์อาจทำให้ไดเรกทอรีเสียหายโดยไม่กระทบกับ inodes ของไฟล์ที่มีในไดเรกทอรี inodes เหล่านี้จะถูกกำพร้าแล้ว

fsckสร้างรายการไดเรกทอรีใหม่สำหรับ inodes lost+foundกำพร้าใน


ขอบคุณสำหรับคำตอบของคุณ @ stephen-kitt มีเวลาที่เซิร์ฟเวอร์ที่ฉันจัดการไม่มีไอโหนดเหลืออยู่ แต่เมื่อฉันทำdf -hมันจะแสดงให้ฉันเห็นว่าเซิร์ฟเวอร์นั้นมีพื้นที่ว่าง 60% เท่านั้น ฉันเดาว่านี่เป็นเพราะ inodes เด็กกำพร้า inodes ทั้งหมดจะถูกใช้ไปได้อย่างไร แต่ยังมี "พื้นที่" เหลืออยู่บนเซิร์ฟเวอร์?
Ninjacoder

3

inode ของเด็กกำพร้าเป็นไฟล์ที่ "ลบกึ่ง": มันไม่มีรายการไดเรกทอรี แต่มันยังคงเปิดอยู่ในบางกระบวนการดังนั้นข้อมูลยังคงปรากฏอยู่ในดิสก์ เมื่อกระบวนการสุดท้ายที่เปิดไฟล์นี้ปิดไฟล์จะถูกลบอย่างสมบูรณ์และ inode ที่ขาดหายไปจะหายไป

inode orphaned ใช้ทั้ง inode และเนื้อที่ดิสก์เพื่อเก็บไฟล์ดังนั้นทั้งสองdfและdf -iนับเป็นใช้ ดังนั้นหากมีการรายงานดิสก์เต็ม แต่dfมีพื้นที่เหลืออยู่แสดงว่าไม่สามารถเกี่ยวข้องกับ inodes ที่กำพร้า inodes ที่กำพร้าเป็นหนึ่งในสาเหตุที่การใช้งานระบบไฟล์ที่รายงานโดยdfและขนาดไฟล์ทั้งหมดที่รายงานโดยduอาจแตกต่างกัน; ดูเหตุใดจึงมีหลายวิธีในการวัดการใช้ดิสก์ สำหรับรายละเอียดเพิ่มเติมในหัวข้อนี้

ระบบไฟล์จำนวนมากจองจำนวนไอโหนดคงที่เมื่อสร้างระบบไฟล์ซึ่งหมายความว่าคุณสามารถมีไฟล์ได้มากที่สุดในระบบไฟล์ จำนวน inodes คือการประนีประนอมระหว่างพื้นที่ที่ใช้โดย inodes และความสามารถในการสร้างไฟล์จำนวนมาก หากไม่มีที่ว่างบนระบบไฟล์คุณจะไม่สามารถขยายไฟล์ที่มีอยู่หรือสร้างไฟล์ใหม่ (บางทีคุณยังสามารถสร้างไฟล์เปล่าบางไฟล์ในไดเรกทอรีที่มีอยู่ได้ตราบใดที่มันเต็มบล็อกที่ใช้เพียงบางส่วนเท่านั้น ต้องมีการจัดสรรบล็อกใหม่) หากไม่มี inode ฟรีอีกต่อไปคุณสามารถขยายไฟล์ที่มีอยู่ แต่คุณไม่สามารถสร้างไฟล์ใหม่ได้

เคอร์เนลรายงานข้อผิดพลาดเดียวกันกับแอ็พพลิเคชันว่าระบบไฟล์เต็มเนื่องจากพื้นที่ข้อมูลขาดหรือเนื่องจากไม่มี inodes ดังนั้นคุณจะได้รับข้อผิดพลาด“ ดิสก์เต็ม” แม้ว่าจะมีพื้นที่ข้อมูลเหลืออยู่หากการดำเนินการนั้นจำเป็นต้องใช้ไอโหนดใหม่และตารางไอโหนดเต็ม เรียกใช้df -iเพื่อทราบจำนวนของ inodes ที่เหลือและจำนวนที่เหลือ


1
  • inode แบบเด็กกำพร้าเป็นสิ่งที่ไม่มีการเชื่อมโยง แต่ยังคงเปิดอยู่ในกระบวนการอื่น ตัวอย่างเช่นทำงานtail -f {file}ในเชลล์หนึ่งแล้วตามด้วยrm {file}อีกเชลล์ ระบบไฟล์ติดตามสิ่งเหล่านี้เพื่อให้พวกเขาสามารถล้างข้อมูลเมื่อกระบวนการหยุดทำงาน

  • เป็นเรื่องปกติอย่างสมบูรณ์แบบเมื่อใดก็ตามที่คุณมีการลงจากรถ เป็นเพียงไฟล์ที่ถูกลบ แต่ยังคงเปิดอยู่เมื่อ fs ถูกประกอบเข้าใหม่อ่านอย่างเดียว พวกเขาไม่ใช่สาเหตุ แต่เป็นเพียงอาการเท่านั้น


สำหรับปัญหา inode ให้รันการค้นหานี้เพื่อดูรายการจำนวน inode ที่ใช้ในไดเรกทอรีทั้งหมด

for i in `find . -type d `; do echo `ls -a $i | wc -l` $i; done | sort -n

คุณสามารถอ้างถึงสิ่งนี้และนี่เป็นวิธีการตรวจสอบเพิ่มเติม


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