Резервное копирование vs снапшоты


Рано или поздно все мы сталкиваемся с таким неприятным явлением, как потеря данных. Причины могут быть разными - от выхода из строя оборудования до сбоя программного обеспечения. Последствия потери данных могут быть тоже самыми разными - от потери времени до потери огромных средств. Для предотвращения потерь данных обычно используются два инструмента: резервное копирование и снапшоты (snapshots). В этой статье мы разберемся, в чем между ними разница.

Резервное копирование

Инструмент резервного копирования (backup) в своей классической интерпретации известен всем. Администратор может настроить резервное копирование файлов, папок, всей операционной системы и даже целых дисковых томов (поблочно).

В случае необходимости из созданной резервной копии можно восстановить данные, операционную систему или даже весь диск.

Цели резервного копирования могут быть самыми разными, например, простое архивирование данных на случай их использования в будущем, создание бэкапа для восстановления данных в случае их повреждения или утери, для восстановления операционной системы и приложений.

Нужно понимать, что данные постоянно меняются и созданная резервная копия устаревает сразу же после ее создания. Скажем так, пусть в 7:00:00 вы инициировали создание резервной копии и в 7:30:00 она была создана. Если вы в 7:30:01 инициируете восстановление данных, то есть огромная вероятность, что система после восстановления в 8:00:00 все равно не будет такой, какой она была в 7:30:00 - на момент создания резервной копии. В некоторых случаях это не важно, поскольку нужно восстановить только содержимое файлов данных. В некоторых случаях - очень важно, поскольку будут потеряны все данные с момента создания резервной копии. Все просто: пусть вы создали резервную копию какого-нибудь файла в 7:00, а в 17:00 кто-то случайно удалил этот файл. Вы можете его восстановить, но только по состоянию на 7:00 - все изменения за 10 часов работы будут утеряны.

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

Резервное копирование может быть полным и инкрементным. Инкрементное используется для экономии ресурсов. При инкрементном резервном копировании копируются не все данные, а только измененные. Восстановить оригинал при использовании инкрементного копирования возможно только при наличии всей цепочки копий.

При полном резервном копировании сохраняются все данные, но при этом требуется больше дискового пространства для хранения бэкапа и времени - на его создание.

Снапшоты

Даже если вы сделали полную резервную копию всего диска, при восстановлении из такой резервной копии состояние компьютера не будет восстановлено полностью. Причин тому много. Самая значимая - резервное копирование требует значительного времени и за это время могут быть изменены многие файлы. То есть резервная копия уже сразу после создания считается неактуальной.

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

В момент создания снимка виртуальной машины прекращается запись на ее диски, а все последующие дисковые операции производятся в отдельном файле. Именно поэтому становится возможным запись полного состояния компьютера на момент создания снимка.

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

Что выбрать?

Нужно понимать, что у бэкапов и снимкой разное предназначение. Бэкапы используются для долгосрочного архивирования данных, снимки применяются для различных экспериментов с виртуальным сервером, например, когда нужно применить то или иное обновление, но вы беспокоитесь, чтобы не навредить. В этом случае создается снимок, позволяющий в случае неудачного эксперимента вернуть все, как было. А для защиты от потери данных принято использовать резервное копирование. Поэтому в идеале для защиты от потери данных и прочих неприятностей нужно использовать оба инструмента.