3.5.1 Доступ к предыдущим версиям файлов с помощью shadow_copy
nano /etc/selinux/config
Заменив текст SELINUX=enforcing
на SELINUX=permissive
Выполните:
setenforce 0
Более подробно см.ссылку
Не забудьте включить 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 механизм снапшотов устроен достаточно хитро. Основные моменты:
- Снапшот не должен быть такого же размера, что и исходный диск, а может быть значительно меньше.
- В момент создания снапшот полностью пустой. То есть никакие данные при создании снапшота никуда не копируются.
- После того, как снапшот создан, при записи данных на исходный диск оригинальные данные сохраняются на снапшот. Т.е. всё на самом деле просто. Если что-то пишется на оригинал, что на снапшоте сохраняются оригинальные данные. А если что-то на оригинале не изменяется, то и смысла писать это на снапшот нет, можно напрямую считать с оригинала. Весь этот механизм обслуживается LVM и внешне снапшот выглядит как диск точно такого-же размера, как и оригинал, с полной ФС и всеми файлами на момент создания снапшота. Если вам сложно это всё понять - попробуйте изобразить на бумажке процесс записи данных на диск, для которого создан снапшот. Учитывая, что конечные файлы и ФС - это самый верхний уровень абстракции, под которым в нашем случае находится механизм снапшотов, механизм логических томов и групп томов LVM и только потом реальные физические винчестеры вашего компьютера.
Поскольку снапшот не хранит все данные оригинала, а только разницу с оригиналом с момента создания снапшота, то размер снапшота может быть сильно меньше оригинала. В случае, если снапшот переполнится, т.е. если суммарный размер отличий от оригинала превысит объём снапшота, то он автоматически деактивируется. Кстати, размер снапшота в любой момент можно увеличить.
Поскольку если для диска существует снапшот, то запись данных на этот диск будет приводить к физической одновременной записи данных и на снапшот. Т.е. реально количество физических дисковых операций возрастёт чуть ли не в 2 раза, что может существенно снизить скорость записи на оригинал. Если же снапшотов много - то скорость записи может упасть в разы. Учитывайте это при работе со снапшотами.
Настройка снапшотов
Для бэкапов был подключен пустой жесткий диск.
Посмотрите доступные диски
# fdisk -l
Имя диска должно быть dev/sdb, dev/sdc и т.д.
Если вы создаете тонкий LV, а затем «снимок» тонкого LV, то, вы получите два тонких LV. Они оба используют экстенты из одного и того же пула, и размер будет расти динамически по мере необходимости.
Создайте группу shadow для тома вне LVM группы.
shadow /dev/sda3
# vgcreate shadow /dev/sda3
Создайте «тонкий» пул в группе, он задаст максимальный объем файлов, хранящихся на всех шарах. В данном случае создан раздел, размером 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
Дата последнего изменения: 20.09.2022
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.