TECH 으로 돌아가기
TECH HACKER NEWS 오늘 6분 읽기 70 READS

맥OS가 조용히 바꾼 디스크 이미지 포맷, Apple Sparse Image(ASIF)를 뜯어봤어요

맥OS가 조용히 바꾼 디스크 이미지 포맷, Apple Sparse Image(ASIF)를 뜯어봤어요

애플이 슬쩍 들여놓은 새 디스크 이미지 포맷

맥을 쓰다 보면 .dmg 파일 다들 한 번쯤 만져보셨을 거예요. 앱 설치할 때 받는 그 마운트되는 디스크 이미지 말이에요. 그런데 애플이 최근 macOS의 가상화 기능 쪽에 ASIF(Apple Sparse Image Format) 라는 새로운 이미지 포맷을 조용히 도입했어요. 공식 문서는 거의 없다시피 해서, 한 개발자가 직접 바이너리를 뜯어보며 구조를 역설계(reverse engineering)한 분석 글이 나왔는데요. 오늘은 그 내용을 쉽게 풀어볼게요.

먼저 "sparse(스파스)"가 뭔지부터 짚고 갈게요. 우리말로 "성긴, 듬성듬성한"이라는 뜻인데요. 디스크 이미지에서 sparse라고 하면, 실제로 데이터가 들어찬 부분만 파일 공간을 차지하는 방식을 말해요. 예를 들어 100GB짜리 가상 디스크를 만들어도 실제로 10GB만 쓰고 있으면 파일도 10GB만 차지하는 거죠. 텅 빈 공간까지 미리 다 잡아두지 않으니까 저장 공간을 아낄 수 있어요.

ASIF는 어떻게 동작하나

전통적으로 맥에는 sparse 계열 포맷이 몇 개 있었어요. .sparseimage(하나의 큰 파일), .sparsebundle(여러 조각 파일로 쪼갠 것) 같은 것들이요. ASIF는 이 계보를 잇는 새 포맷인데, 특히 가상 머신(VM)의 디스크 이미지 용도로 설계된 티가 나요.

역설계 분석에 따르면 ASIF는 디스크를 블록(block) 이라는 일정한 크기의 조각으로 나눠서 관리해요. 그리고 "몇 번 블록이 파일의 어디에 실제로 저장돼 있는지"를 가리키는 인덱스(색인) 테이블을 따로 둬요. 이게 핵심인데요, 비유하자면 거대한 창고에서 물건이 실제로 놓인 칸만 장부에 적어두고, 빈 칸은 "여긴 비어있음"이라고만 표시해두는 거예요. 그러면 데이터를 읽을 때 이 장부(인덱스)만 보고 실제 위치로 바로 점프할 수 있죠.

이런 구조 덕분에 ASIF는 현대 파일시스템의 sparse 파일 기능과 잘 맞물려요. 요즘 APFS 같은 파일시스템 자체가 빈 공간을 효율적으로 다루는 기능을 갖고 있는데, ASIF는 거기에 얹혀서 "안 쓴 공간은 진짜로 디스크를 안 먹게" 만들 수 있는 거예요. 가상 머신을 돌릴 때 디스크 이미지가 쓸데없이 부풀어 오르는 걸 막아주니까, VM을 자주 쓰는 환경에서는 체감되는 이득이 꽤 큽니다.

다른 포맷들과 비교하면

다른 진영에도 비슷한 포맷이 많아요. VMware의 VMDK, 마이크로소프트의 VHD/VHDX, 그리고 오픈소스 진영의 QEMU에서 쓰는 QCOW2가 대표적이죠. 이들 모두 "실제 쓴 만큼만 공간을 차지하고, 스냅샷(특정 시점 상태 저장)도 효율적으로 한다"는 비슷한 목표를 갖고 있어요. ASIF는 애플이 자기 가상화 프레임워크(Virtualization framework)에 맞춰 새로 정돈한 자체 포맷이라고 보면 돼요.

그런데 애플답게 공식 문서가 빈약하다 보니, 이런 역설계 분석이 사실상 유일한 참고 자료가 되는 경우가 많아요. 그래서 이렇게 누군가 바이너리를 직접 뜯어서 "헤더는 이렇게 생겼고, 인덱스는 여기 있고" 하고 정리해주는 글은 생태계 전체에 정말 귀한 기여예요.

한국 개발자에게 주는 시사점

맥에서 가상 머신을 돌리는 분들, 예를 들어 Apple Silicon 맥에서 리눅스 VM을 띄우거나 macOS 자체를 가상화해서 CI(지속적 통합) 테스트 환경을 만드는 팀이라면 ASIF를 알아두면 좋아요. 디스크 이미지 크기 관리, 백업 전략, 마이그레이션을 짤 때 포맷의 동작 원리를 알면 훨씬 유리하거든요.

또 "역설계로 미지의 바이너리 포맷을 분석한다"는 접근 자체가 좋은 공부거리예요. 헤더 시그니처를 찾고, 오프셋을 추적하고, 16진수 덤프를 들여다보며 구조를 복원하는 과정은 시스템 프로그래밍이나 포렌식, 보안 분야로 가고 싶은 분들에게 아주 실전적인 훈련이 되니까요.

마무리

한 줄 정리하면, ASIF는 애플이 가상화 시대에 맞춰 다듬은 차세대 sparse 디스크 이미지 포맷이고, 문서가 없는 만큼 이런 역설계 분석이 그 빈자리를 메워주고 있다는 거예요.

여러분은 공식 문서가 없는 애플의 내부 포맷이나 API를 분석해본 경험이 있으신가요? 이런 "비공개 포맷 뜯어보기"가 개발자에게 꼭 필요한 역량이라고 생각하시는지 궁금하네요.


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://schamper.dev/dissecting-apples-sparse-image-format-a...
SHARE
처리 중...