MacOS: Внешние диски и APFS (format external ssd drive in APFS)
Tags: ssd, programming, docker, hardware
Published: 2022-09-05 13:28:01

Если вы пользователь MacOS, то скорее всего сталкивались с подключением внешних дисков. Как вы уже знаете система монтирует их в /Volumes/*. Система MacOS устроена таким образом, что она  создает разные скрытые файлы с метаданными всех файлов и директорий. В APFS это как правило .DS_Store и еще несколько директорий для корзины и Spotlight. Если же мы говорим о других файловых системах, с которыми могут работать и другие операционные системы (ExFat, NTFS), то MacOS создает гораздо больше файлов. Сразу могут броситься файлы, которые начинаются на `._` (dot underscore) - это и есть метаданные по файлам и директориям, которые использует MacOS. Помимо внешних дисков файлы .DS_Store создаются и на сетевых дисках.

Для отключения создания .DS_Store файлов на сетевых дисках в MacOS предусмотрена специальная директива. Выполните эту команду в терминале, чтобы .DS_Store файлы не создавались на сетевых дисках:
```
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true
``` 

Для новых версиях MacOS появилас аналогичная директива и для USB дисков: 
```
defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true
```

Также нужно отключить индексирование внешнего диска:
```
sudo mdutil -i off /Volumes/<DISK NAME>
```

> Важный момент, если пользователей несколько, то выполнять эти команды нужно под каждым из них.

К сожалению запретить создание файлов `._` нельзя. Эти файлы очень мешают при работе с Git и Docker. Единственное, что можно сделать - это удалить их вручную командой в терминале `dot_clean -n <dirname>`, где `<dirname>` - это директория, в которой нужно удалить начинающиеся с `._` файлы. Для рекурсивного удаление в текущей директории и всех поддиректориях используйте команду 
```
dot_clean -n .
```

Но есть и хорошая новость! Эти файлы создаются только на файловых системах, отличных от Apple-овских. Поэтому, если отформатировать диск в MacOS Extended или APFS проблема с `._` (dot underscore) пропадет.

Для того, чтобы переформатировать жесткий диск нам понадобится "Дисковая утилита". В левом меню выбираем нужный диск, в быстром меню (правая кнопка мыши) выбираем "Стереть..." и в открывшемся окне выбираем нужную файловую систему. На рисунке ниже отображено окно форматирования подключенного по USB SSD диска.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/blooc7aiyrfpdoxigp7c.png)

Но где же заветная APFS? Все дело в том, что большинство дисков, которые продаются используют разметку MBR, которая не совместима с APFS. Для форматирования диска в APFS у него должна быть разметка GPT (иногда ее называют GUID). Сделать этого в GUI версии "Дисковой утилиты" не получится. Обратимся к консольной. Для этого в терминале нужно выполнить последовательность действий ниже. 

Смотрим под каким номером примонтирован интересующий нас диск. Для этого выполним команду `diskutil list`

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5oiil7cwwhaezd2a0o5v.png)

На рисунке выше мы видим результат выполнения этой команды. Интересующий нас диск я выделил красным. Он примонтирован как /dev/disk2 - это понадобится для команды форматирования.

Собственно для форматирования диска в APFS нужно выполнить эту команду: 
```
diskutil partitionDisk <disk number> 1 GPT APFS <disk name> R
```

Где `<disk number>` - это примонтированный диск, а `<disk name>` - это имя диска, с которым он будет отображаться в приложениях и в /Volumes/*.

Пример команды с заполненными параметрами:
```
diskutil partitionDisk /dev/disk4 1 GPT APFS KINGSTON R
```

После успешного выполнения команды в `diskutil list` мы увидим, что диска теперь два и нужный отформатирован в APFS. На рисунке ниже приведен результат этой команды после форматирования.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bnisj0wgq1ws3gqvu6lr.png)

Теперь у вас внешний диск в APFS и на нем не будут создаваться файлы с `._` (dot underscore). Так же в этой файловой системе у меня увеличилась скорость чтения и записи на 200Mb/s в сравнении с ExFat.