2013년 12월 30일 월요일

리눅스는 386 피시에서 가동하는 유닉스 클론 운영체제이다. 리눅스는 처음에는 미닉스(Minix) 운영체제의 확장판으로 구현되었다. 그래서 첫 번 버전은 미닉스 파일 시스템만을 지원했다.
  미닉스 파일시스템은 두 개의 심각한 약점을 갖고 있다. 즉 블록 주소가 16 비트 정수로 저장된다. 그래서 파일 시스템의 최대 크기가 64메가 바이트로 제한된다. 그리고 디렉토리 입력 항목의 크기가 고정되어 있어서 최대 파일 네임 길이가 14자이다.
  우리는 표준 리눅스 커널에 포함된 두 개의 새로운 파일 시스템을 설계 및 구현하였다. 이들 파일 시스템은 각각 ``Extended File System’’ (Ext fs) 과 ``Second Extended File System’’ (Ext2 fs) 라고 불리는데 이러한 제약을 제거하고 새로운 기능을 추가했다.
  이 문서에서 우리는 리눅스 파일 시스템의 역사를 설명한다. 우리는 간단하게 유닉스 파일 시스템에 구현되어진 기본적인 개념을 소개한다. 우리는 리눅스에서 버츄얼 파일 시스템(Virtual File System) 계층의 구현을 보여주고 EXT2 파일시스템 커널코드와 사용자 모드 도구들을 상세히 설명한다. 끝으로 리눅스와 BSD파일시스템에서 행해진 성능측정을 보여주고서 EXT2파일시스템의 현재상태와 앞으로의 방향을 보여주는 것으로 마치겠다.

  초창기에 리눅스는 미닉스 운영 체제하에서 교차 개발되었다. 새로운 파일 시스템을 디자인하는 것 보다는 두 시스템 사이에서 디스크를 공유하는게 보다 쉬웠다. 그래서 리누스 토발즈는 리눅스에 미닉스 파일 시스템 지원을 구현하기로 결정했다. 미닉스 파일 시스템은 효율적이었고 비교적 버그가 없는 소프트웨어였다.
  그러나, 미닉스 파일 시스템의 디자인상의 제약은 매우 심각했으므로 사람들은 리눅스에서 새로운 파일 시스템을 검토했고 작업을 시작했다. 새로운 파일시스템을 리눅스 커널에 추가하는 것을 쉽게 하기 위해서, 버츄얼 파일 시스템 계층(Virtual File System (VFS) layer)이 개발되었다. VFS 계층은 초기에는 Chris Provenzano 의해 씌여졌다. 그리고 나중에 리누스 토발즈에 의해 고쳐져서 리눅스 커널에 통합되었다. 이는 버츄얼 파일 시스템 설명을 참고하기 바란다.
  커널에 VFS가 통합된 후에 1992년 4월에 “Extended File System” 이라고 불리는 새로운 파일 시스템이 구현되어 Linux 0.96c 에 추가되었다. 이 새 파일 시스템은 미닉스 파일 시스템의 두 제약을 제거했다. 즉 최대 파일시스템 크기는 2 기가 바이트로 최대파일네임 길이는 255자였다. 이는 미닉스 파일 시스템에 비해 훨씬 개선된 것이나, 아직도 몇 가지 문제점이 남아있었다. 즉, 별도 억세스(separate access), 아이노드 수정 (inode modification), 데이터수정 타임스탬프(data modification timestamps )에 대한 지원이 없었다.
  파일시스템은 프리블록 및 아이노드의 트랙을 추적하기 위해 연결리스트를 사용했다. 이는 낮은 성능을 초래했다. 미 사용 블록과 아이노드를 파악하기 위해 링크드 리스트(linked lists)를 사용했고 이는 낮은 성능을 초래했다. 즉 파일시스템이 사용됨에 따라 리스트는 정렬이 되지 않으므로 파일시스템은 여기저기 흩어진다.
  이러한 문제점에 대처하기 위해 93년 1월에 두개의 새로운 파일시스템의 알파버전이 발되었다. 즉 XIA 파일시스템과 ext2 파일시스템이다. XIA 파일시스템은 미닉스 파일시스템 커널 코드에 크게 의존했고 여기에 몇 가지 기능만 개선했다. 기본적으로 긴 파일이름과 큰 파티션 및 세 타임스탬프를 지원했다. 반면 ext2 fs는 ext fs 코드에 기초를 두었으나 상당 부분을 고쳐 썼고 많은 기능을 추가했다. 또한 기능 개선을 염두에 두고 미래의 개량에 대한 여지를 남겨 두었다. 이는 The Second Extended File System에서 설명한다.
  두개의 새 파일 시스템이 발표됐을 때 그들은 기본적으로 동일한 기능을 제공했다. 간편한 디자인 때문에 XIA파일시스템이 EXT2 파일시스템보다 안정적이었다. 파일시스템이 보다 널리 사용되기 시작함에 따라 EXT2 파일시스템의 버그가 수정되었고 많은 개선과 새로운 기능이 추가되었다. 이제 EXT2 FS는 이제 매우 안정적이고 리눅스 파일 시스템의 표준이 되었다.
아래 표는 여러 파일 시스템간에 기능을 비교해준다.




Categories:

댓글 1개:

Subscribe to RSS Feed Follow me on Twitter!