Сейчас большинство администраторов Solaris начинают использовать в своих интересах потрясающие особенности ZFS и уже перевели на эту файловую систему по крайней мере несколько каталогов. У меня первые каталоги, перехавшие на ZFS, были /usr/local и /opt/csw, и если вы еще не сделали этого, то упускаете возможность повысить скорость и пользоваться другими преимуществами ZFS. Одна из самых убедительных причин для этого - то, что вы можете экспортировать ваш пул zfs прежде, чем сделаете обновление или повторно установите solaris и импортировать пул позже: вы также можете таким образом сохранять и восстанавливать конфигурации для каких-либо программ.
Итак, если это еще не сделано, все очень просто - если выполняются какие-либо программы, расположенные в
/usr/local или
/opt/csw, остановите их, затем:
# cd /usr
# mv local local_hold
# zfs create poolname/local
# zfs set mountpoint=/usr/local poolname/local
Можно указать для
zfs следующие опции:
# zfs set compression=on poolname/local # depending on your system it can be faster
# zfs set atime=off poolname/local # don’t keep track of when files are accessed
# zfs set setuid=off poolname/local # don’t allow setuid files, for the paranoid
# zfs set devices=off poolname/local # no device files, this isn’t /dev they don’t belong
Теперь переносим файлы в новую директорию:
# mv /usr/local_hold/* /usr/local
Убеждаемся что все файлы перенесены:
# ls –lRa /usr/local_hold
и если так, то:
Если вы пользуетесь
Blastwave, то то же самое проделываем с
/opt/csw.
Это хороший первый шаг в использовании преимуществ ZFS.
Теперь, когда у нас
/usr/local или
/opt/csw в файловой системе
zfs, мы можем сделать снимок целого каталога, но я решил, что этого не достаточно, я создал отдельные директории
/usr/local/etc и
/usr/local/var, для того, чтобы можно было применить больше ограничений, таких как
noexec, и я мог также автоматически делать снимки для каталога
etc, чтобы в случае какой-либо ошибки, можно было вернуть данные из предыдущего снимка.
# cd /usr/local
# mv etc etc_hold
# zfs create poolname/local/etc
# zfs set exec=off poolname/local/etc
# mv etc_hold/* /usr/local/etc
# ls –la /usr/local/etc_hold
# rm –rf /usr/local/etc_hold
Тим Фостер создал отличную программу
system для автоматического создания снимков. Я же решил использовать простой shell-сценарий (
snapus) и
cronjob (вы можете использовать его для своих собственных каталогов
zfs):
date=`date +DAY%d-TIME-%R`
for i in `cat /usr/local/etc/snaps_to_take | grep -v '^#'`; do
/usr/sbin/zfs snapshot $i@$date
done;
Снимки
/usr/local/etc/snaps_to_take:
poolname/local/squid/etc
poolname/local/etc
poolname/csw/etc
poolname/csw/apache2/etc
poolname/home/jamesd
Вот рутовый
crontab, в будущем я планирую запускать скрипт под пользователем, имеющим привилегии администрирования ZFS:
1,16,31,46 1-3,6-23 * /usr/local/sbin/snapus
Я бы не советовал делать снимки логов, которые изменяются слишком часто, но рекомендую делать снимки статических данных. Можно также назначить квоты:
zfs set quota=1g poolname/local/var
zfs set reservation=1g poolname/local/var
Вольный перевод заметки Дж.Дикенса