최근 수정 시각 : 2024-10-07 20:27:57

APFS

📁 파일 시스템
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px);"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -6px -1px -11px"
<colbgcolor=#f1d592><colcolor=#000>마이크로소프트 FAT NTFS ReFS
애플 HFS HFS+ APFS
리눅스 / 유닉스 ext2 ext3 ext4
Btrfs F2FS XFS ZFS
}}}}}}}}} ||

1. 개요2. 역사3. 특징4. 적용된 기기5. 문제점
5.1. 하위 호환 불가5.2. 하드디스크 단편화
6. 기타

[clearfix]

APple File System

1. 개요

Apple은 왜 APFS를 개발했나요?

HFS+와 그 시초인 HFS는 30년 이상 되었습니다. 이 파일 시스템은 파일 크기가 킬로바이트 또는 메가바이트 단위로 계산된 파일을 저장하고 사용하는 플로피 디스크 및 하드디스크 드라이브 시대에 개발되었습니다.

오늘날 많은 사람들은 수백 기가바이트가 되는 수백만 개의 파일을 빠르고, 지연속도가 낮은 플래시 드라이브에 액세스합니다. 사람들은 그 데이터를 가지고 다니며 민감한 정보를 안전하게 저장할 수 있도록 요구합니다.

Apple 파일 시스템의 역할

APFS(Apple 파일 시스템)는 암호화를 염두에 두고 설계한 전매 파일 시스템입니다. APFS는 Apple의 모든 플랫폼( iPhone, iPad, iPod touch, Mac, Apple TV Apple Watch)에서 작동합니다. 플래시/SSD 저장 장치에 최적화된 APFS는 강력한 암호화, COW(Copy-On-Write) 메타데이터, 공간 공유, 파일 및 디렉토리 복제, 스냅샷, 빠른 디렉토리 크기 조절, 원자적 안전 저장 프리미티브 및 향상된 파일 시스템 구조를 제공하며 I/O 합병을 사용하는 고유의 COW(Copy-On-Write) 설계로 데이터 신뢰성을 지키면서도 최대의 성능을 낼 수 있습니다.


APFS는 HFS+를 대체하는 Apple의 차세대 파일 시스템이다. 참고

SMB로 대체된 Apple의 네트워크 프로토콜 AFP(Apple Filing Protocol)와는 다르다. 이 포맷은 디스크의 전체를 한 개의 볼륨인 "컨테이너 디스크" 로 포맷한 후 그 컨테이너 볼륨 안에 APFS 볼륨을 생성한다. 컨테이너 안 APFS 볼륨들은 사용량에 따라 볼륨의 용량들을 동적 할당한다. 이 포맷은 전통적인 방식의 하드 디스크 드라이브에 적용된다기보다는 SSD 등의 고속 플래시 저장 장치에 쓰이는 것이 목적이다. HFS+ 볼륨을 APFS 볼륨으로 변환할 수도 있지만, 변환한 볼륨에 해당하는 디스크에 또 다른 포맷의 볼륨이 그 디스크에 있을 경우 그 볼륨들은 APFS 볼륨으로 적용되지 않으며, 컨테이너 디스크는 APFS로 변환시킨 볼륨 이외의 볼륨의 용량을 전체 디스크 용량에서 뺀 만큼의 용량으로 제한된다. macOS Mojave부터는 셋업에서 HFS+로 디스크를 포맷하여 그 볼륨에 설치한다고 하여도 터미널에서 특정 설정들을 끄지 않으면 셋업이 APFS로 볼륨을 자동으로 강제로 포맷 후 거기다가 macOS를 설치한다. 괜히 HFS로 포맷하여 놓고 설치 시간을 증가시키지 말고 그냥 깔끔하게 APFS로 포맷을 하자.

2. 역사

Apple1985년에 출시된 기존의 HFS 파일 시스템 HFS+로 개량하고 필요한 기능들을 추가하고 꾸준히 개선하여 사용하였으나, 워낙 오래된 파일 시스템이라 땜빵개량하는 과정에서 HFS+가 파편화되었고, 근본적으로 HFS는 플래시 메모리를 전제로 개발된 게 아닌 오래된 파일 시스템이어서 개량으로는 발전에 한계가 있었다.

이에 Apple은 썬 마이크로시스템즈 ZFS를 도입하여 HFS+를 대체하기로 하고 2006년경부터 이식 작업을 진행한다. 2007년 썬의 CEO는 ZFS가 Mac OS X에서 지원될 예정이라고 미리 흘리기도 했다. # 그러나 이때쯤 ZFS는 NetApp이 제기한 특허 소송에 휘말리게 되며, 이와 별개로 썬은 재정 악화로 오라클에 합병되는 신세가 된다. 이러한 상황은 Apple로 하여금 ZFS의 전면적인 도입을 망설이게 만들었다. 애플이 iCloud에 쓰일 썬의 스토리지 장비를 구매하는 대신 ZFS의 라이선스를 얻는 거래가 협의되었지만, 오라클이 썬을 인수한 후 이 거래는 2010년에 결렬되었다. 두 회사의 CEO들인 래리 엘리슨 스티브 잡스는 절친이었지만, 이 거래를 거절한 주체에 대한 소문은 둘다 있다.[1]

결국, Apple은 HFS+를 대체할 차세대 파일 시스템으로 ZFS를 도입하는 대신 완전히 새로운 파일 시스템을 자체 개발하는 방향으로 선회한다. Apple 내부에서는 적어도 2개의 파일 시스템이 더 개발되었으나 공개를 위한 문턱을 넘지 못했고 #, 2014년부터 2년간 개발된 APFS가 WWDC16에서 공개되었다.

2017년 3월 27일 iOS 10.3과 함께 모바일 기기에 출시되었으며, 9월 25일 macOS High Sierra와 함께 Mac에도 출시되었다.

3. 특징

별도의 소프트웨어 레이어를 통해 지원하는 기능들을 파일 시스템 단에서 지원하는 등 완전히 새로 설계 및 개발 된 파일 시스템이다. iOS 10.3에서 앱 실행 시간 감소, 가용 용량 증가가 확실히 체감된다.

Copy-on-write[2], 스냅샷, LVM 등등 ZFS Btrfs에 있는 기능을 일부 지원한다. 또한 둘처럼 자체 RAID는 없지만 Apple 고유의 Apple RAID를 통해 RAID에 사용할 수도 있다.

알파벳 대소문자 구분/비구분 모드가 나뉘어졌다. 대소문자를 구분하지 않는 APFS의 경우, Windows나 리눅스에서 사용되는 유니코드 정규화 C방식( Normalization Form Canonical Composition)에 더욱 호환성을 가지게 되었다.

HFS+는 암호화를 위해 나중에 추가된 Core Storage를 사용했어야 하는 반면, APFS는 암호화를 염두고 만들었기 때문에 HFS+와 비교하여 암호화된 드라이브에도 읽기/쓰기 성능이 개선되었다. 또, 파일 암호화 지원하기 때문에 iOS와 iPadOS에서는 파일 암호화를, 애플 실리콘 맥에서는 하이브리드 모델을 사용한다.[3]

4. 적용된 기기

5. 문제점

5.1. 하위 호환 불가

HFS+에서 APFS로 컨버팅하는 것은 비가역적이다. HFS+를 APFS로 변환할 수 있지만 반대로는 안 된다. iOS는 macOS보다 더 간단한 환경이라 APFS만 있는 Apple이 짠 파티션만 굴리면 되지만, iOS와 달리 macOS에선 같은 저장소에 APFS와 NTFS, exFAT, HFS+ 등등이 동시에 있을 수 있으며, 사용하던 프로그램이 APFS를 지원하지 않을 수도 있다. HFS+가 꼭 필요한 파티션을 APFS로 변환해 버렸다면, 데이터를 백업 후 다시 처음부터 포맷하는 수밖에 없다. macOS High Sierra 시절에는 Time Machine이 HFS+만을 지원해서 문제가 되었지만, 다행히 macOS Big Sur부터는 Time Machine 디바이스가 APFS로 변경되면서 이 문제는 사라졌다.

이 문제는 근본적으로 해결되기 어렵지만, 시간이 지남에 따라 신형 Mac이 보급될수록 문제는 옅어질 것으로 보인다.

5.2. 하드디스크 단편화

관련 자료
An analysis of APFS enumeration performance on rotational hard drives
USING APFS ON HDDS … AND WHY YOU MIGHT NOT WANT TO

애플에서 밝힌 바와 같이 APFS는 SSD에 최적화된 파일 시스템인 관계로 하드 디스크로는 부적절한 점이 있다. 중복 파일의 용량을 1/n으로 줄여주는 Copy-on-Write 기능과 파일 시스템 메타데이터를 파일 데이터와 함게 저장하는 방식은 SSD에서는 문제가 없으나, 하드 디스크의 경우 단편화를 유발한다. 하나의 컨테이너 볼륨 내에 여러개의 볼륨이 잔여 공간을 공유하는 형태로 있을 수 있다는 점 또한 볼륨의 단편화를 유발할 수 있다. 이는 사실상 파일 시스템 자체의 특성이라 해결할 수 없을 것으로 보인다. 터미널로 APFS에 하드디스크에 조각모음을 활성화 시킬 수 잇지만, 파일 시스템 메타데이터를 파일 데이터와 함게 저장하는 방식 때문에 그렇게 큰 효과는 없을 가능성이 크다.

따라서 대용량의 파일들을 자주 수정하며 최대 용량에 근접할 정도로 데이터를 저장하는 사용자에게는 기존의 HFS+ 규격으로 디스크를 포맷하는 것이 권장된다. 반면 문서 위주의 소용량 파일이 대부분이라면 APFS도 나쁘지 않다.
==# 해결된 문제점 #==
===# Fusion Drive의 부재 #===
Fusion Drive는 SSD와 HDD를 한 볼륨으로 합쳐서 SSD에는 자주 쓰는 파일을, HDD에 나머지를 저장해 빠른 스피드와 거대한 저장용량을 모두 잡은 드라이브이다. SSD가 캐시 역할을 하는 하이퍼 드라이브와는 다르다. 공식적으론 Fusion Drive는 APFS를 지원하지 않지만, 문제는 일부 해킨토시데스크탑 모델이 Fusion Drive를 시스템 파티션으로 사용하기 때문에 APFS로 업그레이드할 수가 없다. 터미널을 이용해 비공식적으로 Fusion Drive를 만들 수 있듯이 같은 방법으로 강제로 APFS로 포맷할 수 있긴 하지만 10.13.4부터 APFS 퓨전 드라이브에 macOS를 설치할 수 없게 막아놨다. 애초에 Fusion Drive를 APFS로 포맷할 경우 SSD 캐시 기능이 제대로 작동하지 않아 용량이 찰수록 버그가 걸리니 권장하지 않는다. 이에 비해 그냥 HDD만 쓴다면 공식적으로 APFS를 지원하며 시스템도 설치할 수 있다.

macOS 10.14 Mojave부터 퓨전 드라이브 지원이 APFS에 추가됐다.

===# Time Machine 부재 #===
하드링크를 지원하지 않아서 macOS의 핵심 기능 중 하나인 타임머신을 APFS 볼륨에 백업할 수 없었다. 타임머신은 각 스냅샷마다 첫 백업 파일의 하드링크를 걸어서 스냅샷 하나하나가 한 시스템의 백업으로 보이게 만들기 때문에 하드링크 지원이 없으면 백업 드라이브로 사용할 수 없다. Macintosh HD 등 백업이 이루어지는 시스템 파티션은 APFS이든 HFS+든 문제가 없다. 백업이 저장되는 디스크, 즉 외장하드 등이 HFS+가 아닌 APFS일 경우, 해당 디스크를 Time Machine 디스크로 사용할 수 없다. 퍼블릭 베타 때도 그랬고 지금도 그렇고, 아직 APFS 볼륨에는 아예 타임머신이 안 먹히게 되어 있다.

그래도 아예 못 쓰는 건 아니고, APFS 볼륨 내에 HFS+로 포맷된 sparsebundle 가상디스크 파일을 사용하면 된다. 이는 NAS 등의 네트워크 백업 방식과 똑같으며, 사실상 HFS+ sparsebundle 이미지만 있으면 저장된 드라이브가 어느 포맷이든 타임머신을 쓸 수 있다. 하지만 이것은 APFS만의 문제라고 볼 수 없다. 하드링크로 파일 시스템의 구조가 꼬일 수 있기 때문에[8] APFS와 마찬가지로 ReFS 같은 일부 차세대 파일 시스템은 하드링크를 지원하지 않는다. 지원한다 해도 안전성을 위해 폴더 사이에 하드링크를 걸 수 없게 하는 파일시스템도 있다. 폴더 하드링크로 작동하는 타임머신은 해당 시스템에 사용할 수 없으며 오히려 하드링크가 일으키는 문제에 더 취약하다는 단점도 있다.

macOS Big Sur Beta에서 APFS 볼륨에 대한 타임머신 백업을 지원한다. RC(Release Candinate) 버전에서도 지원되는 것으로 보아 정식 출시 버전에서 역시 지원할 것으로 보인다. https://9to5mac.com/2020/06/26/apple-apfs-encrypted-drive-support-apfs-time-machine-backups/

macOS Big Sur 정식 출시 버전에서 APFS 볼륨에 타임머신 백업이 가능한 것이 확인되었다. 현재는 아예 새로운 타임머신 볼륨을 지정할 때 HFS+인 경우 APFS로 변환하는 듯하고, Apple 공식 지원 문서에서 APFS를 권장하고 있다. https://support.apple.com/ko-kr/guide/mac-help/mh15139/11.0/mac/11.0 APFS에서 '스냅샷'이라는 기능이 새로 추가되었었는데, 타임머신 백업도 이 스냅샷 방식을 사용하도록 개선된 것으로 보인다. 드라이브 관리 설정에서 APFS 스냅샷 이력을 보면 타임머신을 통해 백업된 내용이 APFS 스냅샷으로 표시되는것이 그 증거.

6. 기타

  • macOS High Sierra로 업그레이드하면 자동으로 시동 디스크를 APFS로 변환한다. 그리고 디스크 유틸리티에서도 HFS+를 APFS로 변환할 수 있는 툴이 있다. 이는 APFS가 HFS+의 기능 +α의 구조이기 때문.[9] 물론 이 탓에 반대로는 변환할 수가 없다.


[1] 그러나 2010년은 스티브 잡스의 췌장암 상태가 심각하게 악화되어 그가 복잡하고 상세한 결정을 거의 할 수 없는 상태였다. 그렇기 때문에 이 시점에는 팀 쿡이 애플 일의 대부분을 결정했다고 봐도 된다. [2] 파일을 "복사"하면 새 데이터를 디스크에 쓰지 않고 기존 파일과 공유한다. 복사된 파일을 변경해야 데이터가 실제로 복사된다. [3] 애플문서: 암호화 및 데이터 보호 개요 [4] iPhone 5s 및 후속 기종. [5] 10.3 베타버전 공개 당시 전반적인 성능 향상이 있었다며 32bit AP 탑재 기기도 지원하는 것이 아니냐는 이야기가 있었으나 이후 버전들 중 일부의 복원용 펌웨어 파일을 뜯어본 결과 HFS+ 형식으로 되어있음이 확인 되었다. 성능이 향상된 것은 이전 iPhone 4s의 최신 펌웨어 성능 저하 문제로 집단 소송 등을 받기도 했던 Apple이 구형 기기 최적화에 좀 더 신경썼던 결과로 추정된다. [6] iPod touch(6세대) iPod touch(7세대). [7] Apple TV(4세대)|Apple TV HD 및 후속 기종. [8] 예를 들어 하드링크에 링크가 걸려서 무한 루프가 된다거나. [9] 실제로도 디스크 유틸리티에서 APFS를 만들 때 자세히 버튼을 누르면 HFS+를 만들고 그걸 APFS로 바꾸는 것을 볼 수 있다.