본문 바로가기

System

리눅스 파일 시스템 구조

리눅스 파일 시스템 구조

리눅스 파일 시스템의 구조는 부트블록(Boot block)으로 시작되며 부트 블록은 컴퓨터 시스템을 부팅하기 위한 부팅에 관련된 이미지를 갖고 있다. 리눅스 운영체제가 처음 실행되면 부트블록을 제일먼저 읽어서 리눅스를 가동한다. 부트블록이 주기억장치에 모두 올라가게 되면 리눅스 운영체제는 제일 처음 init 프로세스를 기동하게 되고, init 프로세스의 PID는 1번이 부여된다.

리눅스 파일 시스템 구조

 

  • 부트 블록 : 파일 시스템으로부터 리눅스 커널을 적재시키기 위한 프로그램이다.
  • 슈퍼 블록 : 슈퍼블록은 파일 시스템의 크기, 블록 수 등 이용 가능한 빈 블록 리스트와 빈 블록 리스트에서 그 다음 빈 블록을 가리키는 인덱스 정보가 있다. 이외에 inode 목록의 크기, 파일 시스템에 있는 빈 inode의 수와 목록, 빈 inode 목록에서 그 다음의 빈 inode의 수와 목록, 빈 블록과 빈 inode 목록들에 대한 lock 필드, 슈퍼 블록들이 수정되었는지 나타내는 flag, 파일 시스템 이름과 파일 시스템 디스크의 이름이 있다.
  • 데이터 블록 : 실제 데이터가 저장되어 있는 파일이다.
  • Inode : 파일이나 디렉터리에 대한 모든 정보를 가지고 있는 구조이다. 리눅스 커널이 현재 사용하는 자료구조를 유지하는 구조체로써 리눅스가 파일에 접근할 때는 inode 값으로 접근한다. inode 값은 일련의 숫자를 부여하여 파일을 관리한다. 리눅스에서 생성되는 모든 파일에는 inode 값이 붙게 되며 inode 값은 유일하다. 단, 링크 파일의 경우 예외가 있다. 심볼릭 링크의 경우는 inode 값이 다르지만 하드 링크의 경우 원본파일과 링크 파일의 inode 값이 일치한다. 'ls -ali'로 해당 디렉토리에 있는 모든 파일의 아이노드 값과 자세한 정보를 출력할 수 있다.
inode가 가지고 있는 정보
파일 소유자의 사용자 ID
파일 소유자의 그룹 ID
파일 크기
파일이 생성된 시간
최근 파일이 사용된 시간
최근 파일이 변경된 시간
파일이 링크된 수
접근 모드
데이터 블록 주소

맨앞의 숫자가 inode 값

 

Inode의 기능

  • 할당 및 적용 : 파일 구성 블록에 대한 물러직 위치 정보가 들어있다.
  • 파일생성 : 파일이 생성되면 해당 파일에 inode 값이 생성되면 inode 값은 inode-list에 등록된다.
  • 파일삭제 : 파일을 삭제하면 inode 값이 -1되고 inode-list에서 해당 inode가 0으로 바뀐다. 즉 파일을 삭제하면 inode 값이 0으로 바뀌는 것으로 그 자리는 새로 생성되는 파일이 차지할 수 있음을 의미한다. 최근 파일 시스템에서는 삭제시 데이터 블록까지 삭제된다고 한다.
  • 파일링크 : 파일에 링크를 생성할 경우이다. 심볼릭 링크를 생성할 경우는 원본과 다른 inode 값을 갖지만 하드링크를 생성할 경우 원본과 같은 inode 값을 갖는다.

하드 링크와 심볼릭 링크의 차이

 

Inode의 블록 관리 방법

  • inode는 데이터 블록에 접근할 때 몇 번의 포인터를 거치는지에 따라 달라진다.
  • Signle Indirect Block : inode block을 가리키며 실제 데이터 블록을 가리키는 포인터들로 구성되어 있다.
  • Double Indirect Block : 인덱스 블록이 2개로 구성된 형태이다. 첫 번째 블록은 두 번째 블록을 가리키고 두 번째 블록은 실제 데이터 블록을 가리키는 형태이다.
  • Triple Indirect Block : 인덱스 블록이 3개로 구성된 형태로 [3 2 1 실제 데이터] 순서대로 진행된다.
반응형

'System' 카테고리의 다른 글

리눅스 작업 스케줄 관리 Cron  (0) 2021.01.06
리눅스 Booting, Run level  (0) 2021.01.05
리눅스 구조  (0) 2021.01.04
CPU 스케줄링 기법  (0) 2021.01.03
프로세스 관리(Process Management)  (0) 2021.01.03