파일 시스템

위키백과 ― 우리 모두의 백과사전.

컴퓨터파일 시스템파일과 그 안에 든 자료를 저장하고 찾기 쉽도록 유지 관리하는 방법이다. 파일 시스템은 하드 디스크CD-ROM과 같은 물리적 저장공간을 저장장치로 활용할 수도 있지만, NFS와 같은 파일 시스템에서는 네트워크 상에 존재하는 파일에 접근하기 위한 가상적 인터페이스인 경우도 있다.

학술적으로는, 파일 시스템은 자료를 계층적으로 저장, 탐색, 접근, 조작하기 위한 추상적 자료구조의 집합으로 정의된다.

목차

[편집] 파일 시스템의 종류

파일 시스템은 크게 디스크, 네트워크, 그리고 특수 용도의 파일 시스템으로 분류할 수 있다.

[편집] 디스크 파일 시스템

데이터 저장 장치, 특히 컴퓨터에 연결된 디스크 드라이브에 파일을 저장하기 위해 설계된 시스템이다. FAT, NTFS, HFS, ext2, ISO 9660, ODS-5, UDF, ZFS 등이 있다.

[편집] 데이터베이스 파일 시스템

데이터베이스 기반의 파일 시스템은 최근에 등장한 새로운 개념의 파일 시스템이다. 파일을 계층적 구조로 관리하지 않고 파일의 형식, 주제, 저자, 내용 등 여러가지 특성에 따라 시스템에서 자동으로 분류하여 관리하는 것이다. 따라서 쿼리 언어나 자연어 등을 통해 파일을 빠른 속도로 검색하는 것이 가능하다. Gnome VFS, BFS, WinFS 등이 있다.

[편집] 트랜잭션 기반 파일 시스템

트랜잭션 기반 파일 시스템은 파일에 일어난 이벤트나 트랜잭션을 기록하는 시스템이다. 사용자가 수행하는 작업은 여러 개의 파일의 내용을 바꿀 수 있다. 이 바뀐 내용들은 서로 연관되어 있는 경우가 많으므로 이 내용들이 논리적으로 서로 연결되어 있어야 하는 시스템에서는 이 변화들이 동시에 일어난다는 것이 보장되어야 한다. 은행 계좌에서 돈을 이체하는 경우를 예로 들어 보자. 당신이 온라인으로 돈을 이체할 때 은행 컴퓨터는 상대방의 은행 컴퓨터에 "전송" 명령을 보내고 동시에 당신의 계좌에서 같은 금액을 줄일 것이다. 그런데 이때 시스템에 우연히 사고가 일어나 전송 명령이 보내지지 않았다면 상대방의 계좌에 돈은 입금되지 않았는데 당신의 계좌에서는 돈이 사라지는 일이 일어날 수 있다. 트랜잭션 기반 시스템은 이렇게 논리적으로 동시에 수행되어야 하는 작업들을 하나의 "트랜잭션"으로 묶어 만약의 사고가 일어났을 때 양쪽에서 트랜잭션을 다시 수행하여 오류를 막는다. 또한 모든 트랜잭션은 기록으로 남아 어디서 무슨 일이 언제 수행되었는지가 기록된다. 이러한 파일 시스템은 시스템의 오류를 막기 위해 설계되었으며, 느리지만 안전한 시스템이다.

[편집] 특수 용도의 파일 시스템

유닉스와 같은 파일 중심의 운영 체제는 여러 가지 특수 용도의 파일 시스템을 사용한다. 예를 들면, 어떤 종류의 유닉스는 '/proc'이라는 파일 시스템에서 프로세스나 운영체제 여러 기능에 접근할 수 있다.

심우주 탐사선인 보이저 1호2호에는 디지털 테이프 기반의 파일 시스템이 탑재되어 있다. 카시니-하위헌스 호와 같은 현대 우주선들은 실시간 운영 체제를 위한 파일 시스템을 탑재한다. 화성 탐사선들도 실시간 운영체제를 탑재하고 있는데, 이들의 파일 시스템은 플래시 메모리를 사용한다.

[편집] 파일 시스템과 운영체제

대부분의 운영 체제파일 시스템을 갖고 있으며, 파일은 현대의 모든 운영체제의 기본적 구성요소이다. 초창기 마이크로컴퓨터 운영체제의 주 목적은 파일 관리였다. (도스는 Disk Operating System의 약자이며, 곧 디스크 운영체제라는 뜻이다.) 이러한 초창기 운영체제들은 디스크를 관리하기 위한 시스템을 따로 설계했다. 초창기 운영체제들은 내부에 설계된 단 하나의 파일 시스템만을 지원했다.

