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

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

Снимок файловой системы или снапшот (от англ. 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 баз данных используют эту технологию для создания самосогласованного образа таблицы данных.

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

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

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

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