프로그래머의 일상: 어떤 디스크 풀
커널 보안 취약점 때문에 회사에서 쓰는 VM들을 패치하고 있는데, 디스크 풀이 뜬다.
?!?!?!?!
디스크 풀은 다른 방식으로 감지하고 있어서 대체 뭘까 하고 고민하다가, 같이 일하는 수원님이 “inode 풀 아니냐” 라고 하시기에,
$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/xvda1 524288 517380 6908 99% /
none 127041 2 127039 1% /sys/fs/cgroup
udev 125746 388 125358 1% /dev
tmpfs 127041 318 126723 1% /run
none 127041 1 127040 1% /run/lock
none 127041 1 127040 1% /run/shm
none 127041 2 127039 1% /run/user
그것이 실제로 일어났습니다?
뭐가 이렇게 inode를 다 쓰고 있나 했더니 신경 안 썼던 리눅스 헤더 패키지 (linux-headers-{version}, linux-headers-{version}-generic) 가 inode를 다 쓰고 있더란;
$ find /usr/src/linux-headers-3.13.0-76-generic/ /usr/src/linux-headers-3.13.0-76 | wc -l
24813
버전마다 25k 정도 쓰고 있는데, 총 inode가 520k; 근데 헤더 패키지가 20개 깔려있더라.
dpkg -P
로 몇 개 헤더 패키지를 지우고 나니 설치가 정상적으로 설치가 된다.
세 줄 요약:
- 디스크 풀은 디스크 용량이 아니라 inode가 모자라서 날 수도 있다.
- df -h 말고 df -i 도 보자.
- 리눅스 헤더 패키지 싸우자 (주기적으로 obosolete 패키지를 제거합시다)