การใช้พื้นที่ดิสก์ไม่เพิ่มขึ้นด้วย df & du


13

ฉันพยายามเพิ่มพื้นที่ว่างในดิสก์ - ถ้าฉันทำdf -hฉันมีระบบไฟล์ที่เรียกว่า / dev / mapper / vg00-var ซึ่งระบุว่า 4G, 3.8G ใช้ไปแล้วเหลือ 205M

ที่สอดคล้องกับไดเรกทอรี / var ของฉัน

ถ้าฉันลงไปใน / var และทำdu -kscxh *ผลรวมคือ 2.1G

2.1G + 200M ฟรี = 2.3G ... ดังนั้นคำถามของฉันคือ 1.7G ที่เหลืออยู่ที่ไหน


สิ่งที่ไม่du -shx /varพูด?
— Kyle Smith

1
คุณสามารถลบไฟล์ที่มีตัวจัดการไฟล์แบบเปิดได้ ระบบปฏิบัติการจะไม่ปล่อยพื้นที่จนกว่าจะปิดที่จับ แต่คุณจะไม่เห็นพวกเขาด้วย "du" คุณสามารถเรียกใช้ "lsof / var | grep delete" (หรือสิ่งที่คล้ายกัน) เพื่อดู นี่ไม่ใช่การค้นพบที่น่าแปลกใจหากพูดว่า / var / log หากมีการหมุนบันทึก แต่กระบวนการบันทึกไม่ได้ HUP'ed ในทางที่ถูกต้อง
— cjc

ฉันลบไฟล์บันทึกบางไฟล์ที่คลั่งไคล้ดูเหมือนว่าพวกเขาไม่ได้หมุน แต่อย่างไรก็ตามฉันมีอีเมลคำหนึ่งคำจากเพื่อน 'รีบูต' - คิดว่าเขากำลังประชดประชัน แต่ไม่ชัดเจน :) ฉัน ได้พบพื้นที่ดิสก์ของฉันอีกครั้ง .... ภัยพิบัติหันไป (ตอนนี้)
— Codecraft

@Codecraft ใช่แล้วการรีบูตเครื่องจะช่วยจัดการกับไฟล์ที่เปิดอยู่อย่างชัดเจนแม้ว่ามันจะเหมือนกับการทุบไข่ด้วยค้อน
— cjc

@cjc ตราบใดที่ฉันได้รับความดี yolky ... ! คำแนะนำใด ๆ เกี่ยวกับวิธีที่ฉันสามารถล้างตัวจัดการไฟล์แบบเปิดโดยไม่ใช้การตอกไข่
— Codecraft

คำตอบ:


20

คุณอาจมีไฟล์บันทึกขนาดใหญ่ที่ถูกลบไฟล์ฐานข้อมูลหรือสิ่งที่คล้ายกันอยู่รอบ ๆ รอกระบวนการที่ถือไฟล์ปล่อย

ใน Linux การลบไฟล์เพียงแค่ยกเลิกการเชื่อมโยงไฟล์ มันจะถูกลบจริงๆเมื่อไม่มีไฟล์ที่จัดการเชื่อมต่อกับไฟล์นั้นอีกต่อไป ดังนั้นหากคุณมีล็อกไฟล์ขนาด 2 GB ซึ่งคุณลบด้วยตนเองด้วย rm พื้นที่ดิสก์จะไม่ถูกเพิ่มจนกว่าคุณจะรีสตาร์ท syslog daemon (หรือส่งHUPสัญญาณไปยังมัน)

ลอง

lsof -n | grep -i deleted

และดูว่าคุณมีไฟล์ซอมบี้ที่ถูกลบทิ้งอยู่หรือไม่


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

มันทำงานให้เราด้วย Apache บันทึกเติมไดเรกทอรี / var / log / apache / ดังนั้นคุณอาจไม่ต้องรีสตาร์ทเซิร์ฟเวอร์ทั้งหมดหรือ syslog เพียงแค่บริการที่คุณจะพบในผลลัพธ์ของคำสั่งด้านบน
— Yvan

เพียงแค่มีสิ่งนี้เอง เรามี tomcat6 catalina. ไม่โดน logrotate เราจะลบมันเมื่อมันมาถึง 4Gb และ logrotate คงที่ หลายสัปดาห์ต่อมาเราสงสัยว่าทำไม 4Gb ไม่ได้กลับมา lsofคำสั่งนั้นแสดงว่าเรามีไฟล์ Tomcat จำนวนมากที่รอการลบ เริ่มต้นแมวตัวผู้และเรามีพื้นที่เหลือเฟือมากมาย!
— Nick

ในที่สุดคำตอบที่เหมาะกับฉัน PostgreSQL ขัดข้องและปล่อยให้การเชื่อมต่อแบบเปิดไปยัง 400GiB (!!!) ของไฟล์ที่ไม่ได้ลิงก์บนดิสก์ 1TiB การเริ่ม Postgres ใหม่จะแก้ไข
— sudo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.