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

Снапшот

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

История

Концепция снапшотов возникла в 1970-х годах в рамках развития файловых систем и систем управления базами данных (СУБД). Одним из первых примеров реализации стала файловая система WAFL (Write Anywhere File Layout) компании Network Appliance (ныне NetApp), представленная в 1992 году. WAFL позволяла создавать снапшоты без значительного снижения производительности, используя механизм copy-on-write (копирование при записи). В 1990-х годах технология была адаптирована для виртуальных машин (VMware, 1999) и систем хранения данных (SAN, NAS). В 2000-х годах снапшоты стали стандартной функцией в большинстве современных операционных систем (ZFS, Btrfs, NTFS) и облачных платформ (Amazon EBS, Microsoft Azure, Яндекс.Облако).

Принцип работы

Снапшот не является полной копией всех данных, а представляет собой указатель на состояние системы в момент времени. Основные механизмы реализации:

Copy-on-Write (COW)

При создании снапшота система фиксирует метаданные (указатели на блоки данных). При изменении исходных данных (например, перезаписи файла) старый блок данных копируется в область снапшота, а новый блок записывается на место. Таким образом, снапшот хранит только изменённые данные, а не всю копию.

Redirect-on-Write (ROW)

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

Clone (клонирование)

Снапшот может быть использован для создания полноценной копии данных (клона), доступной для чтения и записи. Клон использует те же блоки данных, что и исходный снапшот, до момента изменения.

Классификация снапшотов

Снапшоты классифицируются по нескольким признакам:

По уровню реализации

  • Файловые снапшоты — создаются на уровне файловой системы (например, ZFS, Btrfs, NTFS). Позволяют восстанавливать отдельные файлы или каталоги.
  • Блочные снапшоты — создаются на уровне блочного устройства (например, LVM, Amazon EBS). Фиксируют состояние всего диска или раздела.
  • Снапшоты виртуальных машин — создаются гипервизором (VMware, Hyper-V, KVM) и включают состояние виртуальной машины: память, диски, конфигурацию.
  • Снапшоты баз данных — создаются СУБД (Oracle, PostgreSQL, MySQL) для обеспечения целостности транзакций.

По способу создания

  • Полные снапшоты — фиксируют всё состояние системы. Требуют больше места, но обеспечивают быстрое восстановление.
  • Инкрементальные снапшоты — фиксируют только изменения с момента предыдущего снапшота. Экономят место, но восстановление требует последовательного применения всех снимков.
  • Дифференциальные снапшоты — фиксируют изменения относительно базового снапшота. Восстановление требует только базового и последнего дифференциального снимка.

По доступности

  • Только для чтения — снапшот нельзя изменить, используется для восстановления.
  • Чтение/запись — снапшот можно монтировать и редактировать, создавая клон.

Применение

Резервное копирование и восстановление

Снапшоты позволяют создавать мгновенные копии данных без остановки работы системы. В случае сбоя (удаление файла, вирусная атака, ошибка обновления) можно восстановить данные на момент создания снапшота. Например, в VMware vSphere снапшоты используются для создания точек восстановления перед установкой обновлений.

Тестирование и разработка

Разработчики используют снапшоты для создания изолированных сред. После завершения тестирования или экспериментов система возвращается к исходному состоянию. В облачных платформах (Amazon EC2, Яндекс.Облако) снапшоты дисков позволяют быстро разворачивать копии виртуальных машин.

Защита от ошибок

Снапшоты применяются для защиты от человеческих ошибок (например, случайное удаление данных). В файловых системах ZFS и Btrfs снапшоты могут быть созданы автоматически по расписанию.

Миграция данных

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

Преимущества и недостатки

Преимущества

  • Мгновенность создания — снапшот создаётся за секунды, не требуя копирования всех данных.
  • Минимальное влияние на производительность — механизмы COW и ROW снижают нагрузку на дисковую подсистему.
  • Экономия места — хранятся только изменённые блоки данных.
  • Гибкостьподдержка на разных уровнях (файлы, блоки, виртуальные машины).

Недостатки

  • Зависимость от исходных данных — снапшот не является самостоятельной копией; при повреждении исходных данных снапшот может стать недоступным.
  • Снижение производительности при длительном хранении — при большом количестве снапшотов (например, сотни) система может замедляться из-за необходимости отслеживать изменения.
  • Ограниченный срок хранения — снапшоты не предназначены для долгосрочного хранения; их рекомендуется использовать как временные точки восстановления.
  • Риск потери целостности — при создании снапшота во время активной записи данных (например, в базах данных) может потребоваться принудительная синхронизация (flush) для обеспечения консистентности.

Снапшоты в различных системах

Файловые системы

  • ZFS (OpenZFS) — поддерживает снапшоты на уровне пулов хранения. Снапшоты могут быть отправлены на удалённый сервер (zfs send/receive).
  • Btrfs — поддерживает снапшоты подтомов (subvolumes). Используется в Linux (например, в openSUSE, Fedora).
  • NTFS — в Windows поддерживает теневые копии (Volume Shadow Copy Service, VSS) для создания снапшотов томов.

Гипервизоры

  • VMware vSphere — поддерживает снапшоты виртуальных машин (VMware Snapshot). Включает состояние памяти, дисков и конфигурации.
  • Hyper-V — поддерживает снапшоты (Checkpoints) с возможностью создания стандартных и производственных (Production Checkpoints).
  • KVM — снапшоты создаются через QEMU или libvirt, поддерживают диски и память.

Облачные платформы

  • Amazon EBS — снапшоты томов Elastic Block Store. Хранятся в Amazon S3, могут быть использованы для создания новых томов.
  • Microsoft Azure — снапшоты управляемых дисков (Managed Disks). Поддерживают инкрементальные снимки.
  • Яндекс.Облако — снапшоты дисков виртуальных машин. Создаются через консоль управления или API.

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

  • В ZFS снапшоты могут быть использованы для создания «клонированных» файловых систем, которые занимают минимальное место до момента изменения данных.
  • В VMware vSphere снапшот виртуальной машины может включать состояние оперативной памяти, что позволяет восстановить машину в точности на момент снимка.
  • В некоторых системах (например, Btrfs) снапшоты могут быть вложенными — снапшот снапшота.
  • В облачных платформах снапшоты часто используются для автоматического резервного копирования по расписанию (например, ежедневные снапшоты с хранением 7 дней).

Источники

  • Oracle Solaris ZFS Administration Guide
  • VMware vSphere Documentation: Snapshots
  • Microsoft Docs: Volume Shadow Copy Service
  • Amazon Web Services Documentation: EBS Snapshots
  • OpenZFS Documentation: Snapshots and Clones
  • Btrfs Wiki: Snapshots

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →