리눅스에서 파일을 이루는 구성요소
리눅스에서는 모든 처리 과정을 파일 단위로 구성하며, 계층적인 구조의 특성을 지니고 있습니다. 리눅스에서의 파일이라 함은 파일명, I-node, 데이터 블록 세 가지를 의미합니다.



파일명
파일명은 사용자가 파일을 구분하고 접근 및 조작하는데 필요한 요소입니다. 리눅스에서는 하드웨어 장치마저 파일로 관리 할만큼 모든 것을 파일이라는 단일 인터페이스를 통해 다뤄지기 때문에 사용자가 파일을 다루기 위해서는 파일명을 통해 구분할 수 있어야 되기 때문입니다. 또한 리눅스에서는 파일 확장자 개념이 존재하지 않습니다. 확장자를 붙인다 하더라고 윈도우처럼 의미를 두지는 않고 단지 하나의 파일명으로만 인식할 뿐입니다.

리눅스만의 특별한 파일명 규칙이 있다면 파일명이 '.' 으로 시작하는 파일은 숨김파일이며 ls -a 명령어를 통해서만 볼 수 있습니다. 또한 리눅스 시스템은 영어 대/소 문자를 구분하므로 같은 단어의 파일명이라 하더라도 대/소 문자 구분에 따라 다른 파일로 인식합니다. 또한 파일명으로 루트 디렉터리를 의미하는 '/'를 사용할 수 없습니다.


I-node
i-node는 Index node 라고도 하며, 리눅스/유닉스 계열의 파일 시스템에서 사용하는 자료구조를 말하는데, 모든 파일 및 디렉터리는 각자 하나의 I-node를 가지고 있습니다. I-node는 파일을 기술하며, 다음의 정보들을 포함합니다. I-node는 일반적으로 전체 디스크 공간의 1% 정도를 차지하게 됩니다.

  • 데이터 블록에서의 실제 파일 데이터 위치(주소)
  • 파일의 종류
  • 파일의 소유권(사용자, 그룹)
  • 파일의 허가권
  • 파일의 액세스 모드
  • 파일의 타임스탬프(마지막 수정일)



일반적으로 파일이 생성될 때 하나의 I-node가 생성되고 I-node 번호가 부여되는데, 이 번호는 고유한 식별 번호이며 각 파티션마다 0부터 시작하게 됩니다.

I-node는 link의 수가 0인 위치에 생성되는데 정보를 저장한 뒤에는 link를 1로 변경합니다.
이러한 I-node는 I-node 블록에 저장되어 있으며, I-node 번호화 link 수를 확인하고 싶은 경우 ls -il 명령어를 사용하면 됩니다.




앞의 68305745가 I-node 번호이며 뒤의 1은 해당 I-node를 가리키는 파일의 링크 개수를 의미합니다.
다음과 같이 hardTestFile이라는 하드링크 파일을 하나 생성하게 되면 68305745번의 I-node를 공유하며 링크 수가 1 증가한 2가 됩니다.





데이터 블록
데이터 블록은 실제 파일의 내용이 저장되는 공간입니다.
디스크에 파일이 저장될 때 데이터는 특별한 구분없이 차례대로 저장되며 데이터 블록에 쌓이게 됩니다. 이 공간에는 파일 데이터가 저장될 때 특별한 구분을 하지 않기 때문에 어떤 부분이 어느 파일인지 구분이 필요하며, 그에 대한 정보가 I-node에 담기게 되는 것입니다.


참고글
블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

,