파일 관리

Previous Next

TL;DR (용어 정리)



파일 관리

그렇다면 디스크에서 어떻게 정보를 찾고, 동기화 문제를 해결할 수 있을까?

이 문제를 파일이란 새로운 추상화를 통해 해결한다.

즉, 파일 시스템은 디스크에 존재하는 데이터를 저장하고 접근할 수 있는 기법을 제공한다.


1. 파일

파일이란?

☝️ 여기서 잠깐!

그럼 PC에서 사용하는 파일이란 단어는 무엇일까?

PC에서의 파일은 시스템 사용자가 이용할 수 있는 데이터의 실체를 의미한다.

그러나 사실 시스템도, 응용 프로그램도, 디스크에 저장되는 모든 단위는 파일이다.

운영체제는 다양한 저장 장치를 동일한 단위로 구분하기 위해 file이라는 단위를 사용하는 것이다.


+) 실행 파일

+) 데이터 파일

파일의 설계

위와 같은 파일의 속성, 연산, 구조 등은 운영체제마다 다르다.

파일의 속성 File Attribute

File_00
파일의 속성들은 각 파일 헤더에 기록되며, 운영체제는 파일 헤더를 파일 테이블에서 관리한다.

  • name : 확장자를 포함한 전체 이름을 의미
  • type : 실행 파일, 동영상 파일, 사진 파일 등 확장자로 구분
  • size : 파일 용량을 의미
  • time : 파일 접근 시간을 의미하며 만든 시간, 변경 시간, 최근 열어본 시간 등으로 세분화
  • location : 파일의 위치, 이름과 확장자가 같은 두 파일은 한 디렉터리에 존재할 수 없음
  • accessibility : 파일의 접근 권한을 의미
  • owner : 파일의 소유자라는 의미, 윈도우에는 거의 없지만 유닉스에서는 자주 사용됨

운영체제가 관리하는 파일 헤더 외에 데이터 파일마다 자신에게 필요한 속성을 따로 정의할 때 고유 헤더를 사용한다.

파일의 연산 File Operation

파일 자체를 변경하거나, 파일의 내용을 변경하는 작업들을 말한다.

File_01

파일의 구조 File Structure

순차 파일 구조

File_03
파일의 내용이 하나의 긴 줄로 늘어선 형태

장점

  • 모든 데이터가 순차적으로 기록되기 때문에 저장 공간 낭비가 없음
  • 구조가 단순함
  • 순서대로 데이터를 읽거나 저장할 때 매우 빠르다.

단점

  • 파일에 새로운 데이터를 삽입하거나 삭제할 때 오래 걸림
  • 특정 데이터로의 이동 시 직접 접근이 어려워 데이터 검색에 적절하지 않음

인덱스 파일 구조

File_04
인덱스 테이블을 이용해 순차 접근과 직접 접근이 가능한 형태
현대의 파일 시스템은 인덱스 파일 구조로, 파일을 저장할 땐 순차 파일 구조로, 파일에 접근할 땐 인덱스 테이블을 보고 파일에 직접 접근한다.

장점

  • 인덱스 테이블을 통해 다양한 접근이 가능
  • 많은 양의 데이터를 처리할 때 효율적

단점

  • 인덱스 테이블을 위한 추가 저장 공간이 필요
  • 인덱스 참조 시간이 추가됨

집적 파일 구조

File_05
저장하려는 데이터의 특정 값에 어떤 관계를 정의해 물리적인 주소로 바로 변환하는 파일 구조
해시 함수를 이용해 직접 접근이 가능한데 실제로 많이 쓰이진 않는다.

장점

  • 해시 함수를 이용해 주소를 변환하므로 데이터 접근이 빠르다

단점

  • 해시 함수를 찾기 어렵다
  • 해시 함수를 잘 찾아도 저장 공간이 낭비될 수 있다



2. 디렉터리

디렉터리란?

☝️ 여기서 잠깐!

디렉터리는 새로운 단위인가요? No!

디렉터리는 ‘모여있는 파일의 정보’를 담는 파일 입니다.



경로

디렉터리 구조

디렉터리의 구조

1단계 디렉터리 구조

File_06

가장 간단한 구조의 디렉터리로 각 파일은 사용자가 다르더라도 서로 유일한 이름을 가져야 한다.

파일이 많아지거나 다수의 사용자가 사용하면 심각한 제약이 따른다.

2단계 디렉터리 구조

File_07

사용자 별로 디렉터리를 만들어 관리하는 방법이다.

사용자의 이름이나 계정 번호로 색인을 하고, 각 엔트리는 사용자 파일 디렉터리를 가리킨다.

파일 참조 시 사용자의 파일 디렉터리에서만 탐색하므로 파일 이름 충돌 문제가 발생하지 않지만, 다른 사용자 파일에 접근해야 할 경우 단점이 된다.

트리 디렉터리 구조

File_08

2단계 디렉터리 구조를 확장해 다단계 트리 구조로 만든다.

사용자들이 자신의 서브 디렉터리를 만들어 파일을 구성할 수 있도록 한다.

