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

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

Снимок файловой системы или снэпшот (от англ. 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 2003, и через Shadow Copy в Windows Vista. Снэпшоты также доступны в Novell Storage Services (NSS) — файловой системе для Netware, начиная с версии 4.11, и более новых на Linux-платформах в продуктах Open Enterprise Server (OES).

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

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

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


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

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

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

Ссылки[править | править вики-текст]