Author Topic: partition full on linux and already deleted but size not clear  (Read 8623 times)

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2145
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
partition full on linux and already deleted but size not clear
« on: กรกฎาคม 09, 2015, 01:21:21 PM »
หลังจากที่ทำการ clear file หรือ folder ที่มีขนาดใหญ่ไปแล้ว ในที่นี้คือ folder ชื่อ e2fsprogs-1.42.12 ซึ่งมีขนาด 13GB

root@Microknoppix:/mnt/lfs#cd /mnt/lfs/sources/
root@Microknoppix:/mnt/lfs#rm -rf e2fsprogs-1.42.12

หลังจากนั้นเชคโดย df แต่ยังพบว่า พื้นที่ยังไม่ถูก clear ออกจากระบบ ยังคงเห็นเป็นขนาด usage = 100%
#df -h
/dev/sda2        20G   20G     0 100% /mnt/lfs

ให้ทำการเชคโดยผ่าน command lsof ดังนี้ ครับ
root@Microknoppix:/mnt/lfs# lsof | grep deleted

จะเห็นได้ว่ามี folder ที่ยังค้างอยู่ในระบบ แต่ขึ้นสถานะว่าเป็น (deleted) แล้ว
ทำการเชคอีกรอบ เพื่อดู เลข pid = 3072

root@Microknoppix:/mnt/lfs# lsof | grep deleted | grep "f_mmp.log"
lsof: WARNING: can't stat() fuse.gvfs-fuse-daemon file system /run/user/1000/gvfs
      Output information may be incomplete.
debugfs    3072            root    1w      REG                8,2 18649381452     297919 /mnt/lfs/sources/e2fsprogs-1.42.12/build/tests/f_mmp.log (deleted)
debugfs    3072            root    2w      REG                8,2 18649381452     297919 /mnt/lfs/sources/e2fsprogs-1.42.12/build/tests/f_mmp.log (deleted)

ให้ทำการเข้าไปยัง proc นั้นๆ ที่ถือครองอยู่ คือ pid=3072
root@Microknoppix:/mnt/lfs/proc# cd /mnt/lfs/proc/3072
root@Microknoppix:/mnt/lfs/proc/3072# ls
attr        coredump_filter  gid_map    mounts         pagemap      stat
autogroup   cpuset           io         mountstats     personality  statm
auxv        cwd              limits     net            projid_map   status
cgroup      environ          loginuid   ns             root         syscall
clear_refs  exe              maps       oom_adj        sessionid    task
cmdline     fd               mem        oom_score      smaps        uid_map
comm        fdinfo           mountinfo  oom_score_adj  stack        wchan

##เข้าไปที่ folder =fd ที่เก็บไฟล์นี้
root@Microknoppix:/mnt/lfs/proc/3072# cd fd
root@Microknoppix:/mnt/lfs/proc/3072/fd# ls
0  1  2  3  4
root@Microknoppix:/mnt/lfs/proc/3072/fd# ls -lah
total 0
dr-x------ 2 root root  0 Jul  9 05:46 .
dr-xr-xr-x 8 root root  0 Jul  8 09:28 ..
lr-x------ 1 root root 64 Jul  9 05:46 0 -> pipe:[1493822]
l-wx------ 1 root root 64 Jul  9 05:46 1 -> /mnt/lfs/sources/e2fsprogs-1.42.12/build/tests/f_mmp.log (deleted)
l-wx------ 1 root root 64 Jul  9 05:46 2 -> /mnt/lfs/sources/e2fsprogs-1.42.12/build/tests/f_mmp.log (deleted)
lrwx------ 1 root root 64 Jul  9 05:46 3 -> /mnt/lfs/sources/e2fsprogs-1.42.12/build/tests/tmp-f_mmp.iUEpNf (deleted)
lrwx------ 1 root root 64 Jul  9 05:46 4 -> /mnt/lfs/sources/e2fsprogs-1.42.12/build/tests/tmp-f_mmp.iUEpNf (deleted)

#จะพบว่ามีไฟล์ f_mmp.log อยู่รวมทั้งไฟล์ tmp-f_mmp ให้ทำการลบออกซะ
root@Microknoppix:/mnt/lfs/proc/3072/fd# cat /dev/null > /proc/3072/fd/0
root@Microknoppix:/mnt/lfs/proc/3072/fd# cat /dev/null > /proc/3072/fd/1
root@Microknoppix:/mnt/lfs/proc/3072/fd# cat /dev/null > /proc/3072/fd/2
root@Microknoppix:/mnt/lfs/proc/3072/fd# cat /dev/null > /proc/3072/fd/3
root@Microknoppix:/mnt/lfs/proc/3072/fd# cat /dev/null > /proc/3072/fd/4

###เสร็จแล้วลองทำการเชคอีกรอบครับ ก็จะได้ขนาดพื้นที่กลับมาปกติครับผม
root:/usr# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        20G  1.6G   18G   9% /

เหตุการณ์ลักษณะนี้ อาจจะทำการ reboot server 1 รอบก็ได้ ถ้าไม่ต้องการทำการลบเองแบบนี้
แต่ถ้าท่านใดอยากเก้บ uptime หรือมีเหตุผลอื่นๆ ที่ไม่ต้องการ reboot
วิธีนี้ก็เป็นแฉกเช่นวิธีหนึ่งในการแก้ไขปัญหาครับผม  ;)

ขอให้สนุกกับการใช้งาน open source นะครับผม