Управление дисками: diskutil, образы и форматирование

Рейтинг: 67.6% · 8 голосов
Подробный курс по macOS для разработчиков и админов: архитектура и Apple Silicon, терминал и zsh, Homebrew и пакеты, launchd и автоматизация, APFS и Time Machine, безопасность (SIP, Gatekeeper, TCC, FileVault), сеть, логи и диагностика, MDM и DDM, контейнеры и виртуализация, восстановление. По официальной документации Apple, актуально на 2026 (macOS 26 Tahoe).
Ответить
Аватара пользователя
Artem_MacAdmin
Сообщения: 47
Зарегистрирован: 11 май 2026, 05:31

Управление дисками: diskutil, образы и форматирование

Сообщение Artem_MacAdmin »

Оглавление курса (47)
  1. Что такое macOS: Unix под капотом и место в 2026
  2. Архитектура macOS: XNU, тома и Signed System Volume
  3. Apple Silicon: ARM, Rosetta 2 и отличия от Intel
  4. Установка, обновление и восстановление macOS
  5. Finder, рабочий стол и продуктивность
  6. Системные настройки и их управление из CLI (defaults)
  7. Пользователи и группы: учётные записи и управление
  8. Терминал и zsh: командная строка macOS
  9. CLI на macOS: BSD-команды и отличия от Linux
  10. Настройка zsh: .zshrc, prompt, плагины
  11. Файловая система и права: POSIX, ACL, атрибуты, флаги
  12. Homebrew: пакетный менеджер для macOS
  13. Homebrew глубже: tap, Brewfile, services, обслуживание
  14. Другие пакеты: MacPorts, mas, Nix и App Store
  15. Установка приложений: .app, .dmg, .pkg и Gatekeeper
  16. Управление приложениями и их данные
  17. launchd и launchctl: система запуска macOS
  18. Свои службы и периодические задачи на launchd
  19. Автоматизация: Shortcuts, AppleScript и osascript
  20. Конфигурация как код: defaults, plist и профили
  21. APFS: снапшоты, клоны, контейнеры и шифрование
  22. Управление дисками: diskutil, образы и форматирование (вы здесь)
  23. Time Machine и резервное копирование
  24. Внешние диски, форматы и сетевые тома
  25. Модель безопасности macOS: SIP и целостность системы
  26. Gatekeeper, нотаризация и защита от вредоносов
  27. Приватность и TCC: разрешения на доступ
  28. FileVault: полнодисковое шифрование
  29. Связка ключей и управление секретами
  30. Сетевой экран и защита сети
  31. Сеть в macOS: настройка и инструменты
  32. Диагностика сети на Mac
  33. Общий доступ: SSH, экран, файлы, удалённое управление
  34. Процессы и ресурсы: мониторинг производительности
  35. Логи macOS: unified logging и диагностика
  36. Производительность и энергия: powermetrics, диагностика
  37. Энергия, сон и обслуживание системы
  38. Профили конфигурации и основы MDM
  39. Управление парком Mac: MDM, DDM и zero-touch (2026)
  40. Среда разработчика на Mac: Xcode CLT, git, версии
  41. Контейнеры на Mac: Docker Desktop, OrbStack, Apple container
  42. Виртуализация: Virtualization.framework, UTM, Linux и Windows
  43. Режимы загрузки и восстановление (Apple Silicon)
  44. Сброс, NVRAM, Safe Mode и сброс настроек
  45. Траблшутинг macOS: дерево решений по симптомам
  46. Место на диске и обслуживание системы
  47. Сквозной проект: настройка Mac как у профи + куда расти
Внешний SSD не монтируется, флешка не открывается на Windows, надо нарезать диск под второй macOS или собрать зеркало из двух дисков, а Disk Utility упрямо не показывает нужный том или падает с невнятной ошибкой. Каждый раз тыкать мышкой по графическому окну - медленно и невоспроизводимо. В этом уроке мы разберём diskutil - штатный инструмент управления дисками mac из терминала, и hdiutil - работу с образами. Это два кита, на которых стоит всё низкоуровневое администрирование хранилища: форматирование диска mac, разбивка, ремонт файловой системы, монтирование образов и сборка RAID. Когда ты понимаешь, что делает каждая кнопка disk utility mac под капотом, ты перестаёшь зависеть от GUI и можешь автоматизировать что угодно.

