Репликация на основе снимков
Репликация на основе снимков (англ. snapshot-based replication) — это метод синхронизации данных между двумя или более системами хранения (логическими или физическими томами, базами данных, виртуальными машинами), при котором для передачи изменений используется последовательность полных или инкрементальных снимков состояния (snapshot) исходного набора данных. Данный подход применяется в системах резервного копирования, аварийного восстановления (Disaster Recovery, DR) и миграции данных.
Принцип работы
Репликация на основе снимков опирается на технологию создания моментальных копий (снимков) файловой системы, логического тома (LVM), хранилища (SAN/NAS) или гипервизора. Снимок фиксирует состояние данных на определённый момент времени, после чего система отслеживает изменения, произошедшие после создания снимка (так называемые дельты или блоки изменений).
Процесс включает следующие этапы:
- Создание начального снимка — полная копия исходного набора данных (например, всего диска виртуальной машины) передаётся на целевой узел. Этот этап может быть длительным и ресурсоёмким.
- Отслеживание изменений — после первого снимка система начинает мониторинг изменений блоков данных на исходном томе. Обычно для этого используется bitmap (карта изменённых блоков) или журнал транзакций.
- Создание инкрементального снимка — через заданный интервал (например, каждые 15 минут или 1 час) создаётся новый снимок, который содержит только блоки, изменившиеся с момента предыдущего снимка.
- Передача дельты — инкрементальный снимок (или его метаданные) передаётся на целевой узел, где применяется к предыдущему состоянию реплики.
- Применение на целевом узле — целевой узел последовательно применяет полученные дельты, восстанавливая состояние исходного набора данных на момент последнего снимка.
В отличие от синхронной репликации, где каждая операция записи дублируется на целевой узел до подтверждения завершения, репликация на основе снимков является асинхронной: целевой узел отстаёт от исходного на время между созданием снимков (так называемое «окно отставания»). Это делает метод менее подходящим для систем, требующих нулевой потери данных (RPO = 0), но значительно снижает нагрузку на сеть и производительность исходного узла.
Виды снимков
Снимки, используемые в репликации, могут быть:
- Полные (full snapshots) — содержат все данные на момент создания. Используются для начальной репликации или периодического обновления полной копии.
- Инкрементальные (incremental snapshots) — содержат только изменения с момента предыдущего снимка. Наиболее распространённый тип для регулярной репликации.
- Дифференциальные (differential snapshots) — содержат изменения с момента последнего полного снимка. Используются реже, так как требуют больше места для хранения.
В некоторых реализациях (например, в ZFS, Btrfs, Veeam, VMware vSphere) снимки реализованы на уровне файловой системы (Copy-on-Write, COW) или на уровне гипервизора. В других (например, в системах хранения NetApp, Dell EMC) — на уровне контроллера СХД.
Применение
Аварийное восстановление (Disaster Recovery)
Репликация на основе снимков является основным механизмом для создания удалённых копий данных с возможностью быстрого переключения на резервный узел в случае отказа основного. Периодическая передача снимков позволяет поддерживать приемлемое значение RPO (Recovery Point Objective) — обычно от нескольких минут до нескольких часов. При этом RTO (Recovery Time Objective) может составлять от нескольких минут до нескольких десятков минут, в зависимости от объёма данных и производительности целевого узла.
Резервное копирование
Многие системы резервного копирования (например, Veeam Backup & Replication, Acronis, Commvault) используют снимки для создания «горячих» копий работающих систем без остановки их работы. Репликация на основе снимков позволяет также организовать off-site копирование — передачу резервных копий на удалённое хранилище.
Миграция данных
При переносе виртуальных машин или томов между физическими серверами или облачными платформами часто используется репликация на основе снимков: сначала передаётся полный снимок, затем — инкрементальные, и на финальном этапе происходит короткое переключение на целевую систему.
Преимущества и недостатки
Преимущества
- Низкая нагрузка на исходный узел — снимки создаются без остановки работы приложений (за исключением кратковременной блокировки записи на момент создания снимка).
- Эффективность передачи — инкрементальные снимки передают только изменившиеся блоки, что экономит пропускную способность канала.
- Гибкость — возможность восстановления на любой момент времени, для которого есть снимок.
- Поддержка различных сценариев — от простого резервного копирования до сложных схем аварийного восстановления.
Недостатки
- Задержка данных (lag) — целевой узел всегда отстаёт от исходного на время между снимками. При сбое основного узла данные, записанные после последнего снимка, могут быть потеряны.
- Потребление ресурсов хранения — снимки могут занимать значительное место, особенно при частом создании полных копий.
- Сложность управления — требуется тщательная настройка расписания снимков, политик хранения и механизмов очистки старых копий.
- Зависимость от технологии снимков — не все файловые системы и системы хранения поддерживают эффективные снимки (например, Copy-on-Write). В некоторых реализациях снимки могут существенно замедлять производительность ввода-вывода.
Примеры реализаций
- ZFS — встроенная поддержка снимков и репликации через утилиту
zfs send/receive. Позволяет создавать как полные, так и инкрементальные снимки, передавать их по сети. - Btrfs — аналогичная функциональность через
btrfs send/receive. - VMware vSphere — репликация виртуальных машин на основе снимков через функциональность vSphere Replication.
- Microsoft Hyper-V — репликация на основе снимков через Hyper-V Replica.
- NetApp SnapMirror — технология репликации на основе снимков на уровне СХД NetApp.
- Veeam Backup & Replication — использует снимки VMware или Hyper-V для создания резервных копий и репликации.
Отличие от других методов репликации
- Синхронная репликация — каждая операция записи подтверждается только после записи на оба узла. Обеспечивает RPO = 0, но требует низкой задержки сети и высокой пропускной способности. Репликация на основе снимков — асинхронная, с ненулевым RPO.
- Асинхронная репликация на уровне блоков (block-level replication) — передаёт каждый блок записи по мере его изменения, без использования снимков. Отличается более частой синхронизацией (до нескольких секунд), но требует постоянного канала связи. Репликация на основе снимков менее требовательна к сети, но даёт большее окно отставания.
- Лог-репликация (log shipping) — передача журналов транзакций базы данных. Применима только для СУБД, поддерживающих эту технологию (например, Microsoft SQL Server, PostgreSQL). Репликация на основе снимков универсальна и не привязана к конкретной СУБД.
Источники
- Oracle Solaris ZFS Administration Guide — «ZFS Snapshots and Clones»
- VMware vSphere Documentation — «vSphere Replication»
- NetApp Technical Report TR-4010 — «SnapMirror Configuration and Best Practices»
- Veeam Backup & Replication User Guide — «Replication from Backup»
- Microsoft Docs — «Hyper-V Replica Overview»
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →