본문 바로가기

ufs

File System - UFS (9) 이번 글에서는 UFS의 마지막 데이터 구조체인 디렉토리 엔트리에 대해서 알아 보도록 하겠다. [디렉토리 엔트리] 디렉토리 엔트리는 파일과 디렉토리에 이름을 저장하고 해당 블록에 위치하고 있다. 디렉토리 엔트리는 inode 주소도 포함하는데 이러한 디렉토리 엔트리의 오프셋 구조는 아래와 같다. [그림 1 - 디렉토리 엔트리 오프셋 구조] - 파일 타입 : 파일이나 디렉토리의 타입을 결정 짓는 필드로 해당 필드의 들어가는 값들은 아래와 같다. [그림 2 - 파일타입 플래그 목록] 이렇게 해서 UFS의 모든 참조 모델과 데이터 구조체를 알아보았다. UFS와 Ext 파일시스템은 비슷하지만 UFS에서 조금 더 큰 필드들과 많은 비 필수 데이터가 있는 것을 알 수 있었다. 어떻게 보면 필요 없는 정보들이겠지만 이러.. 더보기
File System - UFS (8) 이번 글에서는 inode와 확장 속성에 대해서 알아보도록 하겠다. inode의 데이터 구조체는 UFS1과 UFS2가 다르기 때문에 따로 나누어 알아보도록 하겠다. [UFS1 inode] inode는 앞 글에서도 여러번 언급하였듯이 각 파일과 디렉토리의 메타데이터를 저장한다. 실린더 그룹 별 inode 수는 슈퍼블록에서 정의되며 각 실린더 그룹에는 inode 테이블이 존재한다. inode 테이블의 위치 또한 슈퍼블록에서 정의하여 준다. UFS1 에서의 inode 테이블의 시작 위치는 기준주소에 따라 모두 다른 상대적 오프셋을 가지지만 UFS2의 inode 테이블은 모두 동일한 오프셋을 가진다. 아래는 UFS1 inode 테이블의 오프셋 구조이다. [그림 1 - UFS1 inode 오프셋] * 참고 : 모드.. 더보기
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 (3) 이번 글에서는 UFS의 내용 참조 모델과 관련된 데이터들을 알아 볼 것이다. 데이터들이라고 표현하였지만, 사실 블록(조각) 하나만 존재한다. [블록] UFS에서는 파일의 내용이나 디렉토리 내용을 저장 할 때 블록에 내용을 저장한다. 그 블록은 조각이라는 단위로 더 세분화가 되고 실제적으로는 그 조각에 내용들이 저장되는 것이다. * 참고 : 블록들은 조각의 연속적인 그룹이라고 생각하면 된다. 모든 조각에는 주소가 있고 블록에도 주소가 있다. 연속적인 조각들의 첫 번째 조각 주소가 블록 주소로 지정된다. * 참고 : 조각의 주소는 0부터 시작한다. UFS의 블록 최소 크기는 4096byte이고 블록 별 조각의 최대 크기는 8byte이다. 블록이 또 다른 작은 단위인 조각으로 나뉘는 이유는 블록의 단편화를 줄.. 더보기