Как macOS видит диски: identifiers, контейнеры, тома

Главное, что надо уложить в голове, - в macOS есть три уровня сущностей, и diskutil оперирует всеми. Физический накопитель - это whole disk, например disk0. На нём лежит таблица разделов (обычно GPT), а внутри неё - слайсы: disk0s1, disk0s2 и так далее. А вот дальше начинается специфика APFS: один слайс может быть APFS-контейнером, и внутри этого контейнера живут тома (volumes), которые macOS показывает как отдельные виртуальные диски (synthesized) - disk3s1, disk3s2 и т.д. Тома внутри контейнера делят общее свободное место - это и есть фишка APFS, никаких жёстких границ как в HFS+.

Посмотрим вживую:

Код: Выделить всё

diskutil list
Вывод (фрагмент с Apple Silicon):

Код: Выделить всё

/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.3 GB   disk0
   1:             Apple_APFS_ISC Container disk1         524.3 MB   disk0s1
   2:                 Apple_APFS Container disk3         494.4 GB   disk0s2
   3:        Apple_APFS_Recovery Container disk2         5.4 GB     disk0s3

/dev/disk3 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +494.4 GB   disk3
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD            10.9 GB    disk3s1
   2:              APFS Snapshot com.apple.os.update-... 10.9 GB    disk3s1s1
   3:                APFS Volume Macintosh HD - Data     280.4 GB   disk3s5
Разбираем. disk0 - физический, со схемой GPT. disk0s2 помечен Apple_APFS - это контейнер, его physical store. А disk3 - синтезированный контейнер: он не физический, его придумала система поверх disk0s2. Внутри - том Macintosh HD (системный, read-only, защищён SSV - Signed System Volume) и Macintosh HD - Data, где лежат твои данные. То, что система выглядит как один том, - иллюзия Firmlinks. Запомни: Apple_APFS_ISC и Apple_APFS_Recovery - служебные контейнеры (iSC хранит ключи Secure Enclave, Recovery - режим восстановления), их не трогаем.

Подробности по конкретной сущности:

Код: Выделить всё

diskutil info disk3s5
Тут ты увидишь UUID тома, точку монтирования, зашифрован ли он (FileVault), является ли частью контейнера и кто physical store. Поле Mounted: Yes/No и Mount Point - первое, что смотришь, когда том "пропал".

Изображение

Монтирование, форматирование и форматы файловых систем

Смонтировать и размонтировать том вручную:

Код: Выделить всё

diskutil mount disk3s5
diskutil unmount disk3s5
diskutil unmountDisk disk3       # размонтировать ВЕСЬ контейнер целиком
Разница важная: unmount отцепляет один том, unmountDisk - все тома накопителя. Если получаешь Unmount failed - dissented by PID ..., значит файл открыт процессом. Найди виновника через lsof, либо для аварийного случая - diskutil unmount force. Принудительно дёргать стоит только когда понимаешь, чем рискуешь (несброшенный кеш записи = шанс на повреждение).

Теперь форматирование диска mac. Базовая команда eraseDisk полностью стирает накопитель, ставит новую таблицу разделов и кладёт один пустой том:

Код: Выделить всё

diskutil eraseDisk ФОРМАТ ИМЯ СХЕМА ИДЕНТИФИКАТОР
Под Windows-обмен флешку или внешний SSD делаем в exFAT с GPT:

Код: Выделить всё

diskutil eraseDisk ExFAT SHUTTLE GPT disk4
Вывод по шагам:

Код: Выделить всё

