Открыть сервисСервис

Снапшот в информатике

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

Основные области применения

Резервное копирование данных

В контексте резервного копирования снапшот — это логическая копия набора данных, зафиксированная на определённый момент. В отличие от полного копирования, снапшот часто реализуется механизмом «копирование при записи» (copy-on-write): при изменении исходных данных старая версия блока сохраняется отдельно, что позволяет создавать снапшот практически мгновенно и без дублирования всего объёма хранилища.

Снапшоты делятся на два основных типа:

  • Клонирующие (full, independent) — после создания снапшот не зависит от исходных данных; изменения в оригинале не влияют на снимок.
  • Перенаправляющие (redirect-on-write) — снапшот ссылается на исходные данные, при этом изменения перенаправляются в новое пространство; такой подход характерен для систем хранения NetApp.

В файловых системах поддержка снапшотов реализована в ZFS, Btrfs, ReFS, APFS. В Windows служба теневых копий (Volume Shadow Copy Service, VSS) позволяет создавать снапшоты томов NTFS для восстановления отдельных файлов.

Виртуализация и облачные технологии

В виртуализации снапшот — это сохранённое состояние виртуальной машины: содержимое оперативной памяти, состояние виртуальных устройств и конфигурация дисков. Популярные гипервизоры — VMware ESXi, Hyper-V, VirtualBox, KVM — поддерживают создание снапшотов, что применяется при обновлении программного обеспечения, тестировании и откате изменений.

В облачной инфраструктуре снапшоты дисков предлагаются как стандартная функция: в Amazon Web Services это Amazon EBS Snapshots, в Яндекс Облаке — снапшоты дисков и репликация в Object Storage, в Selectel и Timeweb Cloud — снапшоты виртуальных дисков. Снапшоты используются для защиты от сбоев, миграции нагрузок и создания шаблонов окружений.

Системы управления версиями

В системах контроля версий (Git, Mercurial) снапшот — это зафиксированное состояние всего дерева файлов проекта. Каждый коммит в Git фактически является снапшотом, а не набором дельт: Git сохраняет полное дерево объектов, оптимизируя хранение через неизменяемые объекты (blobs, trees, commits) и ссылки на них. Это отличает Git от поколенческих систем (SVN, CVS), где хранятся только изменения между версиями.

Распределённые базы данных

В распределённых СУБД снапшот — согласованный набор данных, видимый одной транзакцией в момент её начала. Свойство изоляции snapshot isolation гарантирует, что транзакция видит состояние базы на момент старта, не замечая параллельных изменений. Механизм реализован в PostgreSQL (уровень изоляции REPEATABLE READ и SNAPSHOT ISOLATION), в системах на базе MVCC (Multi-Version Concurrency Control), в Microsoft SQL Server (транзакционные снапшоты). Снапшот-изоляция предотвращает «грязное чтение» и неповторяющееся чтение, но при этом допускает аномалию «write skew», поэтому в некоторых СУБД (PostgreSQL) реализован расширенный вариант —.Serializable Snapshot Isolation (SSI).

Типичные сценарии использования

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

Ограничения

Снапшот не является полноценной резервной копией: он хранится в той же системе, что и исходные данные, и не защищает от аппаратного сбоя носителя или программного сбоя самой системы хранения. Для защиты от таких сценариев снапшоты дополняются выгрузкой в отдельное хранилище (offsite-копии). Кроме того, накопление большого числа снапшотов может приводить к деградации производительности системы хранения и росту потребления места.

Интересные факты

Термин «снимок» в контексте хранения данных ввела компания Data General в 1980-х годах для своей системы хранения Data General/ONE. В современной инфраструктуре снапшоты стали одним из базовых механизмов защиты данных: по данным отраслевых отчётов, подавляющее большинство корпоративных систем хранения поддерживают их аппаратно.

Источники:

  • Таненбаум Э., Бос Х. «Современные операционные системы»
  • Гарсия-Молина Г., Ульман Дж., Уидом Дж. «Системы управления базами данных. Полный курс»
  • Документация PostgreSQL, Git, ZFS
  • Материалы VMware, Amazon Web Services, Яндекс Облако
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru