ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ 기본정리 ] ext4 파일 시스템의 구조
    Technique/LINUX 2016. 5. 8. 21:37
    반응형

    리눅스의 모든 파일 시스템은 기본적으로 유닉스 운영체제에서 유래된 공통의 개념을 바탕으로 구현되었다.

    - 파일은 inode로 관리한다.

    - 디렉토리는 단순히 파일의 목록을 가지고 있는 파일일 뿐이다.

    - 특수 파일을 통해 장치에 접근할 수 있다.


    ext4 파일 시스템의 구조

    ext4 파일 시스템은 ㅍ효율적으로 디스크를 사용하기 위해 저장 장치를 논리적인 블록의 집합( 블록 그룹 ) 으로 구분한다. 일반적으로 블록은 4kb 이고 실제 크기는 시스템의 설정에 따라 달라질 수 있다. 블록 그룹의 개수는 장치의 크기를 블록 그룹의 크기로 나눈 값이다.


    블록 그룹0 : 파일 시스템의 첫 번째 블록 그룹으로 특별하게 그룹 0 태딩과 슈퍼블록, 그룹 디스크립터를 가지고 있다.

    블록 그룹a : 파일 시스텐ㅁ에서 첫번째 블록 그룹이 아닌 블록 그룹으로 그롭 0 패딩이 없지만 슈퍼블록과 그룹 디스크립터에 대한 복사본을 가지고 있다.

    블록 그룹b : 파일 시스템에서 첫 번째 블록 그룹이 아닌 블록 그룹으로 그룹 0 패딩, 슈퍼블록, 그룹 디스크립터가 없고 바로 데이터 블록 비트맵으로 시작한다.




    그룹 0 패딩

    블록 그룹 0의 첫 1024 바이트는 특별한 용도로 사용되는데 x86 부트 섹터와 부가 정보를 저장한다.


    슈퍼블록

    슈퍼블록에는 파일 시스템과 관련된 다양한 정보가 저장된다.

    - 전체 inode 의 개수

    - 전체 블록의 개수

    - 할당되지 않은 블록( free block ) 의 개수

    - 할당 되지 않은 inode( free inode ) 의 개수

    - 첫 번째 데이터 블록의 주소

    - 블록의 크기

    - 그룹당 블록의 개수

    - 마운트 시간

    - 파일 시스템의 생태

    - 그룹 디스크립터의 크기


    슈퍼블록에 문제가 생길 경우 전체 파일 시스템을 사용할 수 없게 된다. 따라서 슈퍼블록을 다른 블록그룹에 복사하고 블록 그룹0의 슈퍼블록을 읽을 수 없을 경우 복사본을 사용하여 복구한다.


    그룹 디스크립터와 GDT 예약 블록

    그룹 디스크립터도 블록 그룹 0에 있는 것으로 슈퍼블록의 다음에 위치한다.

    - 블록 비트맵의 주소

    - inode 비트맵의 주소

    - inode 테이블의 주소

    - 할당되지 않은 블록의 개수

    - 할당되지 않은 inode의 개수

    - 디렉토리의 개수

    - 블록 비트맵, inode 비트맵 체크섬


    슈퍼블록과 함께 다른 블록 그룹에 복사되어 블록 그룹 0에 문제가 있을때 이를 복구하는데 사용된다.

    GDT 예약 블록은 그룹 디스크립터의 확장을 위한 예비 공간이다.


    데이터 블록 비트맵과 inode 비트맵

    데이터 블록 비트맵은 블록 그룹에 포함된 데이터 블록의 사용 여부를 확인하는데 쓰며 inode 비트맵은 inode 테이블의 항목이 사용 중인지를 표시한다. 비트맵에서 각 데이터 블록과 inode 테이블 항목은 1비트로 표현된다.


    inode 테이블과 데이터 블록

    일반적인 유닉스 처럼 리눅스에서도 inode에 파일 정보를 저장한다. 데이터 블록에는 실제 데이터가 저장된다. 일반 파일은 데이터 블록에 실제 파일 내용을 저장하고, 디렉토리는 해당 디렉토리에 있는 파일이나 서브 디렉토리의 이름과 inode를 저장한다.


    반응형

    댓글

Designed by Tistory.