“ ไม่มีพื้นที่เหลือบนอุปกรณ์” df แสดงความแตกต่าง


15

ไม่กี่ชั่วโมงที่ผ่านมาพาร์ทิชันรากของฉันเต็มฉันย้ายไฟล์ออกจากมันและรายงาน df:

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda1             183G  174G     0 100% /

ดังนั้นควรมี 9GB ฟรี แต่ประโยชน์รายงาน 0 และการใช้ยังคงอยู่ที่ 100%

ฉันทดสอบในฐานะที่เป็นรูตเช่น

# echo test >a ; cat a
test

มันทำงานได้ตามที่คาดไว้ อย่างไรก็ตามในฐานะผู้ใช้ทั่วไปฉันยังคงได้รับข้อผิดพลาด:

$ echo test >a ; cat a
bash: echo: write error: No space left on device

โฮมไดเร็กตอรี่รากที่ฉันทำการทดสอบในเชิงบวกและโฮมไดเร็กตอรี่ของฉันอยู่ในพาร์ติชั่นเดียวกัน. รายการ fstab คือ:

/dev/hda1 / ext3 noatime,defaults,errors=remount-ro 0 1

คำตอบ:


34

ระบบจัดเก็บข้อมูลส่วนใหญ่จองเปอร์เซ็นต์ที่แน่นอนสำหรับรูทดังนั้นคุณยังสามารถเข้าสู่ระบบในฐานะรูทและแก้ปัญหาช่องว่างได้ โดยปกติจะเป็น 5% 9GB ประมาณ 5% จาก 183GB ดังนั้นนี่จึงสมเหตุสมผล คุณสามารถดูจำนวนที่สงวนไว้โดยใช้ tune2fs:

# tune2fs -l /dev/sda1 | grep -i reserved
Reserved block count:     936488
Reserved GDT blocks:      1019
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)

คุณสามารถแก้ไขได้โดยใช้

# tune2fs -m 3 /dev/sda1
tune2fs 1.41.9 (22-Aug-2009)
Setting reserved blocks percentage to 3% (561893 blocks)

ในไดรฟ์ขนาดใหญ่ที่ทันสมัย ​​5% อาจจะมากเกินไปเล็กน้อยและคุณอาจต้องการลดระดับลง คุณไม่ต้องการตั้งค่าเป็นศูนย์


1
ไม่อยากเชื่อเลยว่าฉันไม่รู้ ฉันไม่ควรบอกว่าฉันใช้ Linux ไปนานเท่าไหร่แล้วตอนนี้ ...
ทำเครื่องหมาย

@nfm เฮ้ฉันได้ทำการจัดการ Linux พื้นฐานบนกล่องบ้านมาหลายปีแล้วและไม่เคยได้ยินมาก่อน +1 สำหรับข้อมูลที่ดี :-)
Topher Fangio

5

im กับ bob ลอง df -i ถ้าคุณมี crontabs เอาต์พุตจำนวนมากตัวอย่างเช่นไดเร็กทอรี / var / spool / clientmqueue / ของคุณจะเต็มไปด้วย


3

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


3
Unices ที่ทันสมัยส่วนใหญ่มี inode จำนวนมากแม้ในระบบไฟล์ขนาดเล็ก บางครั้งก็เป็นปัญหา แต่เนื่องจากผู้ใช้สามารถสร้างไฟล์ c เลยมันไม่น่าจะเป็นปัญหา inode (รายการไดเรกทอรีต้องการ inodes แม้ว่าพวกเขาไม่ต้องการพื้นที่ใด ๆ )
chris

2

"ตามค่าเริ่มต้นระบบไฟล์ทุกแห่งใน Unix จะมีพื้นที่บางส่วนที่สงวนไว้สำหรับ superuser (root) ซึ่งหมายความว่าไม่มีผู้ใช้ Unix ปกติใด ๆ สามารถเติมระบบไฟล์ของคุณได้สูงสุด 100% และดังนั้นจึงมีพื้นที่ว่างเพียงพอ "

จาก: http://www.unixtutorial.org/commands/tune2fs/


1

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


0

ฉันจะเดิมพัน $ 1 ที่ไคลด์มีคำตอบ กระบวนการมีไฟล์ที่เปิดอยู่บนอุปกรณ์นั้น ใน linux ไฟล์นั้นจะไม่ถูกลบออกไปจนกว่ากระบวนการที่เปิดไว้จะเปิดทิ้งไว้

ฉันจะเริ่มต้นด้วย: lsof | grep hda1

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