Started erase on disk4
Unmounting disk
Creating the partition map
Waiting for partitions to activate
Formatting disk4s2 as ExFAT (MS-DOS exFAT) with name SHUTTLE
Mounting disk
Finished erase on disk4
Обрати внимание: имя тома стало disk4s2, потому что GPT создала служебный EFI-раздел disk4s1. Это нормально. Почему exFAT, а не NTFS? macOS читает NTFS, но не пишет в него штатно, а exFAT родной для обоих миров. Для совсем древних устройств (магнитолы, фотоаппараты) бери FAT32 - но помни про лимит файла в 4 ГБ.

Шпаргалка по форматам (первый аргумент eraseDisk/eraseVolume):
  • APFS - дефолт для внутренних SSD и современных внешних. Снапшоты, клоны, общее место в контейнере.
  • APFSX (Case-sensitive) - регистрозависимый вариант. Нужен редко (некоторые dev-окружения), но способен сломать софт, ждущий регистронезависимости.
  • JHFS+ - Mac OS Extended (Journaled), он же HFS+. Для старых машин и Time Machine на HDD до недавних версий. На SSD проигрывает APFS.
  • ExFAT - обмен с Windows/Linux, большие файлы.
  • MS-DOS FAT32 - максимальная совместимость, лимит файла 4 ГБ.
Зашифрованный том создают форматом, который diskutil примет с флагом, либо потом включают FileVault. Чтобы стереть один том внутри уже существующего контейнера, не трогая остальные:

Код: Выделить всё

diskutil eraseVolume ExFAT SCRATCH disk4s2
Разбить диск mac: partitionDisk и APFS-операции

Чтобы разбить диск mac на несколько физических разделов (например, под exFAT-кусок и под отдельную macOS), есть partitionDisk. Синтаксис - пары "формат имя размер", повторяющиеся:

Код: Выделить всё

diskutil partitionDisk disk4 GPT \
  APFS "System" 200G \
  ExFAT "Share" 100G \
  FREE %noformat% R
Здесь R значит "остаток места". Размер задаётся как 200G, 50%, либо R/FREE для остатка. GPT - схема разделов (для FAT32-флешек под старое железо иногда нужен MBR). Это деструктивная операция - всё на disk4 умрёт.

Но в мире APFS чаще тебе НЕ нужны физические разделы. Гораздо гибче добавить том в существующий контейнер - он займёт место динамически, не отрезая жёсткую квоту:

Код: Выделить всё

diskutil apfs addVolume disk3 APFS "Sandbox"
Том появится мгновенно, покажет почти весь свободный объём контейнера и будет делить его с соседями. Удалить так же легко:

Код: Выделить всё

diskutil apfs deleteVolume disk3s7
Полезные apfs-операции: createContainer (сделать контейнер на слайсе), addVolume/deleteVolume (тома), resizeContainer (раздвинуть/сжать), lockVolume/unlockVolume и encryptVolume (FileVault через CLI), list (дерево всех контейнеров). Посмотреть только APFS-картину:

Код: Выделить всё

diskutil apfs list
Это покажет контейнеры, их physical store, размер, fusion/не fusion, зашифрованность каждого тома и роли (System, Data, Preboot, VM, Recovery). Когда чинишь чужую машину - первым делом сюда, чтобы понять структуру.

First Aid из терминала: verifyVolume и repairVolume

Disk Utility.app -> First Aid под капотом гоняет fsck. Из CLI - то же самое, но скриптуемо и без капризов GUI. Проверка без изменений:

Код: Выделить всё

diskutil verifyVolume disk3s5
Ремонт (том стоит размонтировать, для системного - грузиться в Recovery):

Код: Выделить всё

diskutil repairVolume disk3s5
Фрагмент вывода repairVolume:

Код: Выделить всё

Started file system repair on disk3s5 Macintosh HD - Data
Repairing file system
Checking the container superblock
Checking the EABlocks
Checking the snapshots
Verifying allocated space
The volume disk3s5 appears to be OK
File system repair completed
Если в конце appears to be OK - ты выиграл. Если же could not be repaired - том сильно бит, дальше путь либо в специализированный recovery-софт, либо бэкап и переформат. Параллельно проверь сам контейнер: diskutil verifyDisk disk3 и diskutil verifyVolume на сам контейнер (disk3). Грабли: на смонтированном системном томе ремонт не пройдёт целиком - часть проверок требует размонтирования, поэтому серьёзный First Aid системного диска делают из режима восстановления (Recovery), а не из работающей системы.

Образы дисков: hdiutil (.dmg и .sparseimage)

Образ диска - это файл, который система монтирует как настоящий том. Базовый инструмент - hdiutil. Терминология: образы attach (подключают) и detach (отключают), в отличие от mount/unmount для обычных томов - запомни эту пару, путаница тут частая.

Создать пустой растущий sparse-образ APFS на 10 ГБ (фактически займёт место только под данные):

Код: Выделить всё

hdiutil create -size 10g -type SPARSE -fs APFS -volname Vault ~/Vault
Получишь ~/Vault.sparseimage. Тип SPARSE растёт по мере записи. Зашифрованный образ под секреты (спросит и запомнит пароль в Keychain при -agentpass или интерактивно):

Код: Выделить всё

hdiutil create -size 5g -encryption AES-256 -type SPARSE -fs APFS \
  -volname Secrets ~/Secrets
Подключить и отключить:

Код: Выделить всё

hdiutil attach ~/Vault.sparseimage
hdiutil detach /Volumes/Vault
Сделать сжатый read-only .dmg из папки (классика для раздачи приложений):

Код: Выделить всё

hdiutil create -srcfolder ~/MyApp -volname "MyApp" -format UDZO ~/MyApp.dmg
Формат UDZO - сжатый только для чтения, самый ходовой для дистрибутивов. Сконвертировать образ в другой формат:

Код: Выделить всё

hdiutil convert ~/Vault.sparseimage -format UDZO -o ~/Vault-ro.dmg
Грабли sparse-образов: они растут, но сами НЕ ужимаются, когда ты удаляешь файлы внутри. Освободить место на диске обратно:

Код: Выделить всё

hdiutil compact ~/Vault.sparseimage
Вывод покажет Starting to compact... reclaiming N sectors и сколько мегабайт вернулось. Для долгоживущих больших образов (бэкапы Time Machine на сетевой шаре) предпочтительнее SPARSEBUNDLE - он хранит данные пачкой мелких band-файлов, что лучше для инкрементального бэкапа и сетевого копирования.

RAID и безопасное извлечение

macOS умеет программный AppleRAID через diskutil. Зеркало (RAID 1) из двух дисков:

Код: Выделить всё

diskutil appleRAID create mirror MyMirror JHFS+ disk4 disk5
Полоса (RAID 0, скорость без отказоустойчивости) - stripe вместо mirror, конкатенация - concat. Проверить состояние:

Код: Выделить всё

diskutil appleRAID list
Смотришь поле Status: Online для каждого члена. Если один диск зеркала умер - статус Degraded, меняешь диск и делаешь diskutil appleRAID add. Важный нюанс 2026: AppleRAID - механизм старый, заточенный под HFS+; для серьёзных задач берут аппаратные/специализированные решения, а APFS своего полноценного RAID не имеет (есть только Fusion-объединение SSD+HDD). Для зеркала на проде взвесь риски.

И последнее, обыденное, но важное - безопасное извлечение. Не выдёргивай внешний диск, пока не отмонтировал, иначе словишь повреждение из-за несброшенного кеша записи:

Код: Выделить всё

diskutil eject disk4
eject отмонтирует все тома и физически отпустит устройство (для USB/Thunderbolt). Если система ругается, что диск занят, - закрой Finder-окна на нём и проверь lsof по /Volumes/ИмяТома.

Типичные грабли
  • Путаешь disk0s2 (физический слайс-контейнер) и disk3 (синтезированный контейнер). Команды apfs обычно хотят синтезированный disk3, а не слайс.
  • eraseDisk на disk0 (внутреннем) - так стереть загрузочную систему нельзя из работающей macOS, и слава богу. Только Recovery + установщик.
  • Имена с пробелами. Без кавычек "My Drive" diskutil поймёт как два аргумента и упадёт.
  • Ждёшь, что sparse-образ сам ужмётся после удаления файлов. Нет - руками hdiutil compact.
  • Принудительный unmount force на смонтированном для записи томе. Потеря данных. Сначала закрой процессы.
  • exFAT для бэкапов и системных задач - не файловая система для прав POSIX и метаданных macOS, она только для голого обмена файлами.
Мини-лаба (повторить руками)

Возьми ненужную флешку (всё на ней умрёт). Найди её идентификатор: diskutil list (ищи external, physical и свой объём - НЕ перепутай с disk0). Отформатируй в exFAT под Windows-обмен: diskutil eraseDisk ExFAT LAB GPT diskN. Посмотри результат: diskutil info diskNs2 - найди Mount Point и File System. Прогони проверку: diskutil verifyVolume diskNs2. Теперь сделай образ: hdiutil create -size 2g -type SPARSE -fs APFS -volname LABIMG ~/lab. Подключи: hdiutil attach ~/lab.sparseimage, скопируй туда файл, посмотри размер ~/lab.sparseimage, удали файл, отключи (hdiutil detach /Volumes/LABIMG) и ужми: hdiutil compact ~/lab.sparseimage - сравни размер до и после. В конце безопасно извлеки флешку: diskutil eject diskN.

Контрольные вопросы
  • Чем отличается disk0s2 от disk3 в выводе diskutil list и почему addVolume адресуют контейнеру disk3, а не слайсу?
  • Какой формат выберешь для внешнего SSD под обмен с Windows и почему не NTFS и не APFS?
  • В чём разница между attach/detach и mount/unmount, и почему sparse-образ нужно compact?
  • Почему серьёзный repairVolume системного тома делают из Recovery, а не из работающей macOS?
Итог

diskutil - это весь Disk Utility.app в одной командной строке: list и info для разведки, eraseDisk/eraseVolume для форматирования, partitionDisk и apfs addVolume чтобы разбить диск mac жёстко или гибко, verifyVolume/repairVolume вместо First Aid, appleRAID для зеркал и eject для безопасного извлечения. hdiutil закрывает образы: create, attach/detach, convert, compact. Запомни главное - APFS-контейнер с динамическими томами почти всегда лучше физических разделов, а exFAT+GPT - твой выбор для обмена с Windows. Дальше эти кирпичи лягут в скрипты подготовки парка машин.
👍3 ❤️3 🔥3 😄 🤔
Аватара пользователя
nixosmain
Сообщения: 1
Зарегистрирован: 22 май 2026, 01:56

Re: Управление дисками: diskutil, образы и форматирование

Сообщение nixosmain »

Долго не мог понять, почему apfs addVolume ругается на disk0s2 - оказалось надо было давать синтезированный disk3, спасибо за разбор уровней.
👍2 ❤️2 🔥 😄 🤔
Аватара пользователя
xk7x4b
Сообщения: 1
Зарегистрирован: 30 май 2026, 22:15

Re: Управление дисками: diskutil, образы и форматирование

Сообщение xk7x4b »

А можно ли sparseimage с шифрованием AES-256 использовать как переносной сейф между маками? Боюсь что Keychain пароль не подхватится на чужой машине.
👍 ❤️1 🔥1 😄 🤔
Ответить
← Предыдущая глава
APFS: снапшоты, клоны, контейнеры и шифрование
Следующая глава →
Time Machine и резервное копирование

Все главы курса «macOS для профи: администрирование, терминал и Homebrew»

Поделиться темой: ✈ Telegram VK
Похожие запросы: Файловая система APFSУправление дисками на MacРезервное копирование Mac (Time Machine)

Вернуться в «macOS для профи: администрирование, терминал и Homebrew»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость