ไม่สามารถเขียนลงดิสก์ได้ แต่ดิสก์ไม่เต็ม


36

ฉันใช้ Ubuntu 12.04 และไม่สามารถเขียนไปยังไฟล์ใด ๆ ได้แม้จะเป็นรูทหรือดำเนินการอื่นใดที่ต้องมีการเขียน กระบวนการใด ๆ ที่จำเป็นต้องเขียนไม่สามารถทำได้ดังนั้นจึงล้มเหลวทั้งหมด dfบอกว่าฉันมีพื้นที่เหลือเฟือ:

Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       30G   14G   15G  48% /
udev            984M  4.0K  984M   1% /dev
tmpfs           399M  668K  399M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            997M     0  997M   0% /run/shm

ผลลัพธ์ทั้งหมดที่ฉันพบสำหรับ "ไม่สามารถเขียนลงดิสก์" เป็นเรื่องเกี่ยวกับดิสก์ที่ถูกต้องตามกฎหมาย ฉันไม่รู้ด้วยซ้ำว่าจะเริ่มจากตรงนี้ ปัญหาปรากฏออกมาจากที่นี่เมื่อเช้านี้

รายการบันทึกสุดท้ายของ PHP คือ:

ล้มเหลว: ไม่มีพื้นที่เหลือบนอุปกรณ์ (28)

Vim พูดว่า:

ไม่สามารถเปิด (ไฟล์) เพื่อเขียน

แอปพลิเคชันอื่นให้ข้อผิดพลาดที่คล้ายกัน

หลังจากลบ ~ 1gb เพื่อให้แน่ใจว่าปัญหายังคงอยู่ ฉันรีบูทด้วย

df -i กล่าวว่า

Filesystem      Inodes   IUsed  IFree IUse% Mounted on
/dev/xvda1     1966080 1966080      0  100% /
udev            251890     378 251512    1% /dev
tmpfs           255153     296 254857    1% /run
none            255153       4 255149    1% /run/lock
none            255153       1 255152    1% /run/shm

14
กรุณาโพสต์ผลลัพธ์ของ "df -i"
EEAA

1
@EEAA แก้ไขแล้วคุณพูดถูก df -i พูดว่า 100% สิ่งนี้หมายความว่า? ทำไมถึงแตกต่าง
felwithe

3
IIRC ไฟล์มากเกินไปในไดเรกทอรีเดียวจะมีอาการคล้ายกันหากไม่เหมือนกัน สิ่งที่ "มากเกินไป" จะแตกต่างกันระหว่างระบบไฟล์
MSalters

คำตอบ:


59

คุณออกจาก inodes เป็นไปได้ว่าคุณมีไดเรกทอรีอยู่ในที่ที่มีไฟล์ขนาดเล็กจำนวนมาก


9
แค่อยากจะเพิ่มว่าฉันไม่รู้ด้วยซ้ำว่าrm จะล้มเหลว นี่เป็นการศึกษา
felwithe

2
@felwithe ฉันสามารถจินตนาการว่าfind . -name sess\* -exec rm {} +จะได้ผล
Carsten S

3
@felwithe สิ่งที่คนอื่นได้แนะนำ rm อาจใช้งานได้ดี แต่เชลล์ขยาย*glob ไปสู่ข้อมูลที่มากเกินไปและถูก barfed ก่อนที่มันจะถึงจุดที่เรียกใช้ rm
CVn

8
@ CarstenS: หรือfind . -name sess\* -deleteที่ฉันจำได้ง่ายกว่าและโดยทั่วไปแล้วก็มีประสิทธิภาพมากกว่า
MSalters

2
@Kaslai ขีด จำกัด ไม่มี RAM แต่ขีด จำกัด ของระบบ ARG_MAX มาตรฐาน POSIX ไม่ได้ระบุอย่างแม่นยำว่าอาร์กิวเมนต์บรรทัดคำสั่งนั้นวัดกับ ARG_MAX ได้อย่างไร การใช้งานบางอย่างไม่มีขีด จำกัด ดังนั้นอย่ากำหนด ARG_MAX แต่นี่ไม่ใช่ตัวเลือกยอดนิยมเนื่องจากทำให้หลายโปรแกรมไม่สามารถคอมไพล์ได้
James Youngman

7

เห็นได้ชัดว่า OP มีคำตอบสำหรับปัญหาเฉพาะของพวกเขา อย่างไรก็ตามเพื่อความสมบูรณ์อาการของ OP ยังสามารถเกิดขึ้นได้หากระบบไฟล์ถูกประกอบใหม่เป็นแบบอ่านอย่างเดียว สิ่งนี้เกิดขึ้นกับฉันโดยใช้ Linux VM ซึ่งหน่วยความจำอยู่ในระบบดิสก์แบบคลัสเตอร์ซึ่งมีข้อบกพร่องเป็นระยะ ๆ ในบางครั้งความผิดพลาดจะทำให้ระบบไฟล์ติดตั้งใหม่แบบอ่านอย่างเดียว อาการภายนอกที่สังเกตได้ในที่สุดคือบริการต่าง ๆ ไม่ตอบสนองเมื่อ RAM เต็ม (ด้วยการเขียนดิสก์ที่ไม่สามารถฟลัชได้)

ในขณะนั้นความละเอียดเพียงอย่างเดียวคือการรีบูตระบบ (การสูญเสียบันทึกที่ไม่ได้บันทึกไว้) ความพยายามในการ remount RW ล้มเหลว (น่าเสียดายที่ฉันไม่จำข้อความแสดงข้อผิดพลาดที่ส่งคืนเมื่อพยายาม remounts เหล่านี้)

ดังนั้น ... ไม่ใช่ปัญหาของ OP แต่คนอื่นที่มาถึงหน้านี้อาจได้รับประโยชน์จากข้อมูลนี้


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

1
@psusi: ฉันไม่ได้ ฉันมีข้อผิดพลาดต่าง ๆ รวมถึง "ระบบแฟ้มเต็ม" หากมีการเปลี่ยนแปลงในสองหรือสามปีที่ผ่านมานั่นจะเป็นสิ่งที่ดี
Eric Towers

1
ฉันพยายามย้ายไฟล์ไปยังระบบไฟล์ ZFS แบบอ่านอย่างเดียวบน Linux เมื่อวันก่อน ข้อผิดพลาดค่อนข้างชัดเจนว่า "ระบบไฟล์แบบอ่านอย่างเดียว"
CVn

Nope; เป็นอย่างนั้นมานานกว่า 30 ปี การเขียนไปยัง fs แบบอ่านอย่างเดียวส่งคืน -EROFS; เขียนไปยัง fs เต็มส่งกลับ -ENOSPC
psusi

4
@psusi: ฉันเห็นว่าคุณอาศัยอยู่ในจักรวาลแฟนตาซีที่โปรแกรมเมอร์มักทำสิ่งที่ถูกต้องแทนที่จะทำข้อความผิดพลาดของตัวเอง ฉันดูเหมือนจะไม่อยู่ที่นั่น
Eric Towers
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.