본문 바로가기
사이버 보안/컴퓨터 구조

[혼공컴운] 6주차 정리2 > 파일 시스템

by Depth 2025. 8. 17.

 

💡 Chapter 15. 파일 시스템

위의 챕터를 6주차에 학습하였고, 새롭게 알게되고 어려웠던 점은 아래와 같습니다. 

 

 

 

 

◼️ 파일과 디렉터리

 

📁 파일 (File)

파일은 보조기억장치에 저장된 의미 있는 정보들의 논리적 단위로,

단순히 데이터 덩어리가 아니라, 운영체제가 체계적으로 관리하는 정보 단위

 

 

📌 파일의 구성요소

구성 요소 설명 예시
내용(Content) 실제 파일의 데이터 텍스트, 이미지, 실행 코드 등
속성(Properties) 파일과 관련된 부가 정보 크기, 권한, 생성일시 등
메타데이터(Metadata) 파일을 관리하기 위한 정보 위치, 형식, 소유자 등

 

📌주요 파일 속성들

[ Windows 11 파일시스템 > 파일 속성 ]

구분 설명
유형(Type) 확장자를 통해 힌트 제공 (.txt, .jpg, .exe 등)
크기(Size) 바이트 단위로 표현
권한(Permissions): 읽기/쓰기/실행 권한
시간 정보 생성, 수정, 마지막 접근 시간
소유자 정보 파일 생성자 및 소유자
위치 정보 물리적 저장 위치

 

 

 

 

 

📁 디렉터리 (Directory)

디렉터리는 파일들을 체계적으로 관리하기 위한 구조로, 윈도우에서는 '폴더'라고도 부른다.

디렉터리도 운영체제 관점에서는 특수한 형태의 파일이다.

내부에 포함된 파일과 디렉터리 목록 정보를 담고 있는 파일인 셈이다.

 

 

📌경로의 종류

종류 설명 예시 (Linux/Mac) 예시 (Windows)
절대 경로 루트 디렉터리부터 시작 /home/user/document.txt C:\Users\user\document.txt
상대 경로 현재 디렉터리 기준 ./docs/readme.md .\docs\readme.md

 


📌특수 경로 기호

기호 의미 설명
. 현재 디렉터리 현재 작업 중인 디렉터리
.. 상위 디렉터리 한 단계 위의 부모 디렉터리
~ 홈 디렉터리 사용자의 홈 디렉터리 (Linux/Mac)

 

cd ./project           # 현재 디렉터리의 project 폴더로 이동
cd ../other-project    # 상위 디렉터리의 other-project로 이동
cd ~/Documents         # 홈 디렉터리의 Documents로 이동

 


📌디렉터리 테이블과 엔트리

  • 디렉터리는 내부적으로 테이블 구조를 가짐
  • 한 행 = 디렉터리 엔트리 (Directory Entry)
  • 엔트리 정보
    • 항목 이름 (파일/디렉터리 이름)
    • 항목의 저장 위치 (블록 주소 등)
    • 일부 파일 시스템에서는 속성 정보까지 포함

 

[ 사용자 관점 vs OS 시스템 관점 ]

 

 

◼️파일 시스템

파티셔닝

보조기억장치를 논리적 단위로 나누는 작업으로,

하나의 물리적 드라이브를 여러 개의 가상 드라이브로 분할하는 것

 

 

📌파티셔닝을 하는 이유

  • 서로 다른 운영체제 설치 가능
  • 데이터와 시스템 영역 분리
  • 백업과 복구 용이성
  • 성능 최적화

 

 

포맷팅(Formatting)

파티션에 파일 시스템을 설정하는 과정

포맷팅 종류 설명 주체
저수준 포맷 물리적 섹터 구조 생성 제조사에서 수행
고수준 포맷 파일 시스템 설정 사용자가 수행

 

 

 

파일 할당 방법

운영체제는 파일을 블록(Block) 단위로 관리하므로,

하나의 파일이 여러 블록에 분산되어 저장될 수 있어서, 이를 효율적으로 관리하는 방법이 필요

방식 설명 장점 단점
연속 할당
(Contiguous Allocation)
파일을 연속된 블록에 저장 빠른 접근 외부 단편화 발생
연결 할당
(Linked Allocation)
블록마다 다음 블록 주소를 저장 (연결리스트) 외부 단편화 없음 임의 접근 느림, 블록 손상 시 위험
색인 할당
(Indexed Allocation)
색인 블록에 모든 블록 주소 저장 임의 접근 빠름 색인 블록 크기 제한

 

 

실제 파일 시스템 구조


📌 FAT(File Allocation Table) 시스템

  • 연결 할당 방식을 개선한 시스템
  • USB, SD 카드 등에 주로 사용
  • 시스템 구조
영역 역할
부트 섹터 파일 시스템 정보
FAT 영역 블록 연결 정보 테이블
루트 디렉터리 최상위 디렉터리 정보
데이터 영역 실제 파일 데이터

 

 

 

📌 유닉스 파일 시스템

  • 색인 할당 방식을 기반으로하며, 아이노드(inode)라는 개념을 사용
  • 아이노드(inode)의 구조
번호 내용 설명
1-12 직접 블록 파일 데이터 블록 직접 주소
13 단일 간접 블록 주소들을 담은 블록의 주소
14 이중 간접 블록 간접 블록들의 주소를 담은 블록
15 삼중 간접 블록 이중 간접 블록들의 주소

 

 

 


◼️추가 학습

파일 디스크립터(File Descriptor)

프로세스가 파일에 접근할 때 사용하는 정수값으로,

운영체제가 열린 파일들을 관리하기 위한 식별자를 의미

int fd = open("example.txt", O_RDWR);  // 파일 열기
read(fd, buffer, sizeof(buffer));      // 파일 읽기
close(fd);                             // 파일 닫기

 

 

링크(Link) 시스템

링크 종류 설명 특징
하드링크 같은 아이노드를 가리키는 추가 이름 원본 삭제해도 접근 가능
심볼릭링크 다른 파일의 경로를 담은 특수 파일 원본 삭제 시 깨진 링크
ln original.txt hardlink.txt        # 하드링크 생성
ln -s original.txt symbolic.txt     # 심볼릭링크 생성
 
 
 

파일 권한 시스템

유닉스 계열 시스템의 권한 체계

권한 의미 숫자 표현
r (read) 읽기 4
w (write) 쓰기 2
x (execute) 실행 1

 

chmod 755 script.sh    # rwxr-xr-x (소유자: 모든권한, 그룹/기타: 읽기+실행)
chown user:group file  # 소유자와 그룹 변경

 


✅ 저널링 파일 시스템

시스템 장애 시 데이터 손실을 방지하기 위해 변경 사항을 미리 로그에 기록하는 방식

 

대표적인 저널링 파일 시스템

 

  • ext3, ext4 (Linux)
  • NTFS (Windows)
  • HFS+ (macOS)

 

 

최신 파일 시스템

파일 시스템 특징 주요 기능
Btrfs Linux용 고급 파일 시스템 스냅샷, 압축, 중복 제거
ZFS Sun에서 개발 데이터 무결성, RAID 기능 내장
APFS Apple 최신 파일 시스템 SSD 최적화, 암호화

 


가상 파일 시스템(VFS)

Linux에서는 서로 다른 파일 시스템들을 통일된 인터페이스로 접근할 수 있게 해주는 추상화 계층

 

응용 프로그램
     ↓
가상 파일 시스템 (VFS)
     ↓
ext4, NTFS, FAT32, NFS 등

 

덕분에 개발자는 파일 시스템의 종류와 관계없이 동일한 시스템 호출을 사용할 수 있음.


실무에서의 파일 시스템 고려사항

성능 최적화

  1. 블록 크기 선택: 작은 파일이 많으면 작은 블록, 큰 파일이 많으면 큰 블록
  2. SSD vs HDD: SSD는 랜덤 액세스가 빠르므로 단편화 영향 적음
  3. 캐싱: 자주 사용하는 파일은 메모리에 캐시

 

백업과 복구

rsync : 증분 백업의 핵심

tar : 압축 아카이브 백업

# rsync를 이용한 증분 백업
rsync -av --delete /source/ /backup/

# tar를 이용한 아카이브 생성
tar -czf backup.tar.gz /important/data/
 

 

 

모니터링

# 디스크 사용량 확인
df -h

# 디렉터리별 용량 확인
du -sh /path/to/directory

# 파일 시스템 상태 확인
fsck /dev/sda1

 

 

 

 

📎 참고

 

댓글