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

Снапшот (информационные технологии)

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

Виртуализация

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

При создании снапшота виртуальный диск переводится в режим copy-on-write: исходный образ остаётся неизменным, а все новые изменения записываются в отдельный дельта-файл. Это позволяет создавать снапшот практически мгновенно независимо от объёма данных. По мере накопления изменений размер дельта-файла растёт, что требует мониторинга свободного места.

Снапшоты виртуальных машин используются для:

  • создания контрольных точек перед установкой обновлений или изменением конфигурации;
  • временного сохранения состояния при тестировании программного обеспечения;
  • быстрого развёртывания однотипных виртуальных машин из золотого образа.

Важное ограничение: снапшот не является полноценной резервной копией. Он зависит от исходного состояния и не защищает от отказа физического носителя.

Системы хранения данных

В системах хранения (SAN, NAS, объектных хранилищах) снапшот реализуется на уровне массива дисков. Существуют два основных подхода:

  • Copy-on-write — при изменении блока его исходное содержимое копируется в отдельное пространство, после чего блок перезаписывается. Создание снапшота мгновенное, но чтение старых данных требует обращения к дельта-файлу.
  • Redirect-on-write — новые данные записываются в новые блоки, а снапшот продолжает ссылаться на исходные. Считается более эффективным при работе с большими объёмами.

В операционной системе Linux снапшоты поддерживаются файловыми системами Btrfs и ZFS. Btrfs позволяет создавать снапшоты томов, в том числе read-only (только для чтения) и read-write. ZFS использует механизм copy-on-write на уровне пула, что обеспечивает целостность данных и защиту от «тихого повреждения» (bit rot).

Базы данных

Снапшот в базах данных — это согласованный набор данных на определённый момент. В реляционных СУБД снапшот реализуется через:

  • механизмы транзакционного изоляции — уровень изоляции SNAPSHOT в Microsoft SQL Server и PostgreSQL, при котором читающий запрос видит данные в состоянии на момент начала транзакции;
  • снимки баз данных — в SQL Server команда CREATE DATABASE SNAPSHOT создаёт неизменяемый read-only образ, пригодный для отчётов и восстановления.

В распределённых базах данных снапшоты используются для консистентных бэкапов без остановки сервиса.

Распределённые системы и управление версиями

В распределённых системах хранения снапшот — это механизм, обеспечивающий согласованное состояние нескольких узлов. Технология Copy-on-write file system (ZFS) на NAS-системах Synology и QNAP позволяет создавать снапшоты с заданной периодичностью и хранить их в течение длительного времени.

В системах контроля версий термин используется в нескольких значениях:

  • Git — снапшотом называют фиксацию состояния рабочего дерева (commit), хотя внутренне Git использует не полные копии, а систему снапшотов с дельта-компрессией;
  • Mercurial — в отличие от Git, каждая ревизия является полным снапшотом дерева файлов.

Сетевые технологии

В сетевых технологологиях снапшот применяется для анализа трафика: Wireshark и tcpdump сохраняют снимок сетевых пакетов в файл pcap для последующего разбора. В программировании снапшот-тестирование (snapshot testing) фиксирует вывод компонента и сравнивает его с сохранённым эталоном при последующих запусках.

Отличие от резервной копии

Снапшот и резервная копия принципиально различаются:

ПараметрСнапшотРезервная копия
Зависимость от исходных данныхДаНет
Защита от отказа носителяНетДа
Скорость созданияМгновеннаяДолгая
ХранениеЛокально, на том же устройствеНа отдельном носителе

Снапшоты дополняют резервное копирование, но не заменяют его.

История

Механизм copy-on-write впервые был описан в операционной системе Multics (1965). В 1980-х годах технология получила развитие в файловой системе Sun Microsystems. Коммерческое применение снапшотов в дисковых массивах началось в конце 1990-х годов с продуктов EMC Timefinder и NetApp.

Источники

  • Таненбаум Э., Бос Х. Современные операционные системы
  • Документация VMware vSphere
  • Документация проекта OpenZFS
  • RFC 3444 — Model for Managing Configuration
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru