Снимок файловой системы

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Снимок файловой системы, или снапшот, или снепшот (от англ. snapshot — мгновенный снимок), — моментальный снимок, копия файлов и каталогов файловой системы на определённый момент времени.

Описание[править | править код]

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

Одним из методов безопасного создания резервной копии является запрещение записи в данные, которые подлежат резервному копированию, на время создания резервной копии. Ещё одним из методов является остановка всех приложений, которые могут изменять эти данные, или блокировка этих приложений форсированным включением режима только для чтения средствами интерфейса программирования приложений (API) операционной системы (ОС). Эти методы используются в системах низкой доступности (домашние компьютеры, серверы небольших рабочих групп, для которых регулярная недоступность (downtime) позволительна). В системах высокой доступности 24/7 эти методы применять нельзя, так как это может повлечь отказ в обслуживании сервисов.

Для избежания недоступности (downtime), системы высокой доступности могут вместо прямого резервного копирования сначала создать снапшот — копию информации только для чтения, «замороженную» в определённый момент времени. А затем, позволив приложениям продолжить обновлять данные, создавать резервную копию. Большинство реализаций снапшотов эффективны, они создают снапшот за O(1). Другими словами, время и количество операций ввода-вывода, необходимое для создания снапшота, не увеличивается с ростом объёма данных, в то время, как те же параметры для создания прямой резервной копии пропорциональны размеру сохраняемых данных.

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

Реализация[править | править код]

Управление томами[править | править код]

Некоторые операционные системы из семейства UNIX, например, HP-UX, а также Linux обладают менеджером логического раздела, в котором реализована поддержка снапшотов. Эта реализация копии-на-записи на целых блочных устройствах путём копирования изменённых блоков, до того, как они будут перезаписаны, в другое место, сохраняет целостность снапшота на блочном устройстве. Файловые системы на этом снапшоте могут быть позднее подключены только в режиме чтения. Снапшоты блочного уровня почти всегда менее эффективно используют место, чем снапшоты в файловых системах, которые их поддерживают.

Файловые системы[править | править код]

Некоторые файловые системы, такие как WAFL, fossil для Plan 9 или ODS-5, внутренне отслеживают старые версии файлов и делают снапшоты доступными через специальное пространство имён. Другие, например UFS2, предоставляют для операционной системы API для доступа к своей истории файлов. В NTFS доступ к снапшотам предоставляется через Volume Shadow Copy (VSS) в Windows XP и Windows Server 2003, и через Shadow Copy в Windows Vista. Снапшоты также доступны в Novell Storage Services (NSS) — файловой системе для Netware, начиная с версии 4.11, и более новых на Linux-платформах в продуктах Open Enterprise Server (OES).

ZFS имеет гибридную реализацию, которая отслеживает чтение-запись снапшотов на блочновом уровне, но создает разветвлённые наборы файлов, известные пользовательским приложениям как «клоны».

В базах данных[править | править код]

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


Другие приложения[править | править код]

Программная транзакционная память — это схема, которая применяет сходную концепцию для структур данных, хранящихся в оперативной памяти.

См. также[править | править код]

Примечания[править | править код]

Ссылки[править | править код]