디렉터리의 각 항목은 일반 파일인지(0) 디렉터리 파일인지(1) 항목을 추가해 구분한다.

그래프 디렉터리 구조

File_09

디렉터리들이 서브 디렉터리와 파일을 공유할 수 있도록 허용한다.

트리 구조의 디렉터리를 일반화한 방식으로 링크 라고 불리는 새로운 디렉터리 항목을 통해 파일을 공유한다.



3. 파일 시스템

파일 시스템은 디스크에 존재하는 데이터를 저장하고 접근할 수 있는 방법을 말한다.

파일 디스크립터

파일 디스크럽터란 유닉스 계열의 시스템에서 프로세스가 파일을 다룰 때 사용하는 개념으로, 프로세스에서 특정 파일에 접근할 때 사용하는 추상적인 값이다.

  • 프로세스가 실행 중에 파일을 Open하면
  • 커널은 해당 프로세스의 파일 디스크립터 숫자 중 사용하지 않는 가장 작은 값을 할당해준다.
  • 그 다음 프로세스가 열려있는 파일에 시스템 콜을 이용해서 접근할 때, 파일 디스크립터(FD)값을 이용해서 파일을 지칭할 수 있다.



블록

Layout

File

UNIX의 파일 시스템은 위와 같다.

하나씩 살펴보자.

Depth 1 - Hard Disk

File

하드 디스크는 다음으로 구성된다.

  • MBR(Master Boot Record) : 기억 장치의 첫 섹터로 부팅에 사용된다.
  • Partition table : 각 파티션의 정보가 담긴 테이블
  • Disk Partition ( Partition1, Partition2, ….) : 각 파티션은 독립적인 파일 시스템이다.



Depth 2 - Partition

File

하드 디스크 내 하나의 파티션(파일 시스템)은 다음으로 구성된다.

  • Boot block
  • Super block : 파일 시스템에서 가장 중요한 정보들
    • Magic number : 파일 시스템 타입을 식별하기 위한 정보
    • block의 수
  • Free space mgmt : bitmap or pointer list
  • I-nodes : 파일 블록의 속성과 디스크 주소를 갖고 있는 정보들 (메타데이터)
    • 파일의 이름은 디렉터리 파일 데이터 블록에 있고, 나머지 메타 데이터는 I-node에 저장된다.
    • UNIX 에서는 I-nodes 방식을 사용하지만 파일 시스템에서 파일을 어떻게 구현할 것이냐에 따라 달라진다.
  • Root dir : 최상단의 정보
  • Files and directories : 실제 데이터들



파일 시스템 내 파일 구현 (Implementing Files)

1) Contiguous Allocation

파일을 연속된 디스크 블록에 저장하는 방법

장점

단점

=> CD-ROM처럼 파일 사이즈에 변화가 없는 시스템, 또는 동영상 서버처럼 파일 변경 없이 읽기만 하는 경우에 유용하다.

2) 연결 할당 방식

File_11

파일에 속한 데이터를 연결 리스트로 관리하는 방식

장점

단점

3) 파일 테이블을 이용한 불연속 할당 (FAT)

File_12

단점

4)인덱스를 이용한 불연속 할당 (Index-node)

File_13

☝️ 여기서 잠깐!

운영체제별 사용하고 있는 파일 시스템을 한 번 살펴보자.

  • Windows : FAT(12/16/32), NTFS
  • Linux : ext(2/3/4)
  • MacOS : HFS, HFS+, APFS
  • Google : GFS (구글 사내에서 사용하기 위한 파일 시스템)


이렇듯 운영체제별로 파일 시스템이 다르기 때문에 파일 읽기/쓰기/실행이 꼬이는 것이다.


운영체제별 파일 시스템

FAT (File Allocation Table)

  • FAT에 파일의 위치를 기록하고 관리한다.
  • 저용량에 적합하고 보안성이 좋지 못하지만, 다양한 운영체제에서 지원해 호환성이 좋다.

NTFS

  • FAT을 보완하기 위해 만들어진 윈도우 계열의 파일 시스템
  • FAT이 아닌 MFT(Master File Table) 사용
  • 이에 대한 미러와 파일 로그가 유지되어 파일 복구 가능하다.
  • 대용량도 지원하고 보안과 암호화 또한 지원하지만, 다른 운영체제와 호환이 안된다.

EXT2

  • 리눅스를 위한 확장성 있고 강력한 파일 시스템
  • fsck를 이용해 파일 복구에 매우 강하다.
  • 캐시에 저장되어 있는 데이터들을 디스크로 저장하는 도중에 문제가 발생하면 파일 시스템이 손상된다. -> EXT3에선 저널링 이용해 파일 시스템 수정 전 저널에 수정 사항을 먼저 기록하는 것으로 해결

추가 정보

빈공간 리스트

Free space mgmt : 파일 시스템 내 디스크의 자유 공간을 어떻게 유지하고 관리할 것인지를 지정하는 변수

파일 복사

File Protection

Access Control

Grouping

Password

파일 시스템 백업 / 성능

(너무 딥해서 추가하지 않은 주제)



예상 질문



References