PromleeBlog
sitemap
aboutMe

posting thumbnail
파일 시스템 내부 구조 - 하루 10분 운영체제 15일차
Internal File System Structure - 10 Minutes of OS Day 15

📅 2025년 04월 20일

🚀

들어가기 전에 🔗

파일 시스템의 동작 원리는 디렉터리나 파일 이름만 봐서는 알기 어렵습니다. 내부적으로는 어떻게 파일들이 저장되고, 어떻게 공유되며, 여러 파일 시스템이 동시에 동작하는지를 이해해야 전체 구조를 파악할 수 있습니다.
이번 글에서는 파일 시스템의 내부 구조 요소들인
파일 시스템, 마운팅, 파티션, 파일 공유, 가상 파일 시스템
등을 하나하나 살펴보겠습니다.

🚀

파일 시스템과 마운팅 🔗

컴퓨터가 하드디스크나 USB 같은 저장 장치를 연결하면, 그 안에 있는 파일을 바로 쓸 수는 없습니다. 운영체제가 해당 장치를 '내 폴더'처럼 연결해줘야 하는데요, 이 과정을
마운트(mount)
라고 합니다.

마운트란? 🔗

마운트는 외부 저장 장치를 컴퓨터 안의 특정 폴더와 연결하는 일입니다.
예를 들어, USB에 그림을 저장해 두었는데, 이 USB를 컴퓨터에 꽂자마자 자동으로 열리는 "USB 폴더"가 바로 마운트된 상태입니다.
예: USB를 /media/usb 에 마운트하면 → /media/usb/사진.jpg 로 접근 가능
운영체제는 이런 마운트를 하기 위해 다음 정보를 확인합니다:
그리고 이 설정은 /etc/fstab이라는 파일이나 mount 명령어를 통해 자동 또는 수동으로 처리됩니다.
운영체제는 물리적인 디스크나 USB를 인식한 뒤,
파일 시스템을 마운트(mount)
하여 사용자가 접근할 수 있도록 만듭니다.

🚀

파티션과 마운트 포인트 🔗

디스크는 물리적으로 하나지만, 논리적으로 나눌 수 있습니다. 이 구간을
파티션(partition)
이라고 합니다.
예: /dev/sda1 → 루트 파일 시스템
    /dev/sda2 → /home 디렉터리 전용 파티션

🚀

파일 공유와 네트워크 파일 시스템 🔗

같은 네트워크에 있는 여러 컴퓨터가 같은 파일에 접근하도록 하려면
파일 공유
가 필요합니다.

대표적인 방식: NFS (Network File System) 🔗

예: 서버의 /export 디렉터리를 클라이언트에서 /mnt 로 마운트
→ 클라이언트는 /mnt/file.txt 로 접근 가능
서버-클라이언트 파일 공유 흐름도
서버-클라이언트 파일 공유 흐름도

🚀

가상 파일 시스템 (VFS) 🔗

학교에 영어, 한국어, 일본어를 쓰는 친구들이 있다고 상상해봅시다. 누군가가 무언가를 말하면, 각자 다른 언어로 반응하겠지요? 그런데 모두가 통역기를 하나씩 가지고 있다면, 같은 말을 듣고도 서로 이해할 수 있을 것입니다.
운영체제의
VFS(Virtual File System)
는 이런 통역기 역할을 합니다. 다양한 파일 시스템(ext4, FAT, NTFS 등)이 존재하지만, VFS는 그 차이를 숨기고
같은 방식으로 파일을 읽고 쓰게 도와줍니다
.

VFS의 역할 🔗

예: read() 라는 명령을 주면 → VFS가 적절한 파일 시스템 드라이버에게 전달

예시: 마치 도서관 사서처럼 🔗

  1. 사용자가 "책을 꺼내주세요"라고 말하면,
  2. 사서(VFS)는 책이 어디에 있든 간에 적절한 책장으로 가서 꺼내옵니다
  3. 사서 덕분에 책이 어느 층, 어느 형식인지 몰라도 우리는 쉽게 이용할 수 있습니다
VFS 추상 계층 위에 ext4, NTFS, FAT32 등 실제 파일 시스템이 연결된 구조도
VFS 추상 계층 위에 ext4, NTFS, FAT32 등 실제 파일 시스템이 연결된 구조도
운영체제는 다양한 종류의 파일 시스템(ext4, FAT, NTFS 등)을 동시에 지원해야 합니다. 이를 가능하게 해주는 것이
가상 파일 시스템(Virtual File System)
입니다.

VFS의 역할 🔗

예: ext4 드라이버가 등록되어 있으면 VFS가 해당 read/write 함수 포인터를 통해 연결
   read() 호출 시, 실제 파일 시스템 종류에 따라 적절한 함수로 연결
VFS는 마치 여러 언어를 동시에 번역해주는 통역사와도 같습니다. 개발자는 어떤 파일 시스템인지 몰라도 동일한 방식으로 파일을 열고 쓸 수 있습니다.

🚀

파일 일관성과 캐싱 🔗

파일 시스템은 성능을 위해 캐시를 사용합니다. 하지만 동시에
일관성(consistency)
을 유지해야 합니다.
예: fsync() 시스템 콜을 사용하면 해당 파일 내용을 즉시 디스크에 반영

🚀

요약 🔗

이번 글에서는 파일 시스템의 내부 구조를 구성하는 마운트, 파티션, 파일 공유, VFS, 캐싱 방식까지 핵심 개념을 예시와 함께 살펴보았습니다. 운영체제가 다양한 저장소와 파일 구조를 어떻게 통합하는지를 이해하는 데 도움이 되었기를 바랍니다.
다음 글에서는
운영체제에서의 보안
에 대해 알아보겠습니다.

참고 🔗