Начиная с FreeBSD 5.0 появилась возможность генерация мгновенных копий файловых систем.
Я приведу пару способов, как это можно сделать.
Рассмотрим их.
Мгновенные копии позволяют пользователю создавать образы заданных файловых систем и работать с ними как с файлами.
Файлы мгновенных копий должны создаваться в той файловой системе, над которой производится действие, и пользователь может создавать не более 20 мгновенных копий для каждой файловой системы.
Активные копии записываются в суперблок, так что они остаются в силе между операциями монтирования и размонтирования в процессе системных перезагрузок.
Если мгновенная копия больше не нужна, она может быть удалена стандартной командой rm(1).
Мгновенные копии могут удаляться в любом порядке, однако всё использованное пространство не может быть использовано, так как другая мгновенная копия может претендовать на некоторые блоки из освобождённых.
Неизменяемый флаг snapshot устанавливается на файл при помощи mksnap_ffs(8) после первоначального создания файла мгновенной копии. Команда unlink(1) делает исключение для файлов мгновенных копий, позволяя их удалять.
Файлы мгновенных копий файловых систем (к примеру, /var) можно найти при помощи команды find(1):
Мгновенные копии создаются при помощи утилиты mount(8). Чтобы создать мгновенную копию /var в файле /var/snapshot/test, воспользуйтесь такой командой:
Когда использование мгновенной копии закончено, можно отмонтировать snapshot:
Также есть утилита для удобного управления снапшотами freebsd-snapshot
Ссылки:
FreeBSD handbook. Мгновенные копии файловых систем
How to Deliver FreeBSD UFS/ZFS Snapshots to End-Users
FreeBSD UFS/ZFS Snapshot Management Environmen
Я приведу пару способов, как это можно сделать.
Рассмотрим их.
Мгновенные копии позволяют пользователю создавать образы заданных файловых систем и работать с ними как с файлами.
Файлы мгновенных копий должны создаваться в той файловой системе, над которой производится действие, и пользователь может создавать не более 20 мгновенных копий для каждой файловой системы.
Активные копии записываются в суперблок, так что они остаются в силе между операциями монтирования и размонтирования в процессе системных перезагрузок.
Если мгновенная копия больше не нужна, она может быть удалена стандартной командой rm(1).
Мгновенные копии могут удаляться в любом порядке, однако всё использованное пространство не может быть использовано, так как другая мгновенная копия может претендовать на некоторые блоки из освобождённых.
Неизменяемый флаг snapshot устанавливается на файл при помощи mksnap_ffs(8) после первоначального создания файла мгновенной копии. Команда unlink(1) делает исключение для файлов мгновенных копий, позволяя их удалять.
Файлы мгновенных копий файловых систем (к примеру, /var) можно найти при помощи команды find(1):
# find /var -flags snapshot
Мгновенные копии создаются при помощи утилиты mount(8). Чтобы создать мгновенную копию /var в файле /var/snapshot/test, воспользуйтесь такой командой:
# mount -u -o snapshot /var/snapshot/test /var
В качестве альтернативного средства создания мгновенных копий вы можете использовать утилиту mksnap_ffs(8):
# mksnap_ffs /var /var/snapshot/test
Привязываем снапшот к устройству /dev/md1 (номер зависит от праметра -u)
# mdconfig -a -t vnode -f /var/snapshot/test -u 1
При необходимости снапшот можно смонтировать в режиме чтения и посмотреть его содержимое:
# mount -r /dev/md1 /mnt
Теперь вы можете пройтись по иерархии вашей зафиксированной файловой системы /var, смонтированной в каталог /mnt. Первоначально всё будет в том же самом состоянии, в каком это было во время создания мгновенной копии. Единственным исключением будет то, что любые ранее сделанные мгновенные копии будут видны как файлы нулевой длины.
Можно также сделать дамп или скопировать содержимое раздела на второй диск:
# dump -0 -a -u -f root_ad4s1a.img /dev/md1
# dd if=/dev/md1 of=/dev/ad6s1f bs=16k
Если выполнить какие либо изменения на данном разделе и сделать новый снапшот, а затем снять новый дамп с уровнем -1, то получите инкриментный дамп, относительно последнего нулевого дампа.Когда использование мгновенной копии закончено, можно отмонтировать snapshot:
# umount /mnt
Отключаем снапшот
# mdconfig -d -u 1
Также есть утилита для удобного управления снапшотами freebsd-snapshot
сd /usr/ports/sysutils/freebsd-snapshot
make install clean
Утилита позволяет манипулировать UFS2 снапшотами не сложнее, чем это делается в ZFS:
Все снапшоты хранятся в разделе в директории .snap
Просмотр снапшотов в /var
# snapshot list /var
Filesystem User User% Snap Snap% Snapshot
Создание снапшота. -g -указывает на максимальное количество снапшотов. Если что, автоматом производит их ротацию .
# snapshot make -g4 /var:test
# snapshot list /var
Filesystem User User% Snap Snap% Snapshot
/var 1172MB 14.8% 4MB 0.1% test.0
# snapshot make -g4 /var:test
# snapshot list /var
Filesystem User User% Snap Snap% Snapshot
/var 1176MB 14.8% 4MB 0.1% test.0
/var 1176MB 14.8% 4MB 0.1% test.1
# snapshot make -g4 /var:test
# snapshot list /var
Filesystem User User% Snap Snap% Snapshot
/var 1181MB 14.9% 4MB 0.1% test.0
/var 1181MB 14.9% 4MB 0.1% test.1
/var 1181MB 14.9% 4MB 0.1% test.2
# snapshot make -g4 /var:test
# snapshot list /var
Filesystem User User% Snap Snap% Snapshot
/var 1186MB 15.0% 4MB 0.1% test.0
/var 1186MB 15.0% 4MB 0.1% test.1
/var 1186MB 15.0% 4MB 0.1% test.2
/var 1186MB 15.0% 4MB 0.1% test.3
# snapshot make -g4 /var:test
# snapshot list /var
Filesystem User User% Snap Snap% Snapshot
/var 1186MB 15.0% 4MB 0.1% test.0
/var 1186MB 15.0% 4MB 0.1% test.1
/var 1186MB 15.0% 4MB 0.1% test.2
/var 1186MB 15.0% 4MB 0.1% test.3
Монтируем снапшот
# snapshot mount /var:test.2 /mnt
# ls /mnt
.snap crash games lost+found obj rwho
account cron heimdal mail opkg spool
at db lib msgs preserve tmp
backups empty log named run yp
Отмонтирование снапшота
# snapshot umount /mnt
Удаление всех снапшотов в /var
# snapshot make -g0 /var:test
# snapshot list /var
Filesystem User User% Snap Snap% Snapshot
Собственно Все :)Ссылки:
FreeBSD handbook. Мгновенные копии файловых систем
How to Deliver FreeBSD UFS/ZFS Snapshots to End-Users
а как снять дамп с файла полученного через утилиту snapshot?
ОтветитьУдалитьеще, если делать снапшот первым способом (через mount) файл дампа снапшота имеет размер суммы всех файлов на диске, а если делать через утилиту snapshot - размер получается равным размеру самого диска, а не суммы файлов. Т.е. если диск в 100Гб, а файлов там на 70Мб, снапшот получится в 100Гб. Почему так?