본문 바로가기

Unix File System

File System - UFS (9) 이번 글에서는 UFS의 마지막 데이터 구조체인 디렉토리 엔트리에 대해서 알아 보도록 하겠다. [디렉토리 엔트리] 디렉토리 엔트리는 파일과 디렉토리에 이름을 저장하고 해당 블록에 위치하고 있다. 디렉토리 엔트리는 inode 주소도 포함하는데 이러한 디렉토리 엔트리의 오프셋 구조는 아래와 같다. [그림 1 - 디렉토리 엔트리 오프셋 구조] - 파일 타입 : 파일이나 디렉토리의 타입을 결정 짓는 필드로 해당 필드의 들어가는 값들은 아래와 같다. [그림 2 - 파일타입 플래그 목록] 이렇게 해서 UFS의 모든 참조 모델과 데이터 구조체를 알아보았다. UFS와 Ext 파일시스템은 비슷하지만 UFS에서 조금 더 큰 필드들과 많은 비 필수 데이터가 있는 것을 알 수 있었다. 어떻게 보면 필요 없는 정보들이겠지만 이러.. 더보기
File System - UFS (7) 계속해서 UFS의 데이터 구조체들을 알아보자. [실린더 그룹 요약 영역] 실린더 그룹 요약 영역은 실린더 그룹에 대한 통계적인 정보를 저장하는 엔트리로 구성되어 있으며, 각 엔트리는 실린더 그룹에 해당한다. UFS1과 UFS2의 실린더 그룹 요약 영역 구조는 동일하며 해당 영역의 주소와 크기는 슈퍼 블록에 정의되어 있다. [그림 1 - 실린더 그룹 요약 영역 오프셋] 아래에서는 그룹 기술자에 대해서 알아 볼 것인데, UFS1과 UFS2의 그룹 기술자 구조가 달라 따로 나누어 알아보도록 하겠다. [UFS1 그룹 기술자] 그룹 기술자는 실린더 그룹에 설정 정보를 담고 있는 구조체이다. 그룹 기술자는 각 실린더 그룹에 위치하며 주소는 기준주소로부터 상대적인 주소로 슈퍼블록에서 정의된다. * 참고 : 각 실린더.. 더보기
File System - UFS (6) 이번 글부터는 UFS의 각 데이터 구조체의 오프셋 별 의미를 알아 볼 것이다. 이번 글에서는 UFS의 슈퍼블록 데이터 구조체에 대해서 알아볼 것인데 UFS1과 UFS2의 슈퍼블록 구조는 조금 차이가 있다. 아무래도 UFS2가 UFS1의 개선버전이다보니 불필요한 필드는 삭제되어 차이가 생겼다. [UFS1 슈퍼블록] UFS1의 슈퍼블록은 섹터 16에 위치하며 크기는 2048byte이다. 하지만 대부분 비 필수 데이터이고 또 값도 0이어서 히든 데이터가 숨기에 적당한 공간을 제공하기도 한다. 아래는 슈퍼 블록 데이터 구조체 오프셋 별 의미이다. [그림 1 - UFS 슈퍼블록의 오프셋] * 참고 : 기준주소란, 실린더 그룹 내에 그룹 기술자, inode 테이블, 비트맵 등이 위치할 수 있게 기준점이 되어주는 주.. 더보기
File System - UFS (5) 이번 글에서는 파일 이름 참조 모델과 파일 복구, 일관성 검사에 대해서 다루어 볼 것이다. [디렉토리 엔트리] UFS의 디렉토리 엔트리는 Ext 파일시스템과 동일하게 파일이름, inode 주소, 유형 값을 포함한다. 디렉토리 엔트리의 길이는 파일 이름 길이가 255개 문자인 파일 이름 길이를 참조하여 결정된다. 이름은 ASCII 형식으로 저장되는데 Ext 파일의 이름은 NULL로 끝나지 않는 반면 UFS 파일이름은 NULL로 끝난다. 디렉토리 엔트리의 위치는 디렉토리에 할당 된 블록이다. 파일과 디렉토리의 구분은 모드 필드로 할 수 있다. UFS도 Ext 파일시스템과 동일하게 각 엔트리의 레코드 값이 다음 엔트리 시작을 가리키고 있으며 마지막 디렉토리 엔트리의 레코드 값은 블록 마지막을 가리키고 있다. .. 더보기
File System - UFS (4) 이번 글에서는 UFS의 메타데이터 참조 모델에 해당하는 데이터들을 알아 볼 것이다. [inode] Ext 파일시스템과 마찬가지로 UFS에서도 inode는 동일한 개념을 가지며 파일과 디렉토리를 설명하는 메타데이터를 저장한다. inode는 inode 테이블이라는 곳에 위치하고 있으며 inode 테이블은 실린더 그룹에 위치하고 그 위치는 슈퍼블록이 정의하여 준다. UFS1과 UFS2의 inode 초기화 시점은 약간 다른데, UFS1 의 경우 파일시스템이 생성 될 때 모든 inode가 초기화되고 UFS2의 경우 inode가 할당 될 때 초기화가 이루어진다. * 참고 : UFS2에서 파일이나 디렉토리 할당을 위한 블록이 존재하지 않는다면(여유 블록이 없다면) inode 테이블의 여유 공간을 사용하기도 한다. U.. 더보기