Снапшот (snapshot) — консистентная точка восстановления, фиксирующая состояние данных на конкретный момент времени. В отличие от полного резервного копирования, снапшот создаётся мгновенно (секунды) за счёт механизма COW (Copy-on-Write): исходные блоки данных не копируются немедленно, а помечаются; новые записи идут в отдельную область, оригинальные блоки сохраняются при первом изменении.
Как работает COW-снапшот
При создании снапшота файловая система или гипервизор:
- Фиксирует метаданные о текущем состоянии блоков (без физического копирования)
- При записи нового данных в основную область — сначала копирует оригинальный блок в область снапшота, затем записывает новые данные
- Снапшот хранит только изменённые блоки, что минимизирует дисковое пространство
Системы, реализующие снапшоты на уровне файловой системы: ZFS (самая продвинутая реализация — снапшоты атомарны и мгновенны), LVM (Logical Volume Manager в Linux), Btrfs. На уровне гипервизора: VMware vSphere (VMDK-снапшоты), KVM/QEMU (qcow2 snapshots), Proxmox.
История
Механизм COW для снапшотов впервые реализовала файловая система AFS в конце 1980-х. Снапшоты LVM появились в Linux около 2001 года. ZFS с нативными снапшотами представила Sun Microsystems в 2001 году (публичный релиз — 2004). VMware внедрила снапшоты виртуальных машин в vSphere 4.0 (2009). AWS EBS Snapshots (2009) сделали снапшоты стандартным инструментом облачных операций.
Снапшот vs бэкап
| Параметр | Снапшот | Бэкап |
|---|---|---|
| Скорость создания | Секунды | Минуты–часы |
| Хранение | Тот же носитель | Внешнее хранилище |
| Защита от отказа диска | Нет | Да |
| Восстановление | Мгновенно | Минуты–часы |
| Цена хранения | Дорого (тот же SSD) | Дёшево (S3, лента) |
Применение на VPS и выделенных серверах
Хостинг-провайдеры (Hetzner, DigitalOcean, Timeweb) предлагают снапшоты VPS через API или панель управления. Hetzner: снапшот VPS стоит 20% от цены сервера в месяц за хранение. DigitalOcean: $0,05/ГБ/мес. Снапшоты у провайдера — удобный способ зафиксировать состояние перед рискованными изменениями (обновление ОС, миграция приложений). Критически важно: снапшоты провайдера не заменяют бэкап в стороннем хранилище — при отказе всего датацентра снапшоты теряются вместе с данными.
Как работают снапшоты технически
Copy-on-Write (CoW) — основной механизм снапшотов. При создании снапшота система не копирует данные немедленно — только записывает ссылку на текущее состояние. При первой записи в оригинальный блок система сначала сохраняет старую версию блока в снапшот, затем записывает новые данные. Снапшот растёт только по мере изменения данных.
LVM снапшоты в Linux: lvcreate -L10G -s -n snap /dev/vg0/lv0 создаёт снапшот с резервным пространством 10 ГБ. Пока изменения данных не превысят 10 ГБ, снапшот остаётся актуальным. ZFS реализует снапшоты на уровне файловой системы: zfs snapshot pool/dataset@snap1 — мгновенная операция.
Снапшоты в виртуализации
В KVM/QEMU снапшоты виртуальных машин работают через qcow2-формат дисков, который нативно поддерживает CoW-снапшоты. Команда: virsh snapshot-create-as vm1 snap1. Гипервизор VMware использует термин «checkpoint» (до vSphere 6) и «snapshot» — механизм тот же.
В облачных провайдерах снапшот EBS (Amazon) или диска DigitalOcean/Hetzner — это инкрементальная резервная копия блочного устройства. Первый снапшот — полная копия диска, последующие — только изменившиеся блоки. Стоимость рассчитывается по суммарному объёму изменений, не по размеру диска.
Снапшот vs бэкап: ключевое отличие
Снапшот — не замена бэкапу. Снапшот хранится на том же физическом хранилище, что и оригинальные данные. При отказе дискового массива теряются и данные, и все снапшоты. Бэкап хранится независимо — на другом носителе или в другом дата-центре. Снапшоты подходят для быстрого отката после обновления; бэкапы — для восстановления после катастрофы.