본문 바로가기

추천팁/시에라

그림으로 보는 '애플 파일 시스템(APFS)'의 주요 장점과 볼륨 생성 방법

※ 이 글은 <애플의 새로운 파일 시스템, APFS의 모든 것>에 엮인 글입니다.

6월 13일에 개최된 WWDC 16에서 애플은 새로운 '애플 파일 시스템(Apple File System)', 줄여서 'APFS'를 깜짝 공개한 바 있습니다. APFS는 30년 가까이 맥 운영체제의 파일 시스템이었던 HFS+를 대체할 차세대 파일 시스템으로, macOS뿐 아니라 iOS와 watchOS, tvOS 등 애플의 모든 운영체제에서 광범위하게 쓰일 예정입니다.

앞서 백투더맥 필진인 이진협 님이 APFS가 등장하게 된 배경과 특징을 상세하게 풀어주는 장문의 포스트를 게재했는데요. 일반 독자들이 접하기 어려운 기술적인 원리를 친절하고 자세히 알려줌으로써 전문성과 대중성을 겸비하지 않았나 싶습니다.

그런데 설명만 들어서는 확실히 감이 잘 오지 않는 분도 계실 것 같아 사진과 짧은 설명으로 사용자가 당장 체험할 수 있는 장점을 소개해 드리려 합니다.

파티션? 이젠 APFS의 볼륨 : Space Sharing

"...기존의 파티션에서는 한 파티션에 남는 공간이 있고 다른 파티션이 가득 차 있더라도 용량을 즉각 조정하기 어려웠다. 이런 문제를 해결하기 위해 APFS은 공간 공유(Space Sharing)이라는 기법을 사용한다. 볼륨에 여유 공간이 부족해지면 각 볼륨은 별도의 파티션 없이 자신의 크기를 늘이고 그래도 부족할 경우 다른 볼륨이 차지하는 여유공간 역시 받아올 수 있을 정도로 유연하다. 당연히 각 볼륨이 남은 여유 공간을 보고하는 방식 역시 이전과 확연히 달라졌다."

- 애플의 새로운 파일 시스템, APFS의 모든 것

위의 스크린샷이 이러한 원리를 잘 나타내고 있습니다.

스크린샷은 전체 용량이 2TB인 외장 디스크에 APFS 컨테이너를 만들고, 그 안에 test1과 test2라는 이름으로 APFS 볼륨 2개를 생성했을 때의 저장 공간 정보입니다. 볼륨을 생성할 때 용량을 지정할 수도 있지만, 그렇지 않은 경우 위 사진과 같이 볼륨이 컨테이너의 용량을 모두 활용하며, 볼륨이 하나 이상인 경우 컨테이너 전체 용량을 공유하는 것을 볼 수 있습니다.

당연히 전체 공간뿐 아니라 여유 공간도 두 볼륨 사이에 연동됩니다.

예를 들어, 위 스크린샷과 같이 test1 볼륨에 10GB 가량의 파일을 저장하면 test1 볼륨의 여유 공간뿐 아니라 텅 빈 test2 볼륨의 여유 공간까지 같이 줄어듭니다. (위 그림) 두 볼륨이 공유하는 컨테이너의 여유 공간이 test 1 볼륨에 있는 파일에 의해 줄어들기 때문입니다. 즉, 이전과 다르게 볼륨(파티션)을 생성할 때 용량을 얼마나 할당할 것인지 크게 신경 쓸 필요가 없어졌다고 할 수 있습니다. 물론 필요나 목적에 따라 APFS 볼륨을 생성하는 단계에서 최종 용량을 미리 할당하는 것도 가능합니다.

복제본을 다루는 APFS의 방식 : Cloning Files & Directories

"APFS 파일 시스템은 'Copy-On-Write' 방식으로 작동한다. 파일 복사 명령이 내려졌을 때 그 파일을 실제로 복사하지 않는다. 하지만 사용자가 보기에는 그 파일이 복제된 것으로 나타난다. 실제 쓰기 동작은 그 복제된 파일에 수정이 일어난 시점에서 발생한다. 단지 파일이 복제되기만 했을 시점에는 당연히 원본 파일과 복제본 파일의 내용에 아무런 차이가 없기 때문에 이런 방식은 논리적으로 아무런 문제가 없다...

...이는 성능상에서 이득을 줄 뿐만 아니라 쓰기 동작을 줄임으로써 플래시 메모리 기반의 저장장치의 단점을 파일 시스템 단위에서 보정해 줄 수 있을 것이다."

위의 움직이는 그림은 APFS 볼륨에서 용량이 5GB인 파일을 복사하는 모습입니다.

실제로 복사가 이뤄지는 것이 아니라 겉으로만 복제본이 생성된 것처럼 보이는 방식이므로 아무리 복제본을 많이 만들어도 추가적인 공간을 거의 차지하지 않습니다. APFS가 아니라 HFS+나 NTFS 같은 파일 시스템이었다면 원본 1개와 복제본 7개가 40GB를 차지했을 텐데 APFS에서는 5GB에서 불과 몇백KB 밖에 늘지 않습니다. 더불어 복사하는 파일의 용량이 아무리 크더라도 순간적으로 복제본이 생성되는 것을 볼 수 있습니다. 기존의 HFS+ 방식으로 포맷한 드라이브에선 같은 용량의 파일을 복사하는 데 몇 분은 족히 걸린다는 걸 떠올리면 실로 엄청난 변화라고 할 수 있습니다.

아울러 여러 폴더에 동일한 파일이 저장되어 있거나, 실수나 착오로 인터넷에서 다운로드한 파일을 다시 내려받는 경우가 있는데, 용량을 추가로 차지하지 않으므로 중복 파일을 삭제할 필요가 크게 줄어들 것으로 보입니다. 또 중복 파일 삭제 프로그램과도 안녕을 고하게 될 지도 모르겠습니다.

"(복제본의) 내용은 새로 복제된 디스크의 어딘가를 가리키는 것이 아니라 기존의 파일을 그대로 지정하고 있을 것이다. 이 때 파일의 일부가 수정되면 'Copy-on-Write' 정책에 따라 디스크의 빈 공간에 복제본을 기록할 것이다. 이 때 Cloning files and directories 기능이 작동할 경우, 전체 복제본이 디스크에 기록되는 것이 아니라 수정된 파일만 디스크에 기록되고 (수정되지 않은 나머지 복제본은) 여전히 기존의 파일 데이터를 가리키고 있을 것이다."

이것도 예시로 살펴보겠습니다. APFS로 구성한 'test1' 볼륨에 60MB짜리 문서 파일이 저장되어 있습니다. ▼

그리고 이 문서를 복사해 4개의 복제본을 만들었습니다. 원본뿐 아니라 모든 복제본이 저장장치의 특정 데이터 블록을 가리키는 '껍데기'일 뿐이므로 복제본을 여러 개 만든다고 해서 여유 공간을 추가로 점유하지 않습니다. ▼

그러다 4개의 복제본 가운데 하나를 수정하면, 해당 복제본에 해당하는 용량(60M) 만큼 저장장치의 여유 공간이 줄어듭니다. (나머지 복제본은 아무런 수정이 가해지지 않았고 여전히 원본과 동일한 상태입니다.) 복제본을 편집할 때만 '실제로' 복사가 이뤄지므로 파일을 디스크에 쓰는 빈도가 감소하면서 성능 저하를 최소화할 수 있고, 여유 공간 확보에도 도움이 되니 그야말로 1석 2조입니다. ▼

더 이상 기다림은 그만 : Fast Directory Sizing

빠른 디렉토리 용량 산정 기능은 그림만 봐도 바로 이해가 되실 겁니다.


* HFS+ 파일 시스템에서 폴더의 용량을 계산하는 모습