[편집] 유닉스의 파일 시스템

유닉스나 기타 유닉스 계열 운영체제들은 여러 개의 주변장치에 각각의 이름을 붙이지만, 그 주변장치에 존재하는 파일들은 전부 하나의 계층 구조 아래 관리된다. 다시 말하면, 유닉스에서는 하나의 루트 디렉토리가 있고, 운영체제에서 접근할 수 있는 모든 파일들은 전부 루트 디렉토리 아래의 어느 디렉토리에 들어 있다. 또한, 루트 디렉토리는 어떤 특정한 하드 디스크에 존재할 필요가 없고, 심지어 네트워크 상의 가상 파일 공간을 루트 디렉토리로 삼을 수도 있다.

다른 주변장치에 있는 파일에 접근하기 위해서는, 이 주변장치의 파일 시스템을 어떤 디렉토리로 놓을 것인지를 운영체제에게 알려야 한다. 이것을 파일 시스템을 마운트한다고 일컫는다. 예를 들어, 유닉스에서 CD-ROM을 읽으려면 유닉스에게 "CD-ROM의 파일 시스템을 루트 밑의 /mnt 디렉토리 밑에 나타나게 하라"고 명령을 내린다. 일반적으로 컴퓨터의 관리자만이 파일 시스템을 마운트할 수 있다.

[편집] 마이크로소프트 윈도의 파일 시스템

마이크로소프트 윈도는 초창기 운영체제(CP/M-80을 바탕으로 제작된 MS-DOS)를 바탕으로 제작되었지만, 다른 운영체제(유닉스, OS/2 등)의 파일 시스템과 사용자 인터페이스에서 많은 아이디어를 빌려왔다. 윈도는 FAT와 NTFS를 사용한다. 초창기 FAT 파일 시스템은 파일 이름의 길이에 제한이 있었고, 디스크 개수와 파티션 수에도 마찬가지로 제한이 있었다.

윈도 NT에 탑재되어 함께 출시된 NTFS는 접근 제어 리스트 기반의 권한 설정과 하드 링크, 여러 개의 파일 스트림, 쿼터 추적, 압축, 다른 파일시스템을 마운트하는 기능 등이 있다.

다른 운영체제들과는 달리 디스크나 파티션을 구분하기 위해 드라이브 글자를 사용한다. 예를 들어, C:\WINDOWS\는 글자 C로 표시되는 파티션 내의 WINDOWS라는 디렉토리임을 의미한다. C 드라이브는 운영체제가 설치된 첫번째 하드 디스크 파티션을 나타내는 글자로 많이 사용된다. 이것은 MS-DOS 시절 A와 B는 플로피 디스크 드라이브를 가리키고, C 드라이브가 하드 디스크를 가리켰기 때문이다. 이런 전통 때문에 운영체제가 설치된 파티션이 C 드라이브라고 가정하는 오래된 프로그램들이 종종 버그를 일으킨다. 네트워크 드라이브 역시 드라이브 글자로 매핑될 수 있다.

[편집] 맥 오에스 텐의 파일 시스템

맥 오에스 텐맥 오에스에서 사용하던 HFS Plus를 사용한다. HFS Plus는 많은 메타데이터를 가지며, 대소문자를 구분하지 않는 파일시스템이다. 맥 오에스 텐은 유닉스 기반 운영체제이기 때문에 HFS Plus에는 유닉스 방식의 접근 권한이 추가되었다. HFS Plus의 후기 버전에는 파일시스템의 오류를 막기 위해 저널링이 추가되었고, 디스크 조각 모음을 최적화하기 위한 여러가지 알고리즘이 추가되었다.

파일 이름은 255자까지 지을 수 있다. HFS Plus는 파일 이름을 저장하기 위해 유니코드를 사용한다. Mac OS X에서 파일 형식은 파일 이름의 확장자로 알 수도 있고, 메타데이터에 저장된 타입 코드로부터 알 수도 있다.

HFS Plus는 하드 링크, 심볼릭 링크, 그리고 alias의 세 가지 종류의 링크를 사용한다. alias는 파일이 옮겨지거나 이름이 바뀌어도 링크가 깨지지 않는다.