본문 바로가기

파일 시스템의 원리: 우리가 저장하는 파일이 디스크 안에 정리되는 방법

📑 목차

    파일을 “저장했다”는 말의 진짜 의미

    컴퓨터를 사용할 때 대부분의 사람은 파일을 저장하는 일을 자주 한다. 문서를 작성하고 “저장” 버튼을 누르거나, 스마트폰에서 사진을 PC로 옮기면 하드디스크나 SSD 어딘가에 파일이 쌓인다고 생각한다. 폴더를 만들고 그 안에 파일을 넣다 보니, 마치 디스크 안에 실제로 서랍과 서류철이 있는 것처럼 느껴지기도 한다.

    그러나 실제 디스크 내부에는 폴더라는 물건이 존재하지 않는다. 대신 운영체제는 파일 시스템(file system)이라는 규칙을 이용해 수많은 0과 1을 “파일”이라는 단위로 나누고, “폴더(디렉터리)”라는 논리적 구역 안에 정리해 놓는다. 같은 디스크를 사용해도 파일 시스템 구조에 따라 속도, 안정성, 오류 발생 시 복구 난이도가 크게 달라진다.

    이 글에서는 컴퓨터를 잘 모르는 일반 성인도 이해할 수 있도록 다음과 같은 키워드를 중심으로 설명한다.

    • 파일 시스템
    • 디스크
    • 디렉터리 구조
    • 블록(클러스터)
    • 메타데이터

    먼저 파일 시스템과 디스크 구조의 기본 개념을 정리한 뒤, 실제로 파일을 저장·수정·삭제할 때 내부에서 어떤 일이 벌어지는지, 그리고 파일 시스템 원리를 알면 어떤 문제를 예방하고 해결할 수 있는지를 살펴본다. 이 내용을 이해하면 “왜 삭제했는데 용량이 바로 안 줄어들까”, “포맷을 하면 왜 파일이 사라질까” 같은 일상적인 궁금증도 논리적으로 설명할 수 있다.


    파일 시스템과 디스크 구조의 기본 개념

    1. 파일, 디렉터리, 경로: 우리가 보는 논리적 구조

    사용자가 보는 화면에서는 파일, 폴더(디렉터리), 드라이브 문자(C:, D:) 같은 개념이 등장한다. 이것은 모두 파일 시스템이 제공하는 논리적 구조이다.

    1. 파일(File)
      • 문서, 사진, 동영상, 프로그램 등 하나의 완성된 데이터를 의미한다.
      • 운영체제는 파일마다 이름, 크기, 위치, 생성 시간, 수정 시간, 권한 등의 정보를 함께 관리한다.
    2. 디렉터리(Directory) 또는 폴더
      • 여러 파일과 하위 디렉터리를 묶어 정리하기 위한 논리적 구역이다.
      • 실제 디스크 안에 물리적인 서랍이 있는 것이 아니라, “이 디렉터리에는 어떤 파일들이 있다”는 목록 정보가 저장될 뿐이다.
    3. 경로(Path)
      • 파일이 어느 디렉터리 안에 있는지 나타내는 주소이다.
      • 예) C:\Users\홍길동\Documents\보고서.docx
      • 운영체제는 이 경로를 분석하여, 어느 드라이브의, 어느 디렉터리 목록에서, 어떤 파일 항목을 찾아야 하는지 판단한다.

    사용자 입장에서 보는 “정리된 폴더 구조”는, 내부적으로는 디렉터리별로 유지되는 파일 목록과 연결 정보의 집합이라고 이해하면 된다.

     

    파일 시스템의 원리: 우리가 저장하는 파일이 디스크 안에 정리되는 방법
    책장과 서류철로 비유한 파일 시스템 디렉터리 구조 개념도

    2. 디스크의 물리적 구조: 섹터와 블록(클러스터)

    이제 논리적인 폴더 구조를 잠시 내려놓고, 디스크의 물리적 구조를 살펴본다. HDD와 SSD는 구조는 다르지만, 운영체제 관점에서는 둘 다 “연속된 저장 공간”으로 취급한다. 이 공간은 다음과 같은 단위로 나누어 관리된다.

    1. 섹터(Sector)
      • 디스크 제조사가 정해 놓은 가장 작은 물리 저장 단위이다.
      • 전통적으로 512바이트, 요즘은 4KB 섹터를 사용하는 경우가 많다.
    2. 블록(Block) 또는 클러스터(Cluster)
      • 파일 시스템이 관리하는 최소 단위이다.
      • 보통 여러 섹터를 묶어서 하나의 블록(클러스터)로 사용한다. 예를 들어 4KB, 8KB, 16KB 등이다.
      • 파일이 실제 디스크에 저장될 때는 “N번 블록”, “M번 블록”처럼 블록 번호 단위로 위치가 지정된다.

    중요한 점은,

    • 사용자가 “1바이트를 저장하고 싶다”고 요청하더라도
    • 파일 시스템은 최소 단위인 블록 단위로 공간을 할당한다는 것이다.

    예를 들어 블록 크기가 4KB인데 1KB짜리 파일을 저장하면, 나머지 3KB는 다른 파일이 사용할 수 없다. 이를 내부 단편화라고 부른다.

    3. 파일 시스템이 하는 일: 이름과 실제 위치를 연결하는 관리자

    파일 시스템(file system)은 요약하면 다음과 같은 일을 담당하는 소프트웨어 계층이다.

    1. 파일 이름과 실제 위치를 연결한다.
      • 사용자는 파일 이름과 경로만 알고 있다.
      • 파일 시스템은 그 이름에 해당하는 파일이 디스크의 몇 번 블록들에 흩어져 있는지 알고 있어야 한다.
    2. 블록 사용 현황을 관리한다.
      • 어떤 블록은 사용 중이고, 어떤 블록은 빈 공간인지 관리한다.
      • 이를 위해 비트맵, 할당 테이블(Allocation Table) 같은 구조를 사용한다.
    3. 디렉터리 구조를 유지한다.
      • 디렉터리마다 “이 디렉터리 안에 있는 파일과 하위 디렉터리 목록”을 저장한다.
      • 각 항목에는 파일 이름, 크기, 속성, 첫 번째 블록 위치 등의 메타데이터가 기록된다.
    4. 메타데이터(Metadata)를 관리한다.
      • 파일 그 자체의 내용이 아닌, 파일에 대한 정보를 메타데이터라고 한다.
      • 예) 생성/수정 시각, 접근 권한, 소유자, 특성(숨김, 시스템 파일 등)

    대표적인 파일 시스템으로는 윈도우의 NTFS, 리눅스의 ext4, macOS의 APFS 등이 있다. 각 파일 시스템은 내부 구현과 추가 기능이 다르지만,

    • 파일과 디렉터리를 구조적으로 관리하고,
    • 블록 단위로 디스크 공간을 할당·해제하며,
    • 메타데이터를 유지한다는 공통된 역할을 가진다.

    파일 시스템 동작 원리와 실제 사용 사례

    1. 파일을 저장할 때 내부에서 일어나는 일

    사용자가 워드 프로그램에서 문서를 작성한 뒤 “저장” 버튼을 눌렀다고 가정한다. 겉에서 보기에는 한 번의 동작이지만, 내부에서는 다음과 같은 순서로 일이 진행된다.

    1. 응용 프로그램 단계
      • 워드 프로그램은 작성한 문서 내용을 운영체제에 “이 경로로 파일을 저장해 달라”고 요청한다.
    2. 운영체제·파일 시스템 단계
      • 해당 경로의 디렉터리에 같은 이름의 파일이 이미 있는지 확인한다.
      • 없다면 새 파일 항목을 만들고, 있다면 덮어쓰거나 이름을 바꾸는 처리 방식을 정한다.
      • 파일 크기를 계산하여 필요한 블록 수를 판단한다.
    3. 블록 할당 단계
      • 파일 시스템은 빈 블록 목록에서 적당한 수의 블록을 찾아 할당한다.
      • 새 파일이라면 여러 블록이 연속된 위치에 있으면 좋지만, 항상 그렇게 되지는 않는다.
      • 크기가 큰 파일은 디스크 여기저기에 흩어진 블록들을 연결하여 사용할 수 있다.
    4. 데이터 기록 단계
      • 파일 내용이 실제 디스크의 해당 블록들에 기록된다.
      • SSD의 경우 내부적으로는 플래시 메모리 셀 단위의 복잡한 관리가 이루어지지만, 파일 시스템은 여전히 블록 단위로만 본다.
    5. 메타데이터 업데이트 단계
      • 디렉터리 정보에 새 파일 항목을 추가하거나 수정한다.
      • 파일 크기, 첫 번째 블록 위치, 생성/수정 시간, 속성 등을 기록한다.

    사용자 입장에서는 “저장 버튼 한 번”으로 끝나지만, 실제로는 디렉터리 갱신, 블록 할당, 데이터 기록, 메타데이터 업데이트가 연속적으로 이루어진 결과이다.

     

    응용 프로그램의 파일 저장 요청이 운영체제와 파일 시스템을 거쳐 디스크 블록에 실제로 기록되는 과정을 단계적으로 보여주는 다이어그램
    파일 저장 요청에서 디스크 블록 기록까지의 단계별 흐름도

    2. 파일 수정·삭제 시 벌어지는 일과 단편화

    파일을 수정하거나 삭제할 때도 파일 시스템이 중요한 역할을 한다.

    1. 파일 수정
      • 작은 변경이라면 기존 블록 일부만 다시 쓸 수도 있다.
      • 그러나 내용이 많이 늘어나면 추가 블록이 필요해진다.
      • 기존 블록 뒤에 바로 빈 블록이 있다면 연속해서 사용할 수 있지만, 그렇지 않다면 다른 위치의 빈 블록을 더 가져와 연결해야 한다.
      • 이 과정이 반복되면 하나의 파일이 디스크 여러 곳에 잘게 쪼개져 저장된다. 이를 외부 단편화라고 부른다.
    2. 파일 삭제
      • “삭제”를 눌렀다고 해서, 즉시 파일 내용이 모두 0으로 지워지는 것은 아니다.
      • 대부분의 파일 시스템은
        • 디렉터리에서 해당 파일 항목을 제거하거나,
        • 파일이 사용하던 블록을 “빈 블록” 상태로 표시만 해 둔다.
      • 실제 데이터는 덮어쓰기 전까지 디스크에 남아 있을 수 있다.
      • 이것이 복구 프로그램으로 일부 삭제 파일을 되살릴 수 있는 이유이기도 하다.

    단편화가 심해지면 파일 조각이 디스크 여기저기 흩어져 있어, HDD 기준으로는 헤드 이동이 많아져 속도가 떨어지는 문제가 발생한다. SSD는 기계적인 헤드가 없지만, 여전히 연속된 쓰기보다 조각난 쓰기가 관리 부담을 늘릴 수 있다는 점에서 단편화의 영향이 완전히 사라진 것은 아니다. 다만 SSD에서는 조각 모음보다 충분한 여유 공간 확보와 TRIM 지원이 더 중요하다.

    3. 포맷과 파티션: 파일 시스템을 초기화하고 나누는 방법

    디스크를 새로 사용할 때 “포맷(format)”을 하라는 안내를 보는 경우가 있다. 포맷은 크게 두 가지 수준으로 나눠 볼 수 있다.

    1. 저수준 포맷(Low-level Format)
      • 디스크 제조 단계에서 섹터를 나누고 기본 구조를 만드는 작업을 의미한다.
      • 일반 사용자가 직접 수행하는 일은 거의 없다.
    2. 고수준 포맷(High-level Format)
      • 운영체제가 디스크에 새로운 파일 시스템 구조를 만드는 작업이다.
      • 디렉터리 구조의 뼈대, 빈 블록 목록, 메타데이터 저장 영역 등을 초기화한다.
      • 기존 파일들에 대한 참조 정보가 지워지기 때문에, 사용자는 “파일이 모두 사라졌다”고 인식하게 된다.

    또한 하나의 물리 디스크를 여러 파티션(Partition)으로 나눌 수 있다.

    • 예) 하나의 SSD를 C:와 D:로 나누어 사용하는 경우
    • 각 파티션에는 독립적인 파일 시스템이 올라간다.
    • 이렇게 나누면 시스템 영역과 데이터 영역을 분리하거나, 서로 다른 운영체제를 설치하는 등의 구성이 가능하다.

    4. 파일 시스템 원리를 알면 보이는 문제 해결 포인트

    파일 시스템의 동작 원리를 이해하면, 일상적인 몇 가지 문제를 더 논리적으로 다룰 수 있다.

    1. 디스크 용량 부족 문제
      • 큰 파일을 정리하는 것뿐 아니라, 오래된 프로그램의 캐시 폴더, 임시 파일, 로그 파일 등이 실제 공간을 많이 차지할 수 있다.
      • 디렉터리별 용량을 확인하여, 어디에서 블록을 많이 사용하고 있는지 파악하는 것이 중요하다.
    2. 갑작스러운 전원 차단 후 파일 손상
      • 파일 저장 중 전원이 꺼지면, 메타데이터와 실제 데이터 블록 정보가 어긋날 위험이 있다.
      • 일부 파일 시스템은 저널링(journaling) 기능을 통해 이런 상황에서의 복구를 돕는다.
      • 사용자는 가능하면 저장 중에는 전원을 끄지 않고, 노트북이라면 배터리 상태에 주의하는 것이 좋다.
    3. “정상적으로 제거”의 의미
      • 외장 디스크나 USB 메모리를 사용할 때 “하드웨어 안전하게 제거” 기능을 쓰는 이유도 파일 시스템 때문이다.
      • 운영체제가 아직 디스크에 쓰지 못한 데이터를 캐시로 들고 있는 동안 장치를 뽑아 버리면, 파일 시스템 구조가 깨지거나 데이터 손상이 발생할 수 있다.
    4. 백업 전략의 필요성
      • 파일 시스템은 실수나 하드웨어 고장, 악성 코드에 의해 손상될 수 있다.
      • 같은 디스크 안에서의 복구는 한계가 있으므로,
        • 외장 디스크,
        • 다른 컴퓨터,
        • 클라우드 저장소 등 물리적으로 분리된 장소에 중요한 파일을 복사해 두는 것이 안전하다.

    파일 시스템을 이해하면 디스크가 “보이기” 시작한다

    이 글에서는 파일 시스템의 원리를 중심으로, 우리가 저장하는 파일이 디스크 안에 어떻게 정리되는지를 살펴보았다. 핵심 내용을 정리하면 다음과 같다.

    1. 파일 시스템은 파일 이름과 디스크 블록을 연결하는 관리자이다.
      • 사용자는 파일과 폴더만 보지만,
      • 내부적으로는 블록 단위로 데이터를 나누어 저장하고, 디렉터리와 메타데이터를 통해 이를 관리한다.
    2. 디스크는 섹터와 블록(클러스터) 단위로 나누어 관리된다.
      • 파일은 여러 블록에 나누어 저장될 수 있고, 시간이 지나면서 단편화가 발생한다.
    3. 파일 저장·수정·삭제는 디렉터리 갱신, 블록 할당/해제, 메타데이터 변경 과정의 조합이다.
      • 삭제했다고 해서 데이터가 즉시 지워지는 것은 아니며,
      • 포맷은 파일 시스템 구조를 새로 만드는 작업에 가깝다.
    4. 가까운 문제 해결에도 파일 시스템 이해가 도움이 된다.
      • 디스크 용량 부족, 파일 손상, 성능 저하, 안전한 제거, 백업 전략 등을 더 논리적으로 다룰 수 있다.

    이제 “파일을 저장한다”는 말을 단순히 “디스크에 들어간다”라고 받아들이기보다,

    • 파일 시스템이 디렉터리 구조와 블록 관리, 메타데이터 갱신을 통해
    • 디스크 안의 0과 1을 체계적으로 정리하고 있다는 관점으로 볼 수 있을 것이다.

    다음 단계에서 함께 살펴볼 만한 주제로는 예를 들어 다음과 같은 것이 있다.

    • “저널링 파일 시스템의 원리: 갑작스러운 전원 차단에도 데이터를 지키는 방법”
    • “SSD와 파일 시스템: 수명 연장을 위한 TRIM과 쓰기 최적화 기법”

    이런 내용을 이어서 공부하면, 전산학에서 중요한 축인 저장장치와 파일 시스템 설계를 더 깊이 이해하고, 실제 컴퓨터 사용과 데이터 관리에도 직접적으로 활용할 수 있을 것이다.