Снимок данных¶
Снимок данных (англ. snapshot) — это состояние набора данных, зафиксированное на определённый момент времени. В вычислительной технике и системах хранения данных снимок представляет собой копию или ссылку на состояние файловой системы, тома, базы данных или виртуальной машины в конкретный момент, позволяющую восстановить данные или получить доступ к их предыдущей версии. Снимки используются для резервного копирования, защиты от сбоев, тестирования и анализа данных без прерывания основной работы системы.
¶История
Концепция снимков данных возникла в 1970-х годах в связи с развитием систем управления базами данных (СУБД) и необходимостью создания согласованных копий данных для резервного копирования без остановки работы. Ранние реализации, такие как в СУБД IBM System R, использовали механизмы копирования при записи для фиксации состояния базы данных.
В 1980-х годах снимки стали применяться в файловых системах. Одной из первых коммерческих реализаций была файловая система WAFL (Write Anywhere File Layout) компании Network Appliance (ныне NetApp), представленная в 1992 году. WAFL позволяла создавать мгновенные снимки томов с минимальным влиянием на производительность.
В 2000-х годах технология получила широкое распространение в системах виртуализации (VMware, Hyper-V), где снимки виртуальных машин стали стандартным инструментом для тестирования и восстановления. В 2010-х годах снимки интегрировались в облачные платформы (Amazon EBS, Microsoft Azure, Яндекс.Облако), где они используются для резервного копирования и миграции данных.
¶Принцип работы
Снимок данных создаётся путём фиксации состояния системы в определённый момент. Для этого используются два основных подхода:
¶Копирование при записи (Copy-on-Write, CoW)
При создании снимка система не копирует все данные немедленно. Вместо этого она записывает метаданные, указывающие на текущее расположение блоков. Когда данные в исходном томе изменяются, перед записью старые блоки копируются в область снимка. Таким образом, снимок содержит только те блоки, которые были изменены после его создания. Этот метод экономит место и время, но может снижать производительность при записи.
¶Перенаправление при записи (Redirect-on-Write, RoW)
При изменении данных новые блоки записываются в новое место, а указатели на старые блоки остаются в снимке. Исходный том постепенно становится «разреженным», так как его данные перераспределяются. Этот подход снижает накладные расходы на чтение, но может приводить к фрагментации.
¶Разделение указателей (Split-Mirror)
Создаётся полная копия данных (зеркало), которая затем отсоединяется от основного тома. Снимок представляет собой независимую копию на момент разделения. Этот метод требует вдвое больше места, но обеспечивает высокую производительность, так как не влияет на запись.
¶Виды снимков
Снимки данных классифицируются по нескольким признакам:
¶По уровню
- Снимки файловой системы — фиксируют состояние файловой системы на уровне блоков или inode. Примеры: ZFS snapshots, btrfs snapshots, LVM snapshots.
- Снимки томов — создаются на уровне логических томов (LVM) или массивов хранения (SAN, NAS).
- Снимки баз данных — создаются СУБД (например, SQL Server, PostgreSQL) для обеспечения согласованности транзакций.
- Снимки виртуальных машин — фиксируют состояние виртуальной машины, включая память, диски и конфигурацию (VMware, Hyper-V).
¶По способу создания
- Мгновенные (instant) — создаются за секунды, так как не требуют копирования всех данных.
- Полные (full) — требуют времени на копирование всех блоков, но обеспечивают независимость от исходного тома.
- Инкрементальные (incremental) — содержат только изменения с момента предыдущего снимка.
¶По согласованности
- Согласованные (consistent) — гарантируют, что данные в снимке находятся в целостном состоянии (например, после завершения всех транзакций). Для этого используются механизмы, такие как заморозка приложений (VSS в Windows, fsfreeze в Linux).
- Несогласованные (crash-consistent) — фиксируют состояние на момент сбоя, что может приводить к повреждению данных, но позволяет восстановить систему после аварии.
¶Применение
¶Резервное копирование
Снимки позволяют создавать резервные копии без остановки работы системы. Например, в облачных платформах (Amazon EBS, Яндекс.Облако) снимки дисков используются для создания точек восстановления, которые затем можно развернуть на новых инстансах.
¶Восстановление после сбоев
При сбое системы или ошибке пользователя снимок позволяет вернуть данные к предыдущему состоянию. В виртуальных средах это особенно полезно для тестирования обновлений или изменений конфигурации.
¶Тестирование и разработка
Разработчики используют снимки для создания изолированных сред, где можно безопасно тестировать код, не влияя на продуктивные данные. После тестирования среда откатывается к снимку.
¶Анализ данных
Снимки могут использоваться для создания отчётов или аналитики на основе данных на определённый момент, не нагружая продуктивную систему.
¶Примеры реализации
¶В операционных системах
- ZFS (OpenZFS) — файловая система с поддержкой мгновенных снимков, используемая в FreeBSD, Solaris и Linux. Снимки ZFS являются копиями при записи и могут быть смонтированы как отдельные точки монтирования.
- btrfs — файловая система для Linux, поддерживающая снимки подтомов. Используется в SUSE Linux Enterprise и Fedora.
- LVM (Logical Volume Manager) — в Linux позволяет создавать снимки логических томов с помощью механизма копирования при записи.
¶В системах виртуализации
- VMware vSphere — поддерживает снимки виртуальных машин, включая состояние памяти. Снимки могут быть объединены в цепочки для создания точек восстановления.
- Microsoft Hyper-V — использует стандартные снимки (checkpoints) для виртуальных машин, которые могут быть стандартными или производственными (с согласованием приложений).
¶В облачных платформах
- Amazon EBS — сервис блочного хранения в AWS, позволяющий создавать снимки томов EBS. Снимки хранятся в Amazon S3 и могут быть использованы для создания новых томов в любом регионе.
- Яндекс.Облако — сервис «Диски» позволяет создавать снимки дисков виртуальных машин. Снимки хранятся в объектном хранилище и могут быть развёрнуты в новых зонах доступности.
- Microsoft Azure — Managed Disks поддерживают создание снимков, которые могут быть использованы для резервного копирования и миграции.
¶В системах хранения данных
- NetApp ONTAP — поддерживает снимки (Snapshots) на уровне томов, которые могут быть запланированы по расписанию. Снимки NetApp используются для защиты данных и быстрого восстановления.
- Dell EMC Unity — поддерживает снимки на уровне LUN (логических номеров устройств) с возможностью создания до 256 снимков на один LUN.
¶Преимущества и недостатки
¶Преимущества
- Быстрота создания — снимки создаются за секунды, независимо от объёма данных.
- Минимальное влияние на производительность — при использовании CoW или RoW снимки не требуют копирования всех данных.
- Экономия места — снимки хранят только изменённые блоки, если не используются полные копии.
- Возможность восстановления — снимки позволяют откатить систему к любой точке во времени.
¶Недостатки
- Зависимость от исходного тома — снимки, основанные на CoW, требуют наличия исходного тома для чтения данных. Если исходный том повреждён, снимок может быть недоступен.
- Снижение производительности при записи — при активной записи в исходный том снимки могут замедлять систему из-за копирования старых блоков.
- Ограничения по количеству — многие системы имеют ограничения на число снимков (например, до 255 в ZFS, до 256 в NetApp).
- Необходимость управления — без автоматического удаления старых снимков они могут заполнить хранилище.
¶Интересные факты
- В файловой системе ZFS снимки могут быть отправлены на удалённый сервер с помощью команды
zfs send, что позволяет создавать инкрементальные резервные копии. - В VMware снимки не рекомендуется хранить дольше 72 часов, так как они могут расти в размере и снижать производительность виртуальной машины.
- В облачных платформах снимки часто используются для миграции данных между регионами: снимок создаётся в одном регионе, а затем разворачивается в другом.
- В системах управления базами данных, таких как PostgreSQL, снимки могут быть созданы с помощью команды
pg_start_backup()иpg_stop_backup(), что позволяет создавать согласованные копии без остановки СУБД.
¶Источники
- Снимок (информационные технологии) — Википедия. Материал из Википедии — свободной энциклопедии.
- NetApp Snapshot Technology — документация NetApp.
- ZFS Administration Guide — документация OpenZFS.
- Amazon EBS Snapshots — документация AWS.
- VMware vSphere Snapshot Best Practices — документация VMware.
- LVM Snapshots — документация Linux.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