"현재의 HFS+ 파일 시스템은 사용자가 용량을 원할 때마다 용량을 새로 계산한다. 따라서 복잡한 계층 구조를 가진 디렉토리의 경우 계층별로 접근해 그 용량을 계산해 나와야 하기 때문에 최종 용량 계산까지 긴 시간이 소요된다. (위 그림)"


* APFS 파일 시스템에서 폴더의 용량을 계산하는 모습

"하지만 APFS 볼륨에선 각 디렉토리가 용량 정보를 항상 기록하고 있다. 즉, 사용자가 그 디렉토리의 용량을 요구하면 새로 용량을 계산하는 것이 아니라 자신이 갖고 있는 용량 정보를 보여주기만 하는 것이다. 당연히 훨씬 빠르고, 용량을 여러 번 확인하는 경우 전체 컴퓨터가 계산하는 정보를 줄일 수 있는 이점을 가지고 있다. (위 그림)"

덧붙이는 말

지금까지 사용자가 APFS을 통해 누릴 수 있는 성능 상의 몇 가지 장점을 살펴봤습니다.

이 외에도 APFS는 타임머신에서 사용하는 하드 링크보다 훨씬 진보된 '스냅샷' 기능을 제공하며, 파일을 삭제하거나 여유 공간을 사용할 때만 데이터 블록을 정리하는 비동기 TRIM, 3가지 유형의 강력한 암호화 기능, 정전이나 오류으로 데이터 손상을 막는 고유한 파일 보호 체계를 갖추고 있습니다. 64비트 기반의 아이노드나 나노초 단위로 기록되는 타임스탬프 같은 기능은 당장은 실효성이 떨어지더라도 먼 미래를 미리 준비하는 차원에서 바라보면 될 듯합니다.

무엇보다 중요한 건 APFS가 언제 정식으로 지원되는지 여부일 텐데요. APFS는 올가을에 출시될 macOS 시에라부터 부분적으로 지원될 예정이며 차기 운영체제나 차차기 운영체제에서 확실히 자리잡을 예정입니다. 하지만 당장 지금도 macOS 시에라 개발자 프리뷰 버전을 통해 APFS 볼륨을 구성해 볼 수 있습니다.

어디까지나 개발이 한창 진행 중인 파일 시스템이라 아직까지 안정성이 떨어지고 애플이 발표한 내용 가운데 아직 구현되지 않은 기능도 많이 남아 있습니다. 특히 시동 디스크로 사용할 수 없어서 운영체제를 설치하지 못하며, SSD와 HDD가 하나로 묶인 퓨전드라이브에서 APFS 볼륨을 구성하는 것도 불가능합니다. 또 APFS 볼륨은 타임머신 백업 드라이브로도 아직은 이용할 수 없습니다.

따라서 일상적인 용도로 APFS를 활용하기에는 무리가 있고, 특히 중요한 파일을 저장하는 용도로는 전혀 적합하지 않습니다. 애플에 따르면 앞으로 1년 가량 테스트를 진행할 예정이라고 하는데요. 나중에 HFS+를 바로 대체하게 될지, 아니면 선택사항으로 제공할지 정해지지 않았고, 시에라 베타 버전에서 생성한 APFS 볼륨을 차후에 나올 정식 버전에서 그대로 사용할 수 있을지 여부도 아직은 불분명합니다. 테스트가 진행됨에 따라 점차 신뢰성을 키우고 부족한 부분을 다듬어 나가겠지만, 지금은 말 그대로 '맛보기' 수준입니다.

APFS를 미리 체험해 보실 분은 이 같은 부분을 충분히 숙지하시기 바랍니다.

아래는 macOS 시에라 베타 버전에서 APFS 볼륨을 생성하는 방법입니다. 아직 APFS를 생성하고 관리하는 UI가 준비되지 않아서 터미널 명령어를 사용해야 하는데요. macOS 시에라 정식 버전에선 다른 파일 시스템(HFS+, FAT32...)과 마찬가지로 '디스크 유틸리티'를 통해 APFS 볼륨을 생성하고 관리할 수 있을 것으로 예상됩니다.

