6.1 Доступ к предыдущим версиям файлов с помощью shadow_copy

Все действия выполняйте с отключенным selinux.

Процедура настройки «теневых копий» делится на две часати:

— предоставление клиентам Microsoft Shadow Copy возможности просматривать снимки файловой системы как «теневые копии» на шарах Samba;

— механизм создания «теневых копий».

Настройка в samba механизма «теневых копий»

Samba позволяет вам организовать хранение предыдущих версий файла так, чтобы они были доступны механизму учёта предыдущих версий в Windows. Для этого предназначен специальный модуль vfs object с именем shadow_copy2. Для активации этого механизма со стороны Samba просто добавьте в блок, описывающий нужную вам шару, несколько строк. Для примера создадим шару secure. Добавьте в её блок параметр, активирующий shadow_copy2 и параметр shadow:snapdir указывающий, где будут хранится снапшоты. В данном случае, они будут хранится в скрытом каталоге с именем самой шары.

[secure]
vfs objects = shadow_copy2
shadow:snapdir = /srv/.share
path = /srv/share
valid users = @secure
guest ok = no
writable = yes
browsable = yes

Теперь добавьте настройки в секции [global]:

[global]
wide links = yes
unix extensions = no
allow insecure wide links = no

wide links разрешает samba проходить по символьным ссылкам

unix extensions = запрещает *nix клиентам создание символьных ссылок (и еще несколько возможностей, которые вам могут не понадобиться)

allow insecure wide links эту опцию включаем в yes только при включенных unix extensions иначе wide links останутся недоступны.

На этом настройку можно закончить. Дополнительные параметры приведены на сайте samba.org и доступны по ссылке.

Механизм создания «теневых копий»

Описание LVM и рекомендации.

Механизм создания «теневых копий» реализуем с помощью LVM снапшотов.

Снапшот — это моментальная копия диска на момент создания этого самого снапшота. т.е. снапшоты позволяют заморозить некое состояние диска в какой-то момент, а потом использовать это замороженное состояние с любыми целями. Мы снимаем в момент Х снапшот всего диска sgare, далее его монтируем в каталог /srv/.share/@GMT-X и после этого в Windows на вкладке предыдущих версий мы увидим версию файла на момент Х. Кстати, если файл с момента Х не изменится, то на вкладке предыдущих версий ничего отображаться не будет, учтите это.

В LVM механизм снапшотов устроен достаточно хитро. Основные моменты:

  1. Снапшот не должен быть такого же размера, что и исходный диск, а может быть значительно меньше.
  2. В момент создания снапшот полностью пустой. То есть никакие данные при создании снапшота никуда не копируются.
  3. После того, как снапшот создан, при записи данных на исходный диск оригинальные данные сохраняются на снапшот. Т.е. всё на самом деле просто. Если что-то пишется на оригинал, что на снапшоте сохраняются оригинальные данные. А если что-то на оригинале не изменяется, то и смысла писать это на снапшот нет, можно напрямую считать с оригинала. Весь этот механизм обслуживается LVM и внешне снапшот выглядит как диск точно такого-же размера, как и оригинал, с полной ФС и всеми файлами на момент создания снапшота. Если вам сложно это всё понять — попробуйте изобразить на бумажке процесс записи данных на диск, для которого создан снапшот. Учитывая, что конечные файлы и ФС — это самый верхний уровень абстракции, под которым в нашем случае находится механизм снапшотов, механизм логических томов и групп томов LVM и только потом реальные физические винчестеры вашего компьютера.

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

Поскольку если для диска существует снапшот, то запись данных на этот диск будет приводить к физической одновременной записи данных и на снапшот. Т.е. реально количество физических дисковых операций возрастёт чуть ли не в 2 раза, что может существенно снизить скорость записи на оригинал. Если же снапшотов много — то скорость записи может упасть в разы. Учитывайте это при работе со снапшотами.

Настрока снапшотов

Для бекапов был подключен пустой жесткий диск.

Посмотрите доступные диски

# fdisk -l

Имя диска должно быть dev/sdb, dev/sdc и т.д.

Если вы создаете тонкий LV, а затем «снимок» тонкого LV, то, вы получите два тонких LV. Они оба используют экстенты из одного и того же пула, и размер будет расти динамически по мере необходимости.

Создайте «тонкий» пул в группе, он задаст максимальный объем файлов, хранящихся на всех шарах. В данном случае создан раздел, размером 10 Гигабайт. Выставите необходимый вам размер.

# lvcreate --thinpool lvpool --size 10G shadow

Проверьте успешность создания lvm группы командой

# vgdisplay

успешность создания раздела командой

# lvdisplay

Создайте «тонкий» LV в пуле:

lvcreate --name share --virtualsize 5G --thin shadow/lvpool

Отформатируйте раздел в желаемую файловую систему. В данном примере форматирую в ext3.

# mkfs.ext4 -L var /dev/shadow/share

Примонтируйте созданный раздел в папку, где будут хранится бекапы. Для этого добавьте в /etc/fstab/ строку

/dev/shadow/share /srv/share ext4 defaults,nosuid,noexec,acl 0 2

И примонтируйте его

# mount –av

Проверьте владельца и группу каталогов у папки с шарой. Владельцем должен быть root, группой в нашем случае secure. В случае монтирования анонимной шары, группой и пользователем должен быть nobody.

# chown -R root:secure /srv/share/

Выставите необходимые права, например 775.

# chmod -R 775 /srv/share

Создайте снапшот с именем в формате 2010.01.01-12.00.00 для логического тома /dev/shadow/share размером 1Gb

# lvcreate -L 1G -n 2018.03.26-16.52.45 -s /dev/shadow/share

Создайте директорию с именем @GMT-2010.01.01-12.00.00 в каталоге /dev/shadow/share и примонтировать туда наш снапшот

# mkdir –p /srv/.share/\@GMT- 2010.01.01-12.00.00
# mount -r /dev/shadow/2010.01.01-12.00.00 /srv/.share/\@GMT-2010.01.01-12.00

Автоматизация

Выполните от пользователя root скрипт shadow_copy_create.sh с параметрами.

Если он не запускается, дайте права на его выполнение.

# chmod +x shadow_copy_create.sh

Допишите имя lvm раздела, для которой будет создаваться снапшот и размер создаваемой копии.

У вас должно получиться примерно следующее

# ./shadow_copy_create.sh shadow/share 0,2G

Воспользуйтесь cron для автоматического создания снапшотов.

Переместите скрипт, например в /usr/local/bin/

Отредактируйте файл /etc/crontab. Например для создания ежедневных снапшотов в 23.30 впишите следующую строку.

30 23 * * * root /usr/local/bin/shadow_copy_create.sh shadow/share 0,2G

 

Если вы нашли ошибку, выделите текст и нажмите Ctrl+Enter.