파일 시스템의 동작 원리는 디렉터리나 파일 이름만 봐서는 알기 어렵습니다. 내부적으로는 어떻게 파일들이 저장되고, 어떻게 공유되며, 여러 파일 시스템이 동시에 동작하는지를 이해해야 전체 구조를 파악할 수 있습니다.
이번 글에서는 파일 시스템의 내부 구조 요소들인
파일 시스템, 마운팅, 파티션, 파일 공유, 가상 파일 시스템
등을 하나하나 살펴보겠습니다.
컴퓨터가 하드디스크나 USB 같은 저장 장치를 연결하면, 그 안에 있는 파일을 바로 쓸 수는 없습니다. 운영체제가 해당 장치를 '내 폴더'처럼 연결해줘야 하는데요, 이 과정을
마운트(mount)
라고 합니다.
마운트는 외부 저장 장치를 컴퓨터 안의 특정 폴더와 연결하는 일입니다.
예를 들어, USB에 그림을 저장해 두었는데, 이 USB를 컴퓨터에 꽂자마자 자동으로 열리는 "USB 폴더"가 바로 마운트된 상태입니다.
예: USB를 /media/usb 에 마운트하면 → /media/usb/사진.jpg 로 접근 가능
운영체제는 이런 마운트를 하기 위해 다음 정보를 확인합니다:
- 이 장치는 어떤 종류의 파일 시스템을 쓰고 있는가? (예: ext4, NTFS)
- 어디에 연결할까? (/media/usb 같은 폴더)
- 파티션은 어떻게 나뉘었는가?
그리고 이 설정은
/etc/fstab
이라는 파일이나
mount
명령어를 통해 자동 또는 수동으로 처리됩니다.
운영체제는 물리적인 디스크나 USB를 인식한 뒤,
파일 시스템을 마운트(mount)
하여 사용자가 접근할 수 있도록 만듭니다.
디스크는 물리적으로 하나지만, 논리적으로 나눌 수 있습니다. 이 구간을
파티션(partition)
이라고 합니다.
- 각 파티션은 독립된 파일 시스템을 가질 수 있습니다
- 각 파티션은 개별적으로 마운트되어 운영체제가 관리합니다
예: /dev/sda1 → 루트 파일 시스템
/dev/sda2 → /home 디렉터리 전용 파티션
같은 네트워크에 있는 여러 컴퓨터가 같은 파일에 접근하도록 하려면
파일 공유
가 필요합니다.
✅
대표적인 방식: NFS (Network File System) 🔗
- 한 컴퓨터의 디렉터리를 다른 컴퓨터에 마운트하여 공유함
- 사용자 입장에서는 로컬 디렉터리처럼 사용 가능
- 서버가 장애를 일으킬 경우 동기화 문제 발생 가능
예: 서버의 /export 디렉터리를 클라이언트에서 /mnt 로 마운트
→ 클라이언트는 /mnt/file.txt 로 접근 가능

서버-클라이언트 파일 공유 흐름도
학교에 영어, 한국어, 일본어를 쓰는 친구들이 있다고 상상해봅시다. 누군가가 무언가를 말하면, 각자 다른 언어로 반응하겠지요? 그런데 모두가 통역기를 하나씩 가지고 있다면, 같은 말을 듣고도 서로 이해할 수 있을 것입니다.
운영체제의
VFS(Virtual File System)
는 이런 통역기 역할을 합니다. 다양한 파일 시스템(ext4, FAT, NTFS 등)이 존재하지만, VFS는 그 차이를 숨기고
같은 방식으로 파일을 읽고 쓰게 도와줍니다
.
- 모든 파일 시스템을
하나의 언어
로 바꿔줍니다
- 응용 프로그램은 어떤 파일 시스템인지 몰라도 괜찮습니다
예: read() 라는 명령을 주면 → VFS가 적절한 파일 시스템 드라이버에게 전달
- 사용자가 "책을 꺼내주세요"라고 말하면,
- 사서(VFS)는 책이 어디에 있든 간에 적절한 책장으로 가서 꺼내옵니다
- 사서 덕분에 책이 어느 층, 어느 형식인지 몰라도 우리는 쉽게 이용할 수 있습니다

VFS 추상 계층 위에 ext4, NTFS, FAT32 등 실제 파일 시스템이 연결된 구조도
운영체제는 다양한 종류의 파일 시스템(ext4, FAT, NTFS 등)을 동시에 지원해야 합니다. 이를 가능하게 해주는 것이
가상 파일 시스템(Virtual File System)
입니다.
- 각기 다른 파일 시스템을
단일한 인터페이스
로 추상화
- 응용 프로그램은 파일 시스템의 종류를 몰라도 동일하게 동작 가능
- 실제로는 커널이
VFS layer
를 통해 파일 시스템 드라이버
에 연결함
예: ext4 드라이버가 등록되어 있으면 VFS가 해당 read/write 함수 포인터를 통해 연결
read() 호출 시, 실제 파일 시스템 종류에 따라 적절한 함수로 연결
VFS는 마치 여러 언어를 동시에 번역해주는 통역사와도 같습니다. 개발자는 어떤 파일 시스템인지 몰라도 동일한 방식으로 파일을 열고 쓸 수 있습니다.
파일 시스템은 성능을 위해 캐시를 사용합니다. 하지만 동시에
일관성(consistency)
을 유지해야 합니다.
쓰기 지연(write-back)
: 데이터를 메모리에 먼저 쓰고 디스크에는 나중에 기록함 → 디스크 접근 횟수를 줄여 성능 향상
일관성 문제
: 전원이 꺼지거나 시스템이 다운되면, 아직 디스크에 쓰지 못한 내용이 손실될 수 있음 (예: 저장되지 않은 문서가 사라지는 현상)
동기화(sync)
: 주기적으로 디스크에 강제로 기록해 일관성을 유지함
예: fsync()
시스템 콜을 사용하면 해당 파일 내용을 즉시 디스크에 반영
쓰기 지연(write-back)
: 메모리에만 먼저 쓰고 나중에 디스크에 반영
일관성 문제
: 시스템 중단 시 데이터 손실 가능
동기화(sync)
: 주기적으로 디스크에 기록해 일관성 유지
이번 글에서는 파일 시스템의 내부 구조를 구성하는 마운트, 파티션, 파일 공유, VFS, 캐싱 방식까지 핵심 개념을 예시와 함께 살펴보았습니다. 운영체제가 다양한 저장소와 파일 구조를 어떻게 통합하는지를 이해하는 데 도움이 되었기를 바랍니다.
다음 글에서는
운영체제에서의 보안
에 대해 알아보겠습니다.