macOS

Mac OS File System APFS

Daesiker 2021. 2. 3. 16:10
반응형
출처 

http://drmola.com/tech/50912

1. 개요

 

 

애플의 파일시스템은 WWDC 2016에서 완전히 바뀌었다. 이 때 애플 OS의 정식 명칭을 OS X에서 macOS로 변경하면서 Siera가 등장하였다. 이 때 가장 크게 변화한게 파일시스템인데 기존에는 원래 있던 파일시스템인 HFS를 개량하여 만든 HFS+를 사용하였지만 처음부터 애플에서 설계한 Apple File System(APFS)로 바꾼 것이다. 이것을 통해 어떤 게 변화하였는지 알아보고 Windows 파일 시스템과 어떠한 차이점이 있는지 알아볼 것이다.

 


2. APFS가 만들어진 이유

 

HFS는 근본 자체가 플로피 디스크와 하드디스크를 주로 사용하는 환경에 맞춰져 있어서 현 애플 제품의 환경인 플래시 기반의 보조저장장치를 사용하는 환경에는 적합하지 않다. 그래서 애플은 HFS 자체를 개량해서, 소프트웨어 레이어를 추가함으로써 필요한 기능들을 추가하고 있다. IOS에는 per-file crypto HFS+를 사용해서 파일 단위의 암호화 기능을 구현하고 있고 macOS에서는 파일시스템과 운영체제 사이에 하나의 소프트웨어 레이어를 추가하여 디스크 암호화 기능을 수행하는 파일볼트 기능이 있다.

이런 HFS의 개량형 들의 기능을 모두 통합한 새로운 파일 시스템을 제작하면 OS 구분 없이 모든 제품에서 단일 파일 시스템을 사용할 수 있다. 이렇게 되면 각 제품마다 사용하던 파일 시스템의 장점들을 모든 제품에서 누릴 수 있고 여러 개의 파일 시스템을 유지, 보수하는 데 드는 노력을 줄일 수 있다. 또한 소프트웨어 레이어를 통해 지원하는 기능들을 파일시스템 자체에서 지원함으로써 오버헤드가 줄어든다.

그래서 만들어진 파일 시스템이 Apple File System(APFS)이다.

 


3. APFS 기술적 변화

 

—플래시 기반 저장장치에 최적화된 파일시스템

 

—비동기식 TRIM을 지원

APFS에서는 파일을 삭제할 때 그 파일을 지정하고 있는 메타데이터만을 수정한다. 파일의 내용은 실제로는 지워지지 않은 상태로 디스크 상에 존재하고, 그 영역에 다른 파일이 쓰여질 때 덮어씌워지는 방식으로 기록된다. 하지만 이런식으로 의미없는 데이터들이 쌓이게 되면 다른 데이터가 들어오는 시점에 이 영역을 초기화하는데 긴 시간이 소요될 수 있다. 그래서 사용하는 기능이 TRIM으로 메타데이터가 변경되어 더 이상 의미가 없어진 데이터를 실제로 삭제해 주는 기능이다. APFS의 TRIM은 메타데이터의 변경이 감지된 시점에서 비동기적으로 TRIM 명령을 실행하는 방식으로 더 안정적으로 저장장치를 유지할 수 있도록 해준다.

 

— Copy-On-Write

복사된 파일의 처리에 대한 정책이다. 기존의 파일 시스템에서는 복사 명령이 내려짐녀 그 즉시 파일의 물리적인 복제본이 형성되고 쓰기 동작이 일어난다. 이후 파일의 일부가 수저오디면 그 수정된 부분에 대해 다시 쓰기 동작이 발생한다. 하지만 APFS에서는 최초 파일 복사 명령이 내려졌을 때 그 파일을 실제로 복사하지 않고 복제된 파일에 수정이 일어난 시점에서 쓰기 동작이 발생한다. 기존 파일시스템에서 2번의 쓰기 동작이 발생할 때 1번의 쓰기 동작이 일어나므로 성능상으로 이득을 주며 플래시 메모리 기반의 저장장치의 단점을 보정해줄 수 있다.

 

— 64bit 아이노드 지원

아이노드는 유닉스 계통의 파일시스템에서 사용하는 자료구조로 파일마다 한 개의 아이노드를 가지고 있다. 아이노드에는 각 파일의 소유자 그룹, 접근모드, 파일 형태, 식별번호 등 파일에 관한 정보를 포함하고 있다. 기존 32비트 아이노드에서는 볼륨 하나에 40억개의 파일을 담을 수 있는데 64비트는 볼륨당 900경개 이상의 파일을 저장할 수 있어 파일의 타임스탬프를 초단위에서 나노초 단위로 기록 가능해졌다.

 

 


APFS 기능

— Space sharing

파티션이 물리적으로 공간을 차지하는 것이 아니라 논리적으로 차지하고 있어 형태의 이점을 얻을 수 있게 해준다. APFS는 파티션의 공간을 늘리거나 줄일 때 파티션을 다시할 필요없이 원하는 파티션의 크기를 늘리고 줄일 수 있다.

 

—Cloning files and directories

Copy-On-Write를 기반으로 만들어진 기능이다. 파일이 복제되면 메타데이터만 변경하고 기존의 파일을 그대로 지정한다. 그리고 복제본에서 일부가 수정되면 수정된 부분만 디스크에 기록되고 수정되지 않은 부분은 기존의 파일 데이터를 가리키게 되므로 파일의 용량이 적어진다.

 

—Snapshots

스냅샷은 특정 볼륨에 대한 읽기전용 인스턴스이다. 스냅샷은 한 시점의 데이터를 지정하는 메타데이터의 역할을 한다. 스냅샷이 지정하고 있는 파일의 일부가 변경된다면, 원본 데이터는 변경되지 않고, 변경된 부분에 대해서만 디스크의 다른 공간에 데이터를 사용한다. 이런 방식으로 운영체제나 응용 프로그램은 많은 용량 사용없이 특정 시점으로 파일을 되돌리는 기능을 수행할 수 있다.

 

— Fast Directory Sizing

기존의 HFS 파일 시스템은 사용자가 용량을 원할 때마다 용량을 새로 계산하지만 APFS는 각 디렉토리 용량정보를 항상 기록하고 있어서 용량정보를 보여주기만 한다.

 

— Atomic safe-save primitives

Atomic은 특정 동작이 '원자적'으로 일어난다는 것이다. 이 용어는 원자의 이러한 특징에 착안한 용어로 특정 동작이 동시에 일어남을 의미한다. 파일이 수정되면 원래 위치에 있던 파일을 제거하는 동작과 임시 파일을 위치로 옮기는 명령이 동시에 수행하면서 PC의 전원이 차단되도 정보가 유실되지 않는다.

기존의 HFS+은 단순한 파일에 대해서 원자적으로 안정성을 보장하고 있지만 macOS의 번들에 대해서는 POSIX 호환 파일 시스템의 한계로 원자적으로 안정성을 보장하지 못했다.

번들이란 프로그램에 필요한 그림, 정보 등 각종 파일들이 디렉토리로 구성되어 있는 공간이다. APFS는 번들에 대해 원자적인 동작을 수행할 수 있도록 도와줌으로써 파일 시스템이 파일을 좀 더 안정적으로 관리할 수 있게 되었다.

 

—암호화

APJS 컨테이너 속에 있는 볼륨은 3가지의 암호화 방식을 선택할 수 있다.

  1. 볼륨을 암호화하지 않는 단계
  1. 볼륨당 하나의 키를 이용해 암호화(기존의 파워볼트방식)
  1. 메타데이터와 각각의 파일 데이터를 서로 다른키로 암호화

강력한 암호화를 적용하면 암, 복호화 과정이 복잡해지고 성능저하를 유발한다. 이런 성능저하를 최소화하기 위해 Space Sharing, 여러개의 파일시스템을 통합하는 과정을 통해 만든 APFS가 성능 저하를 최소한으로 막아준다.

 

 

 

 

반응형

'macOS' 카테고리의 다른 글

macOS Terminal 커스텀  (0) 2021.03.04
VSCode 설치 및 환경 꾸미기(Extension 추천)  (6) 2021.03.03
Mac OS macFUSE, osxfuse 사용법  (1) 2021.02.05
macOS APFS 구조  (0) 2021.02.04
OS 파일시스템(File System)  (0) 2021.02.03