การอัพเดตขนาดดิสก์ฟรีโดยไม่ต้องรีบูตโฮสต์


23

ฉันใช้ RHEL4 กับ LVM2 กับมัน บางครั้งแม้หลังจากลบไฟล์ขนาดใหญ่มากกว่า GB ขนาดพาร์ติชันจะไม่ได้รับการอัพเดตเมื่อใช้dfคำสั่ง

-bash-3.00$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/sys-root  3.9G  1.4G  2.3G  39% /
/dev/cciss/c0d0p1     251M   19M  219M   8% /boot
/dev/mapper/sys-home  250G  125G  113G  53% /home
/dev/mapper/sys-tmp   3.9G   41M  3.7G   2% /tmp
/dev/mapper/sys-var   3.9G  3.6G   98M  98% /var

แต่เมื่อฉันตรวจสอบการใช้ du มันแสดงขนาดที่เหมาะสม

-bash-3.00$ sudo du -sh /var/
 179M   /var/

คุณสามารถเห็นได้ว่าเอาท์พุท df แสดง / พาร์ทิชัน var ที่จะใช้ 3.6Gb แต่ du แสดงให้เห็นว่ามันแค่ 179Mb เท่านั้น

ตอนนี้ปัญหาคือว่าไม่มีการซิงค์หรือ partprobe ไม่ได้อัปเดตข้อมูล แต่การรีบูตโฮสต์จะแก้ไขปัญหาได้อย่างแน่นอน แต่นี่เป็นเซิร์ฟเวอร์ที่ใช้งานจริงฉันไม่สามารถรีบูทได้ มีวิธีใดบ้างที่ฉันสามารถอัปเดตข้อมูลดิสก์ด้วยตนเองโดยไม่ต้องรีบูตโฮสต์


1
คุณอาจมีไฟล์ที่ถูกลบเปิดอยู่ (เช่นกระบวนการที่กำลังถือไว้กับไฟล์ที่ถูกลบ) ลองทำสิ่งที่ต้องการlsofค้นหา ใช้ / ประโยชน์ไม่ได้ถูกเก็บไว้ในตารางพาร์ติชั่นพาร์ทโพรบ (หรือพาร์ติชันประเภทใดก็ได้ที่อ่านซ้ำ) จะไม่ช่วยอะไรเลย
Mat

คำตอบ:


28

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

ในการดูว่าคุณมีไฟล์ที่ถูกลบที่เปิดอยู่บนระบบไฟล์หรือไม่ให้รันหนึ่งในคำสั่งเหล่านี้โดยที่/mount/pointจุดเมานท์ ( /varในกรณีของคุณ):

lsof +L1 /mount/point

นี้บทความเกี่ยวกับการเปิดไฟล์ยกเลิกการเชื่อมโยงจะช่วยอธิบายเรื่องนี้บางมากขึ้น


2
ฉันลบบันทึก แต่dfไม่ได้แสดงพื้นที่ว่างจนกว่าฉันจะเริ่มต้นกระบวนการเซิร์ฟเวอร์ใหม่ ขอบคุณ!
fet

โทรหา lsof ได้ดีกว่าด้วย 'lsof + L1' ซึ่งแสดงไฟล์ที่ถูกลบ ทำข้อเสนอแนะการแก้ไข
Nuno Pereira

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