해야겠다고 연락이 왔다. 한두 byte 차이도 아니고 무려 60G나 차이가 나고 있는 상황. 남은 용량은 5G 가량이지만 전체 용량에 비하면 꽤나 많이 사용하고 있고, 사실상 시스템에서는 정리가 필요한 상태. 하지만..
접기
.. 이 시스템을 리붓하려면 여러가지 골치아픈 일이 생기기 때문에, 이 일만으로 리붓하기에 상당히 곤란한 상황. 그래서 찾아봤다.
참고 사이트 : http://www-903.ibm.com/kr/techinfo/pseries/tech/techdoc5.html
참고 사이트 : http://groundivy.springnote.com/pages/703110
그러니까 어떤 프로세스에서 파일을 오픈했다가, 그 파일이 물리적으로 사라지는 경우 다른 프로세스는 다시 접근이 불가능하나 해당 프로세스는 여전히 파일을 억세스할 수 있는 상황이므로 그 프로세스가 지워진 파일을 close 하기 전까지는 용량이 반환되지 않는다는 이야기.
내가 알기로는 inode 정보가 깨져도 그런 현상이 일어날 수 있는 것으로 알고 있는데, 그 상황이라도 리붓해서 fsck를 한번 돌려주지 않으면 해결이 되지 않으니까 뭐 리붓이 필요하긴 하겠네.
.. 근데 저 상황이라면, 왜 시스템을 "리붓" 해야 하지?
참고 사이트 : http://www.cyberciti.biz/tips/freebsd-why-command-df-and-du-reports-different-output.html
중간쯤에 보면 열려진 file descriptor들을 외부에서 감시할 수 있는 툴을 소개하고 있다. 그러니까 lsof라는 툴인데. 대략 출력은 이런 식으로 나온다.
# lsof /var
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
syslogd 2999 root 2w REG 8,2 20957 2577389 /var/log/messages
syslogd 2999 root 3w REG 8,2 19187 2577396 /var/log/secure
syslogd 2999 root 4w REG 8,2 62302 2577392 /var/log/maillog
syslogd 2999 root 5w REG 8,2 75629 2577516 /var/log/cron
syslogd 2999 root 6w REG 8,2 0 2577531 /var/log/spooler
syslogd 2999 root 7w REG 8,2 0 2577512 /var/log/boot.log
syslogd 2999 root 8w REG 8,2 0 2577320 /var/log/news/news.crit
syslogd 2999 root 9w REG 8,2 0 2577321 /var/log/news/news.err
syslogd 2999 root 10w REG 8,2 0 2577319 /var/log/news/news.notice
auditd 3027 root 4w REG 8,2 4410981 2577358 /var/log/audit/audit.log
crond 3160 root cwd DIR 8,2 4096 1264033 /var/spool
crond 3160 root 3u REG 8,2 5 820832 /var/run/crond.pid
dbus-daem 3198 dbus 3u unix 0x0000010224304980 7262 /var/run/dbus/system_bus_socket
dbus-daem 3198 dbus 7u unix 0x00000102257c3080 7294 /var/run/dbus/system_bus_socket
#
요놈을 문제가 있는 시스템에 돌려봤더니..
LOGGER 30669 root 49u REG 8,2 100000875 6979651 /var/log/mysystem/debug.4 (deleted)
LOGGER 30669 root 50u REG 8,2 100001140 6979691 /var/log/mysystem/debug.4 (deleted)
LOGGER 30669 root 51u REG 8,2 100000875 6979758 /var/log/mysystem/debug.4 (deleted)
LOGGER 30669 root 52u REG 8,2 100001140 6979775 /var/log/mysystem/debug.4 (deleted)
LOGGER 30669 root 53u REG 8,2 100000875 6979784 /var/log/mysystem/debug.4 (deleted)
...
참 많이도 나와 주신다. 요 프로세스를 재시작 했더니 무려 60G라는 용량을 반환하고, 시스템은 평화를 찾게 된 상황. 그래서
"리붓" 은 하지 않고 모든 일이 정리됐다. 할렐루야.
접기
어쨌든 문제를 해결해주신 lsof에 대한 자세한 정보는 아래 사이트를 참고.