본문 바로가기
Operating System, OS/Mac

[MacOS] DiskUtil 관련 셸 스크립트 명령어 모음

by curious week 2025. 10. 12.

diskutil을 맥에서 디스크/파티션/APFS/RAID(CoreStorage 포함) 전부 다루는 “만능 공구”

  • 전체 개요/도움말 보기
    • man diskutil : 공식 매뉴얼(가장 정확)
    • diskutil 만 치면 가능한 동사(verbs) 요약이 쭉 나옴. 
  • 장치 식별자는 /dev/diskN(전체 디스크), /dev/diskNsM(파티션/볼륨) 형태.
  • GUI인 디스크 유틸리티와 기능 매칭됨(First Aid/지우기/분할 등). 개념이 헷갈리면 GUI 설명도 도움 됨. 

1) 조회(안전) 계열

  • diskutil list
    모든 디스크/컨테이너/볼륨 트리를 목록화. 장치 경로 파악의 첫 단계.
    예) 어떤 외장 SSD가 disk3인지부터 확인.
  • diskutil info <device|mountpoint> / diskutil info -all
    선택한 디스크/볼륨의 상세 정보(파일시스템, UUID, SMART, 암호화 등). 시스템 전체면 -all. 
  • diskutil listFilesystems
    eraseDisk/partitionDisk 등에 사용할 지원 포맷 이름(예: APFS, JHFS+, MS-DOS FAT32 등)과 별칭을 보여줌. 정확한 포맷 토큰이 필요할 때 필수. 
  • diskutil activity
    디스크 유틸리티가 수행 중인 작업(백그라운드) 표시.

2) 마운트/언마운트/꺼내기

  • diskutil mount <device>
    볼륨 마운트. (암호화면 잠금 해제 필요할 수 있음)
  • diskutil unmount <device|mountpoint>
    단일 볼륨만 언마운트.
  • diskutil unmountDisk <wholeDisk>
    해당 디스크의 모든 볼륨 언마운트. 파티션 편집 전 주로 사용.
  • diskutil eject <device>
    매체 배출(USB/외장 등 분리). 안전 제거.

3) 점검/복구

  • diskutil verifyDisk <wholeDisk> / diskutil repairDisk <wholeDisk>
    파티션 지도/디스크 구조 점검·복구.
  • diskutil verifyVolume <device|mountpoint> / diskutil repairVolume <device|mountpoint>
    파일시스템 점검·복구(First Aid의 CLI). 문제 땐 복구를 시도. 

팁: 부팅 디스크 복구는 리커버리 환경에서 실행해야 하는 경우가 많음. GUI 설명도 참고. 


4) 지우기/포맷/무작위화(파괴적)

  • diskutil eraseDisk <format> <name> <wholeDisk>
    디스크 전체를 파티션/포맷해서 지정 포맷의 단일 볼륨으로 초기화.
    예) diskutil eraseDisk APFS WorkSSD disk3 (주의: disk3의 모든 데이터 삭제) 
  • diskutil eraseVolume <format> <name> <device>
    볼륨 하나만 재포맷(같은 컨테이너/디스크 유지).
  • diskutil eraseOptical <device>
    지울 수 있는 광학 미디어 초기화(가능한 경우).
  • diskutil zeroDisk <device> / diskutil randomDisk [times] <device>
    디스크를 0으로 덮어쓰기 또는 난수로 [횟수]회 덮어쓰기(보안 삭제 용도).
    덮은 뒤엔 다시 파티션/포맷을 해야 사용 가능. 
  • diskutil secureErase <level> <device>
    HFS+ 등에서 지원되는 보안 삭제 모드(매체와 OS 버전에 따라 제한).

5) 파티션/크기 조정(데이터 파괴/보존 옵션 주의)

  • diskutil partitionDisk <wholeDisk> <numberOfPartitions> <scheme> <fmt1> <name1> <size1> ...
    디스크 전체를 재파티션. 완전 파괴적이라 백업 필수.
    scheme: GPT(인텔/Apple Silicon), MBR, APM. 각 파티션의 트리플렛(포맷/이름/크기)을 순서대로 지정. 포맷 가능한 이름은 listFilesystems로 확인. 
  • diskutil addPartition <device> <format> <name> <size>
    남는 여유 공간에 파티션 추가.
  • diskutil splitPartition <device> <numberOfPartitions> <fmt1> <name1> <size1> ...
    하나의 파티션을 여러 개로 분할. 상황에 따라 데이터 보존/포맷 프롬프트가 나올 수 있음.
  • diskutil mergePartitions <format> <name> <fromDevice> <toDevice>
    연속된 파티션들을 병합. 첫 파티션을 기준으로 병합하며 제한 조건(연속성/언마운트 등)이 있다.
  • diskutil resizeVolume <device> <size>|R [<newFormat> <newName>]
    볼륨/파티션 크기 조정(가능하면 무파괴). R은 가능한 최대/최소로 확장·축소. 파일시스템/상황에 따라 제한.

6) APFS 전용(컨테이너/볼륨/역할/암호화)

APFS는 컨테이너(물리 스토어 위의 풀) 안에 여러 볼륨을 가지는 구조. 대부분의 APFS 작업은 diskutil apfs … 서브커맨드로 수행한다. 전체 목록은 매뉴얼의 APFS 섹션을 참고. 아래는 현업에서 많이 쓰는 핵심만. 

  • diskutil apfs list
    APFS 컨테이너/볼륨 구조 트리 출력. 시작점으로 가장 자주 씀.
  • diskutil apfs createContainer <physicalStore> / deleteContainer <container>
    컨테이너 생성/삭제. 삭제는 내부 볼륨이 전부 사라지므로 주의.
  • diskutil apfs addVolume <container> <format> <name> [-role <role>]
    컨테이너에 새 볼륨 추가. -role로 역할 지정 가능(예: T = Time Machine, S=System, D=Data 등). 역할 코드는 단문자
  • diskutil apfs deleteVolume <volume> / eraseVolume <format> <name> <volume>
    볼륨 삭제 또는 재포맷. 컨테이너는 유지
  • diskutil apfs resizeContainer <container> <size>|R
    컨테이너 크기 조정(주로 디스크 여유 공간과 경계 조정).
  • diskutil apfs convert <device>
    HFS+를 무파괴 변환으로 APFS로 전환(가능한 경우). 
  • diskutil apfs listUsers <volume>
    FileVault/APFS Crypto Users(보안 토큰 사용자) 목록. 
  • diskutil apfs unlockVolume <volume> [-passphrase ...] / lockVolume <volume>
    암호화 볼륨 잠금 해제/잠금. (버전에 따라 decrypt/encrypt 옵션 변화 이슈가 있었음) 
  • diskutil apfs changeVolumeRole|chrole <volume> <roles>
    APFS 볼륨 역할 플래그 변경. (예: S, D, T 등) 

역할 코드 의미 요약: B(Preboot), R(Recovery), V(VM), I(Installer), T(Time Machine), S(System), D(Data), U(User) 등. 실제 코드는 버전에 따라 추가될 수 있음. 


7) CoreStorage(구 FileVault/LVG) & AppleRAID

현 macOS는 APFS가 주류지만, 과거 볼륨/암호화/RAID를 위해 쓰던 CoreStorage/AppleRAID 명령이 남아 있어 레거시 환경이나 호환 작업에 필요할 수 있어.

  • diskutil coreStorage|cs <subverb ...>
    논리 볼륨 그룹(LVG)/논리 볼륨(LV) 등 가상 디스크 레이어를 생성·변환·해제. 전체 서브버브는 매뉴얼 참조(예: list, convert, revert, create, delete, unlockVolume, decryptVolume 등). 
  • diskutil appleRAID|ar <subverb ...>
    소프트웨어 RAID(0/1/concat 등) 생성/확장/복구/상태조회. (create, add, remove, list, repair, update 등) 

8) 저널/이름/기타 유틸

  • diskutil enableJournal <device> / disableJournal <device>
    HFS+의 저널링 켜기/끄기.
  • diskutil rename <device> <newName> / renameVolume ...
    볼륨 이름 변경(APFS/HFS+ 등 포맷별로 가능).
  • diskutil verifyPermissions / repairPermissions
    오래된 맥 OS X(El Capitan 이전)에서 쓰이던 권한 점검/복구. 최신 macOS에선 의미 없음(시스템 무결성 정책 변화).

9) 안전 가이드(실수 방지 체크리스트)

  1. 반드시 diskutil list로 대상 디스크 재확인(외장 여러 개 꽂혀 있으면 혼동 100%).
  2. eraseDisk/partitionDisk/mergePartitions는 파괴적: 실행 전 백업 + 대상 식별자 더블체크.
  3. APFS는 컨테이너/볼륨 계층을 명확히. “볼륨만 지우기” vs “컨테이너 삭제”는 파급이 다름. 
  4. FileVault/암호화가 얽히면 apfs listUsers, unlockVolume 순서를 준수. 버전별 동작 변경 사례도 있었다. 
  5. 문법이 길 때는 매뉴얼 원문을 확인(특히 트리플렛/사이즈 표기법, 역할코드, -plist 등). 

10) 바로 쓰는 예제 모음

  • 외장 SSD를 APFS로 전체 초기화 후 이름을 WorkSSD로:
    • diskutil list diskutil eraseDisk APFS WorkSSD disk3
  • APFS 컨테이너에 Time Machine 전용 볼륨 추가:(role T = 백업) (The Eclectic Light Company)
    • diskutil apfs list diskutil apfs addVolume disk3s2 APFS "TM-Backup" -role T
  • 볼륨 점검/복구(외장 드라이브가 /Volumes/Media로 마운트된 경우):
    • diskutil verifyVolume /Volumes/Media diskutil repairVolume /Volumes/Media ``` :contentReference[oaicite:30]{index=30}
  • 컨테이너 크기 최대치로 확장:
    • diskutil apfs resizeContainer disk3s2 R
  • 안전 분리(모든 볼륨 언마운트 후 배출):
    • diskutil unmountDisk disk3 diskutil eject disk3

원문/세부 옵션

  • diskutil 공식 매뉴얼: 모든 동사/서브커맨드/인자 정의(버전별 내용 포함). (unix.com)
  • APFS/역할/사용자/스냅샷 등 심화 정리: APFS command tools 글(개념+예시 도움). (The Eclectic Light Company)
  • APFS 볼륨 역할 개념과 코드 예시: -role 사용 시 참조. (The Eclectic Light Company)