파일시스템은 컴퓨터 운영체제에서 파일을 관리하고 저장하는 구조를 의미한다. 파일시스템은 데이터를 저장하고 검색하며, 파일과 디렉토리의 계층적 구조를 유지하는 역할을 한다. 파일시스템은 물리적 저장 장치(하드 드라이브, SSD 등)와 사용자 간의 인터페이스를 제공하여 사용자가 데이터를 손쉽게 다룰 수 있도록 돕는다.
파일시스템의 가장 기본적인 단위는 파일이다. 파일은 연관된 데이터를 하나로 묶어 놓은 단위로, 텍스트 파일, 이미지 파일, 프로그램 파일 등 다양한 형태가 있다. 파일시스템은 이러한 파일을 논리적으로 구분하고 관리한다. 파일의 속성에는 이름, 확장자, 크기, 생성 날짜, 수정 날짜 등이 포함되며, 파일시스템은 이러한 속성을 관리하여 파일에 접근하고 조작할 수 있게 한다.
디렉토리는 파일들을 논리적으로 그룹화하는 구조이다. 디렉토리는 폴더라고도 불리며, 디렉토리 안에 파일이나 다른 디렉토리를 포함할 수 있다. 이를 통해 파일의 조직적 관리가 가능하며, 사용자는 원하는 파일을 쉽게 찾을 수 있다. 디렉토리 구조는 트리 형태를 가지며, 최상위 디렉토리를 루트 디렉토리라고 한다. 루트 디렉토리 아래에 여러 서브 디렉토리가 존재하며, 이러한 구조는 파일의 체계적인 관리를 가능하게 한다.
/ (루트 디렉터리)
├── home
│ ├── user1
│ │ ├── documents
│ │ │ ├── resume.docx
│ │ │ └── project.pdf
│ │ ├── pictures
│ │ │ ├── vacation.jpg
│ │ │ └── family.png
│ │ └── music
│ │ ├── song1.mp3
│ │ └── song2.mp3
│ └── user2
│ ├── documents
│ ├── pictures
│ └── music
├── var
│ ├── log
│ │ ├── syslog
│ │ └── auth.log
│ ├── tmp
│ └── www
│ ├── index.html
│ └── about.html
└── etc
├── passwd
├── group
└── hosts
파일시스템은 파일을 어떻게 저장할까?
파일시스템은 파일을 저장할 때 블록이라는 단위로 데이터를 나누어 저장한다. 블록은 파일시스템에서 데이터를 읽고 쓰는 최소 단위로, 일반적으로 4KB 또는 8KB의 크기를 가진다. 파일이 크면 여러 블록에 걸쳐 저장되며, 파일시스템은 이러한 블록을 추적하고 관리하여 파일의 일관성을 유지한다. 블록의 크기는 파일시스템의 성능과 효율성에 영향을 미치며, 적절한 블록 크기를 선택하는 것은 중요한 설계 요소 중 하나이다.
파일시스템의 유형에는 여러 가지가 있다. 대표적인 파일시스템으로는 FAT, NTFS, EXT 등이 있다. FAT 파일시스템은 초기의 MS-DOS와 Windows에서 사용되었으며, 단순한 구조로 인해 많은 소형 저장 장치에서 사용된다. NTFS 파일시스템은 Windows의 기본 파일시스템으로, 보안, 압축, 암호화 등의 고급 기능을 제공한다. EXT 파일시스템은 Linux 운영체제에서 사용되며, 안정성과 성능을 제공한다.
FAT (File Allocation Table)
FAT 파일 시스템은 1977년 마이크로소프트에 의해 개발되었으며, MS-DOS와 초기 Windows 운영 체제에서 널리 사용되었다. FAT 파일 시스템은 단순한 구조로 인해 다양한 디지털 장치와 호환되며, 특히 USB 플래시 드라이브와 메모리 카드에서 많이 사용된다.
NTFS (New Technology File System)
NTFS 파일 시스템은 마이크로소프트에 의해 개발되어 1993년 Windows NT에서 처음 도입되었으며, 현재 대부분의 Windows 운영 체제에서 기본 파일 시스템으로 사용된다. NTFS는 FAT 파일 시스템의 한계를 극복하고, 더 나은 성능과 보안 기능을 제공한다.
EXT (Extended File System)
EXT 파일 시스템은 주로 리눅스 운영 체제에서 사용되며, 현재까지 여러 버전으로 발전해왔다. EXT 파일 시스템의 주요 버전에는 EXT2, EXT3, EXT4가 있다. 각각의 버전은 이전 버전의 한계를 극복하고, 성능과 기능을 향상시켰다
파일시스템은 어떻게 권한을 제어할까?
파일 접근 권한은 파일이나 디렉토리에 대해 누가 어떤 작업을 할 수 있는지를 결정하는 규칙이다. 이러한 규칙은 운영 체제에서 파일 시스템을 통해 관리되며, 사용자와 그룹 단위로 설정된다. 파일 접근 권한은 다음과 같은 주요 작업에 대한 권한을 포함한다:
읽기 권한 (Read): 파일의 내용을 읽을 수 있는 권한이다. 디렉토리의 경우, 디렉토리에 포함된 파일 목록을 볼 수 있는 권한을 의미한다.
쓰기 권한 (Write): 파일의 내용을 수정하거나 파일을 삭제할 수 있는 권한이다. 디렉토리의 경우, 디렉토리 내에 파일을 생성하거나 삭제할 수 있는 권한을 의미한다.
실행 권한 (Execute): 파일을 실행할 수 있는 권한이다. 디렉토리의 경우, 해당 디렉토리에 접근하여 디렉토리 안의 파일을 실행하거나 이동할 수 있는 권한을 의미한다.
파일 접근 권한은 일반적으로 사용자, 그룹, 기타 사용자로 구분되어 설정된다. 이를 통해 세분화된 접근 제어가 가능하다. 각 구성 요소는 다음과 같다:
소유자 (Owner): 파일을 생성한 사용자로, 해당 파일에 대한 모든 권한을 기본적으로 가진다. 소유자는 파일의 권한을 설정하고 변경할 수 있다.
그룹 (Group): 파일이 속한 그룹으로, 그룹에 속한 모든 사용자는 그룹에 설정된 권한을 가진다. 이를 통해 여러 사용자가 동일한 파일에 대해 공동 작업을 할 수 있다.
기타 사용자 (Others): 소유자와 그룹에 속하지 않는 모든 사용자로, 일반적으로 시스템의 나머지 모든 사용자를 의미한다. 기타 사용자에 대한 권한을 설정하여 파일의 공개 범위를 조절할 수 있다.
유닉스 및 리눅스 시스템에서는 파일 접근 권한을 rwx
형식으로 표시한다. rwx
는 각각 읽기, 쓰기, 실행 권한을 의미하며, 이를 조합하여 파일의 권한을 설정한다. 예를 들어, rwxr-xr--
는 소유자가 읽기, 쓰기, 실행 권한을 가지고, 그룹 사용자가 읽기 및 실행 권한을 가지며, 기타 사용자는 읽기 권한만 가진다는 의미이다.
파일시스템은 어떻게 데이터 무결성을 보장할까?
저널링은 파일 시스템에서 데이터 무결성을 보장하고 시스템 충돌이나 전원 장애와 같은 비정상적인 상황에서 데이터 손실을 최소화하기 위한 중요한 기술이다. 저널링 파일 시스템은 파일이나 디렉토리에 변경 사항이 발생할 때 이를 저널(로그) 파일에 먼저 기록한 후 실제 데이터를 변경함으로써 안정성을 높인다. 저널링은 시스템 복구 시간을 단축하고 데이터 일관성을 유지하는 데 중요한 역할을 한다.
저널링 파일 시스템은 데이터 변경 작업을 두 단계로 나눈다. 첫 번째 단계는 변경 사항을 저널에 기록하는 단계이고, 두 번째 단계는 실제 데이터를 변경하는 단계이다. 이러한 방식은 시스템이 갑작스럽게 중단되더라도 저널을 통해 변경 사항을 추적하고 복구할 수 있게 한다. 저널은 일반적으로 순차적인 로그 파일 형태로 유지되며, 파일 시스템의 일관성을 보장한다.
저널링 파일 시스템의 작동 과정은 다음과 같다.
저널에 기록: 파일 시스템에서 파일이나 디렉토리에 대한 변경 작업이 발생하면, 그 변경 사항을 저널에 먼저 기록한다. 이 단계에서는 변경할 데이터의 위치와 내용, 그리고 변경 작업의 종류 등이 기록된다.
데이터 변경: 저널에 기록된 후 실제 데이터 블록이 변경된다. 이 과정에서 파일 시스템은 저널의 기록을 참조하여 데이터를 일관되게 변경한다.
저널 삭제: 변경 작업이 완료되고 데이터가 안정화되면, 저널에 기록된 해당 변경 사항이 삭제된다. 이는 변경 작업이 성공적으로 완료되었음을 의미한다.
요약
파일시스템 개요: 파일시스템은 컴퓨터 운영체제에서 파일과 디렉토리를 관리하고 저장하는 구조를 말한다. 파일시스템은 물리적 저장 장치와 사용자 간의 인터페이스를 제공하여 데이터를 쉽게 다룰 수 있게 하며, 계층적 구조를 통해 파일과 디렉토리를 조직적으로 관리한다.
파일 및 디렉토리 관리: 파일시스템의 기본 단위는 파일이며, 파일은 이름, 크기, 생성 날짜 등의 속성을 가진다. 디렉토리는 파일을 논리적으로 그룹화하는 구조로, 트리 형태의 계층적 구조를 통해 조직적 관리를 가능하게 한다. 이러한 구조는 파일을 체계적으로 정리하고 쉽게 찾을 수 있게 한다.
파일시스템 유형과 데이터 무결성: 파일시스템의 유형으로는 FAT, NTFS, EXT 등이 있으며, 각 유형은 특정 운영체제와 환경에 적합한 기능을 제공한다. 데이터 무결성을 보장하기 위해 파일시스템은 저널링 기법을 사용하여 변경 사항을 먼저 저널 파일에 기록한 후 실제 데이터를 변경함으로써 안정성을 높인다.