본문 바로가기
IT

파일 시스템 (File System)

by 비준 2022. 9. 26.

파일 시스템

파일 시스템(File System)은 컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제를 가리키는 말이다. 파일 시스템은 통상 하드 디스크나 CD-ROM 같은 실제 자료 보관 장치를 사용하여 파일의 물리적 소재를 관리하는 것을 가리키나 네트워크 프로토콜 (NFS, SMB, 9P 등)을 수행하는 클라이언트를 통하여 파일 서버 상의 자료로 접근을 제공하는 방식과 가상의 형태로서 접근 수단만이 존재하는 방식 (procfs 등)도 파일 시스템의 범위에 포함될 수 있다. 디렉터리 서비스나 레지스트리와는 의미가 조금 다르다.

 

 - 용어의 기원

컴퓨터가 출현하기 이전에 파일 시스템 ( File System)이라는 용어는 종이 문서들을 저장하고 검색하는 방식을 기술하는 데 사용되었다. 1961년 이 용어는 원래의 의미와 동시에 전산화된 기록물에 적용되었다. 1964년부터 일반적으로 사용되었다.

파일 시스템의 종류

파일 시스템은 크게 디스크, 네트워크 그리고 특수 용도의 파일 시스템을 나눌 수 있다.

 

- 디스크 파일 시스템

자료 기억 장치, 특히 컴퓨터에 연결된 디스크 드라이브에 파일을 저장하도록 설계된 시스템이다.

종류는 아래와 같다

  • 파일 할당 테이블 (FAT)
  • NTFS
  • HFS
  • APFS
  • NNFS
  • ext2
  • ext3
  • ext4
  • ISO 9660
  • ODS-5
  • UDF
  • 유닉스 파일 시스템
  • ZFS
  • ReFS

- 데이터베이스 파일 시스템

데이터베이스 기반의 파일 시스템은 최근에 등장한 새로운 개념의 파일 시스템이다. 파일을 계층 구조로 관리하지 않고 파일의 형식, 주제, 만든 이, 내용과 같은 여러 특성에 따라 시스템에서 자동으로 분류하여 관리하는 것이다. 따라서 쿼리 언어나 자연어 등으로 파일을 빠르게 찾을 수 있다.

종류는 다음과 같다.

  • 그놈 VFS
  • BFS
  • WinFS

-트랜잭션 기반 파일 시스템

트랜잭션 기반 파일 시스템은 파일에 일어난 이벤트나 트랜잭션을 기록하는 시스템이다. 사용자가 수행하는 작업은 여러 개의 파일의 내용을 바꿀 수 있다. 이 바뀐 내용들은 서로 연관이 되어 있는 경우가 많으므로 이 내용들이 논리적으로 서로 연결되어 있어야 하는 시스템에서는 이 변화들이 동시에 일어난다는 것이 보장되어야 한다. 

트랜잭션 기반 시스템은 논리적으로 동시에 수행되어야 하는 작업들을 하나의 "트랜잭션"으로 묶어 만약의 사고가 일어났을 때 양쪽에서 트랜잭션을 다시 수행하여 오류를 막는다. 또한 모든 트랜잭션은 기록으로 남아 어디서 무슨 일이 언제 수행되었는지가 기록된다. 이러한 파일 시스템은 시스템의 오류를 막기 위해 설계되었으며 느리지만 안전하다고 볼 수 있다.

 

- 특수용도의 파일 시스템

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

파일 시스템과 운영체제

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

 

- 유닉스 계열의 파일 시스템

유닉스나 다른 유닉스 계열의 운영체체들은 여러 개의 주변 장치에 각각의 이름을 붙이지만, 그 주변 장치에 존재하는 파일들은 전부 하나의 계층 구조 아래 관리된다. 다시 말하자면, 유닉스에서는 하나의 루트 디렉터리가 있고 운영체제에 접근할 수 있는 모든 파일들은 전부 루트 디렉터리 아래의 어느 디렉터리에 들어있다. 또한, 루트 디렉터리는 어떤 특정한 하드 디스크에 존재할 필요가 없고 심지어 네트워크 위 가상 파일 공간을 루트 디렉터리로 삼을 수도 있다. 다른 주변 장치에 있는 파일에 접근하려면 이 주변 장치의 파일 시스템을 어떤 디렉터리로 놓을 것인지 운영체체에 알려야 한다. 이것을 가리켜 "파일 시스템을 마운트 한다."라고 말한다. 일반적으로 컴퓨터의 관리자만이 파일 시스템을 마운트 할 수 있다.

 

- 리눅스의 파일 시스템

  • 확장 파일 시스템 (ext, ext2, ext3, ext4)
  • ZFS
  • ResierFS
  • XFS

- 솔라리스의 파일 시스템

  • ZFS
  • UFS

- 맥 OS X의 파일 시스템

맥 OS X은 맥 OS에서 쓰던 HFS를 개량한 HFS 플러스를 사용한다. 많은 메타데이터를 가지며 대소문자를 구분하지 않는다. HFS와 달리 유닉스식 접근 권한 관리 기능이 있으며 나중에는 저널링과 함께 파일 시스템 단편화 관련 여러 알고리즘이 더해졌다. 파일 이름은 255자까지 지을 수 있고 파일 이름을 저장할 때 유니코드를 쓴다. 맥 OS X에서 파일 형식은 파일 이름의 확장자로 알 수 도 있고 메타데이터에 저장된 타입 코드로부터도 알 수 있다.

 

HFS 플러스는 다음 3가지 링크를 사용한다.

  • 하드 링크
  • 심볼링 링크
  • 에일리어스 (alias) : 파일이 옮겨지거나 이름이 바뀌어도 링크가 깨지지 않는다.

2017년 공개된 mac OS  High Sierra부터는 APFS 파일 시스템을 기본으로 채택하고 있다. 저장 공간을 다른 볼륨 간에 공유하는 기능으로 솔리드 스테이트 드라이브 (SSD)에 최적화된 것이 특징이다.

 

- 마이크로소프트 원도우의 파일 시스템

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

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

 

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

'IT' 카테고리의 다른 글

스트리밍 (Streaming)  (0) 2022.09.27
스크럼 (Scrum, 애자일 개발 프로세스)  (0) 2022.09.27
데이터베이스 (DataBase, DB)  (0) 2022.09.25
인공지능 (Artificial Intelligence, AI)  (1) 2022.09.24
도커 (Docker) 소프트웨어  (0) 2022.09.23

댓글