macOS Sierra에서 APFS 볼륨 생성하기

1. 응용 프로그램 > 유틸리티 폴더에 있는 '터미널'을 실행합니다.

2. 터미널에 'diskutil list' 명령어를 입력하면 맥에 설치되거나 연결된 모든 저장장치 정보가 표시됩니다. (사용자 환경에 따라 볼륨 분할 상태나 디스크 번호 등의 일부 정보가 다르게 나타날 수 있습니다.) 예시에선 USB 외장 드라이브에 APFS 볼륨을 구성해 볼 텐데요. 제 환경에선 USB 외장 드라이브의 식별자는 'disk3'입니다. ▼

3. USB 외장 드라이브에 'test1'이라는 이름을 가진 첫 번째 APFS 볼륨을 만들어 보겠습니다. 터미널에 다음과 같이 명령어를 입력하면 Apple_APFS 유형의 새로운 볼륨이 생성됩니다. ▼

diskutil partitionDisk disk3 gpt apfs test1 0b

4. 이제 다음과 같은 명령어를 입력하면 APFS 컨테이너(disk3s2) 안에 APFS 볼륨(disk3s2s1)이 생성된 것을 볼 수 있습니다. (이전 포스트를 읽으신 분은 컨테이너와 볼륨의 차이를 잘 알고 계실 겁니다. APFS는 컨테이너라는 '용기' 안에 여러 개의 볼륨이 생성되는 구조를 가지고 있습니다.) ▼

diskutil apfs list

5. 필수는 아니지만 '공간 공유(Space Sharing)'를 테스트해 보실 분은 APFS 볼륨을 하나 더 생성하세요. 첫 번째 볼륨과 마찬가지로 용량을 미리 지정하지 않으셔도 됩니다. ▼

diskutil apfs addvolume disk3s2 apfs test2

6. 4번째 단계에서 사용한 명령어를 다시 입력하면 기존에 생성한 APFS 볼륨(disk3s2s1) 밑에 두 번째 APFS 볼륨(disk3s2s2)이 표시되는 것을 볼 수 있습니다. ▼

* 참고로 diskutil apfs 명령어를 입력하면 디스크 목록 보기를 비롯해 볼륨 및 컨테이너 추가∙삭제 기능을 수행할 수 있는 옵션을 확인하실 수 있습니다. ▼

7. 이제 생성한 볼륨들을 Finder에서 다룰 수 있도록 볼륨을 시스템에 마운트할 차례입니다. 

참고로 macOS 시에라 개발자 프리뷰에선 AFPS 볼륨이 자동으로 마운트 되지 않는 버그가 있습니다. DP2에선 버그가 해결된 것으로 보이는데, DP2에서도 볼륨이 자동 마운트되지 않는다면 아래 명령어를 사용해 볼륨을 직접 마운트하시기 바랍니다. 아래 예시는 APFS 볼륨 2개를 마운트하는 모습입니다. 만약 APFS 볼륨을 하나만 만드셨다면 명령어 역시 한 번만 입력하면 됩니다. (디스크 식별자를 잘 확인하세요.)  ▼

diskutil mount 볼륨_식별자

8. APFS 볼륨이 성공적으로 마운트되면 Finder를 통해 파일을 복사하거나 이동 또는 삭제할 수 있습니다. 이제 위에서 설명한 APFS 파일 시스템의 장점을 직접 체험해 보세요. ▼



참조
애플의 새로운 파일 시스템, APFS의 모든 것
Apple Deveoloper - Apple File System Guide

관련 글
• 애플, 차세대 맥 운영체제 'macOS Sierra' 발표
• 구형 맥에 퓨전 드라이브를 활성화 하는 방법
• 애플, macOS 시에라 2번째 개발자 프리뷰(DP2) 배포... 알려진 문제와 버그 내역