Operating System Ch20: Fast File System
Fast File System
- Unix의 기본 파일 시스템은 사실 굉장히 느리다.(어찌보면 당연한거긴 한데)
- 그래서 이를 개선하기 위해서 나온 파일시스템이 FFS
1. Concept of Fast File System
- 가장 중요한 것은 Unix FS가 디스크를 그냥 Sequece of Bytes로만 봤다면, FFS는 디스크 자체의 특징이나 성질을 고려하여 overhead(seek time)을 최소화 하는 방식으로 디자인 되었다는 것
1-1. Unix FS: Problems
- 기존의 구조에서 read를 한다고 가정하자.(inode는 찾았다고 가정하자)
- 일단 inode를 읽어서 block의 위치를 확인한다.(이때 inode는 cache 된다.)
- block을 찾아서 읽는다.
- 다음 block을 또 cache에서 찾아서 읽는다.
- 보면 알겠지만, seek time이 disk상에서 inode-block/block-block distance에 큰 영향을 받을 수 밖에 없다.
- 따라서 이 distance를 최소화 하는 것이 목적
1-2. Bitmaps
- 위의 Unix FS block structure를 잘 보면, bitmap이 빠져있다는 것을 알 수 있다.
- 다시 생각해보자. 우리는 Bitmap을 왜 썼는가?: 비어있는 data/inode block을 효율적으로 찾기 위해서(기존의 linked list로는 이런 작업이 오래 걸린다.)
- 이런 bitmap을 이용하여 가능한 연속적으로 파일을 저장해야한다.
1-3. Cylinder Groups
- 그래서 어떻게 최소화 할것인가? → 디스크 상에서의 거리를 줄인다!
- 디스크 상 거리 순서: 같은 sector -> 같은 cylinder -> 인접한 cylinder
- 따라서 우리는 인접한 cylinder 몇개를 묶어서 cylinder group이라는 명칭으로 부른다.
1-4. On-Disk Layout
1-5. Allocation Policies
1-6. Other Features