Некоторое время назад мы представили возможность создавать снимки диска. Это очень удобная функция, которая позволяет быстро и эффективно сохранять состояние диска даже на работающих системах.
Благодаря ZFS, автоматические снимки будут занимать только разницу между текущим состоянием и моментом создания снимка. Это означает, что если ваш исходный диск был размером 15 ГБ, а между снимком и текущим состоянием изменился только 1 МБ данных, размер снимка составит 1 МБ. Если вы запишете на диск еще один мегабайт, снимок увеличится еще на один мегабайт.
Еще одна прелесть этой системы заключается в том, что любой снимок можно преобразовать (клонировать) в полноценный диск. Это означает, что вы можете создать независимую копию, которую можно смонтировать на сервере, возможно, даже в совершенно другой системе хранения. Таким образом, это формирует основу стратегии управления хранением данных (в зависимости от вашей рабочей нагрузки).
Предупреждение
Хотя использование периодических снимков может быть частью вашей стратегии резервного копирования, неразумно полагаться на снимки как на единственную стратегию.
Существует также множество ситуаций, когда использование этих снимков не сработает, например, создание снимка работающего сервера базы данных. Функция создания снимков все еще может быть полезна на остановленных серверах баз данных (для создания восстановления на определенный момент времени), но, опять же, она не должна быть вашей единственной стратегией резервного копирования.
Создание автоматических снимков
Используя нашу библиотеку Python, автоматизировать создание снимков действительно просто. Однако, учитывая, что нам необходимо хранить учетные данные CloudSigma в системе, которая запускает создание снимков, мы настоятельно не рекомендуем небезопасно раскрывать учетные данные рабочих служб. Если вы хотите запустить это, например, на облачном сервере, убедитесь, что он изолирован от остальной инфраструктуры (например, с помощью нашей функции сетевых политик) и полностью заблокирован.
После установки библиотеки Python вы можете скачать и запустить скрипт следующим образом:
[bash light=”true”] $ wget https://raw.githubusercontent.com/cloudsigma/pycloudsigma/master/samples/snapshot.py$ python snapshot.py drive-uuid my-snapshot
[/bash]
snapshot.py принимает два аргумента:
- UUID диска, снимок которого вы хотите сделать
- Понятное имя для снимка
После того как вы вручную создали снимок и убедились, что он работает (вы можете увидеть это в разделе ‘snapshot’ диска), мы можем автоматизировать этот процесс.
Наиболее подходящим и стандартизированным способом запуска подобной задачи было бы использование crontab (предполагая, что вы работаете в Linux или Mac OS X).
От имени того же пользователя, под которым вы создали снимок выше, выполните:
[bash light=”true”]
$ crontab -e
[/bash]
Если вы хотите делать снимок каждую ночь в 1 час ночи, добавьте следующую строку:
|
1 |
0 1 * * * python /path/to/snapshot.py drive-uuid my-snapshot >> $HOME/snapshot.log 2>&1 |
Вы также заметите, что скрипт будет записывать логи в файл с именем snapshot.log в домашнем каталоге пользователя, запускающего скрипт.
Автоматическое удаление снимков
Поскольку снимки со временем увеличиваются в размерах, вы, скорее всего, захотите удалить их через некоторое время. Чтобы решить эту проблему, мы создали еще один скрипт, который может сделать это за вас. Скрипт называется snapshot_purge.py и принимает два аргумента:
- UUID диска
- Количество дней, в течение которых вы хотите хранить снимки
Например, если вы хотите хранить снимки за последние 30 дней, вы можете просто запустить:
[bash light=”true”]
$ wget https://raw.githubusercontent.com/cloudsigma/pycloudsigma/master/samples/snapshot_purge.py
$ python snapshot_purge.py drive-uuid 30
[/bash]
Конечно, вы также можете автоматизировать и это. Например, если мы хотим удалять снимки старше 30 дней, мы можем добавить в наш crontab следующее (запуск будет происходить в 1:30 ночи):
|
1 |
30 1 * * * python /path/to/snapshot_purge.py drive-uuid 30 >> $HOME/snapshot_purge.log 2>&1 |
Подведем итоги
Вот и всё, друзья. Используя эти два скрипта, вы сможете автоматизировать создание снимков ваших дисков. Если вам нужно делать снимки нескольких дисков, просто добавьте больше строк со snapshot.py в ваш crontab с разными UUID.
Конечно, мы лишь поверхностно коснулись того, что можно делать со снимками, но, надеюсь, это послужит кратким вводным курсом по использованию снимков в ваших процедурах управления хранилищем.
Если у вас более сложные требования к хранению данных, вы, надеюсь, сможете повторно использовать часть кода из скриптов выше.
Комментарии
Комментариев пока нет. Будьте первым.