Поддержка Консалтинг Обучение Jamf Pro Блог

Снапшоты (APFS)

Максим Рязанов 20.01.2022

Это перевод статьи с сайта https://eclecticlight.co/2021/07/31/explainer-snapshots/

Возможность создавать снапшоты (снимки файловой системы) и работать с ними – это одна из самых мощных и полезных функций файловой системы APFS. HFS+ при этом снапшоты не поддерживает, хотя в старых резервных копиях Time Machine эти сами копии и называются снапшотами – таковыми они не являются. А вот копии, созданные Mobile Time Machine, уже больше походят на эти самые снапшоты.

Снапшот, как следует из названия, представляет собой снимок файловой системы тома APFS в определенный момент времени. Он включает в себя все вложенные папки и другие данные файловой системы, известные как метаданные файловой системы. Сами по себе они имеют ограниченную ценность, но то, что происходит дальше, преображает их.

После создания снапшота тома все старые данные о файлах, связанных с ним, сохраняются. Когда в APFS происходит изменение файла, сами блоки данных не переписываются, поскольку APFS работает по принципу копирование при записи (copy on write), когда изменения записываются как новые блоки данных, что позволяет дополнительно защитить хранимую информацию. Обычно, в отсутствие снапшотов, старые блоки возвращается в пул свободных блоков, чтобы в конечном итоге быть стертым и снова использоваться для записи данных. Однако при наличии снапшота, старые блоки сохраняются, а не стираются или освобождаются.

Все это означает, что если вы обращаетесь к файлам в снапшоте, они остаются там точно такими же, какими были на момент создания снапшота, используя комбинацию старых блоков (для тех файлов, которые с тех пор изменились) и активных блоков (для тех файлов, которые не менялись).

Сам снапшот, метаданные файловой системы, лежащие в его основе, хранятся не на томе APFS, который является просто текущей файловой системой, а в его контейнере. Блоки данных, содержащие его файлы, разбросаны по всей области хранения этого контейнера, где они делят пространство с другими томами в этом контейнере.

Со временем, по мере того как в томе все больше блоков заменяются на новые, количество блоков, оставляемых для хранения старых данных о файлах, увеличивается. В крайнем случае, если хранить снапшот достаточно долго, изменения затронут весь том, и тогда эффективный размер данных в этом снапшоте будет таким же, как и в том томе, с которого изначально был сделан снапшот. Все это делает обслуживание снапшотов очень важным.

Файловая система в снапшоте доступна только для чтения и не может быть изменена. Это позволяет реализовывать Sealed System Volume в Big Sur.

Снапшоты идеально подходят для резервного копирования Time Machine. Раньше, когда ваш Mac создавал резервные копии на диске HFS+, это был фактически один раздел, содержащий одну файловую систему. Каждый раз, при создании резервной копии, в эту файловую систему добавлялось огромное количество жестких ссылок (hard links) на файлы и папки. После нескольких месяцев использования, она могла содержать многие миллионы жестких ссылок и файлов, все в одной файловой системе, что делало ее подверженной ошибкам, даже если это была журналируемая файловая система.

Когда каждая резервная копия создается в виде отдельного снапшота, она представляет собой собственную файловую систему и никогда не увеличивается при добавлении новых резервных копий. Это гарантирует, что файловая система каждого снапшота имеет фиксированный размер и остается легко управляемой. После создания и проверки, снапшот не может быть изменен, поэтому исключена вероятность возникновения в нем ошибок, во время добавлении новых файлов (так как это невозможно).

Проблемы со снапшотами возникают из-за ограниченности инструментов, которые могут с ними работать. Их проверка возможна с использованием инструмента First Aid в Disk Utility или его эквивалента fsck_apfs в командной строке. Вы также можете смонтировать их как внешние диски, что позволяет просматривать и копировать их содержимое, но никак не изменять его. При желании, вы можете откатить весь том до состояния, зафиксированного в снапшоте, но после этого вернуть изменения будет уже невозможно, так как все новые данные при откате будут уничтожены.

Также вы не сможете скопировать или переместить снапшот с исходного диска. Возможно смонтировать снапшот и сделать его копию в виде тома, но нельзя превратить его обратно в тот снапшот, каким он был, или собрать несколько снапшотов файловой системы, превратив их в снапшоты резервных копий. Нет причин, по которым Apple не могла бы предоставить инструменты для решения этих задач, но в настоящее время таких инструментов нет.

Apple строго ограничивает количество сторонних приложений, которым предоставляется доступ к функционалу снапшотов macOS, и в настоящее время все они представляют собой те или иные утилиты резервного копирования, такие как Carbon Copy Cloner и SuperDuper! Программа Carbon Copy Cloner особенно полезна для управления снапшотами, как созданными Time Machine, так и созданными ею самой.