Inode
전산학에서 아이노드(inode)는 UFS와 같은 전통적인 유닉스 계통 파일 시스템에서 사용하는 자료구조이다. 아이노드는 정규 파일, 디렉터리 등 파일 시스템에 관한 정보를 가지고 있다.
파일들은 각자 1개의 아이노드를 가지고 있으며, 아이노드는 소유자 그룹, 접근 모드(읽기, 쓰기, 실행 권한), 파일 형태, 아이노드 숫자(inode number, i-number, 아이넘버) 등 해당 파일에 관한 정보를 가지고 있다. 파일시스템 내의 파일들은 고유한 아이노드 숫자를 통해 식별 가능하다.
일반적으로 파일 시스템을 생성할 때 전체 공간의 약 1퍼센트를 아이노드를 위해 할당한다. 아이노드를 위한 공간이 한정되어 있는 만큼 파일시스템이 가질 수 있는 파일의 최대 개수도 한정되어 있다. 그러나 대부분의 경우, 사용자가 느끼기에 거의 무한 개에 가까운 파일을 생성하고 관리할 수 있다.
Hard Link
동일한 inode를 갖고 있는 파일 링크를 생성한다. ls -i
를 사용하면 i-node 번호를 확인할 수 있다:
새로운 하드링크 파일을 확인해도 i-node가 동일함을 확인할 수 있다: (파일 타입도 -
이다)
$ ln f f.h
$ ls -lai
4599473 -rw-rw-r-- 2 yourname yourname 4 Oct 4 20:53 f
4599473 -rw-rw-r-- 2 yourname yourname 4 Oct 4 20:53 f.h
세 번째 컬럼의 숫자 2를 보면 알 수 있듯이 Hard Link 개수가 2개 임을 알 수 있다.
물론 두 파일의 내용은 동일하다.
처음 생성한 파일을 지워도 i-node는 유지됨을 알 수 있다. (물론 내용도 동일)
다만 세 번째 컬럼의 숫자 1를 보면 알 수 있듯이 Hard Link 개수가 1로 줄었음을 알 수 있다.
Soft Link
소프트링크는 윈도우의 바로가기를 생각하면된다:
$ ls -li
4599473 -rw-rw-r-- 2 yourname yourname 4 Oct 4 20:53 f
4599473 -rw-rw-r-- 2 yourname yourname 4 Oct 4 20:53 f.h
$ ln -s f f.s
$ ls -li
4599473 -rw-rw-r-- 2 yourname yourname 4 Oct 4 20:53 f
4599473 -rw-rw-r-- 2 yourname yourname 4 Oct 4 20:53 f.h
4618766 lrwxrwxrwx 1 yourname yourname 1 Oct 4 21:02 f.s -> f
Hard Link 의 개수가 변하지 않음을 확인할 수 있다.
Troubleshooting
inode 가 부족한 경우
df의 -i
플래그로 사용중인 inode 개수 확인 가능. ls -i
와 함께 병행하여 사용량 체크를 반복하자.
See also
- Managing Disk Space - 디스크 용량이 부족할 때 관련 이슈 정리.