Переводы страниц руководства

Новости   Список переводов по пакетам   Все переводы   Репозиторий Debian   Как нам помочь   Участники проекта   Словарь терминов

НАЗВАНИЕ

HAMMER - файловая система HAMMER

ОБЗОР

Чтобы собрать ядро, содержащее этот драйвер, поместите следующие строки в ваш файл конфигурации ядра:

options HAMMER

Вместо этого вы можете загрузить драйвер как модуль во время загрузки, поместив следующую строку в loader.conf(5):

hammer_load="YES"

Для монтирования через fstab(5):

/dev/ad0s1d[:/dev/ad1s1d:...] /mnt hammer rw 2 0

ОПИСАНИЕ

Файловая система HAMMER предоставляет средства для хранения файловой системы на дисковых устройствах и предполагается, что она заменит ffs(5) в качестве файловой системы по умолчанию используемой в DragonFly. Среди её возможностей мгновенное восстановление при сбоях, огромные файловые системы, распределённые на нескольких томах, проверка целостности данных, мелкозернистая история, способность к зеркалированию и псевдо-файловые системы.

Все функции, относящиеся к управлению файловой системой HAMMER предоставляются утилитами newfs_hammer(8), mount_hammer(8), hammer(8) и undo(1).

За подробным введением обратитесь к статье и слайдам перечисленным в разделе СМОТРИ ТАКЖЕ. С некоторыми аспектами использования HAMMER можно ознакомиться в разделе ПРИМЕРЫ ниже.

Мгновенное восстановление при сбое

После неправильного выключения системы файловая система HAMMER вернётся назад к полностью согласованному состоянию при монтировании файловой системы, обычно менее чем за несколько секунд.

Огромные файловые системы и многотомность

Файловая система HAMMER может размещаться на до 256 томах. Каждый том занимает дисковый слайс или раздел DragonFly, или другой специальный файл, и может иметь размер до 4096 Терабайт. Для томов размером свыше 2 Терабайт обычно нужно воспользоваться gpt(8) и disklabel64(8).

Проверка целостности данных

Одной из главных задач HAMMER является обеспечение целостности данных, проверки CRC выполняются для всех важных структур и данных. Мгновенные снимки HAMMER позволяют делать проверку целостности данных проще: поля atime и mtime фиксируются в значение ctime для файлов доступных через мгновенный снимок. Поле st_dev основывается на разделяемом uuid PFS, а не на реальном устройстве. Это означает, что архивирование содержимого мгновенного снимка например с помощью tar(1) и перенаправление его через нечто вроде md5(1) даст целостный результат. Целостность также поддерживается на зеркалируемых объектах.

Идентификаторы транзакций

Файловая система HAMMER использует 64 битные шестнадцатричные идентификаторы транзакций для обращения к файлу истории или каталогу данных. Идентификатор имеет формат printf(3) %#016llx, такой как 0x00000001061a8ba6.

Команды hammer(8), относящиеся к теме: synctid

История и мгновенные снимки

Метаданные истории записываются на носитель при каждой операции sync, поэтому разрешение истории файлов составляет 30-60 секунд до следующей операции подрезания (prune). Предшествующие версии файлов и каталогов обычно доступны посредством дополнения имени файла символами @@ и идентификатором транзакции. Это общий способ доступа к истории, однако он требует мгновенных снимков.

Мгновенные снимки - это мягкие ссылки к предыдущим версиям каталогов и их файлов. Их данные удерживаются до операции подрезания до тех пор, пока существуют мягкие ссылки. Удаление мягкой ссылки заставляет файловую систему восстановить пространство до следующих операций подрезания (prune) и перераспределения блоков (reblock).

Команды hammer(8), относящиеся к теме: cleanup, history, snapshot; смотри также undo(1)

Подрезание и перераспределение блоков

Подрезание (pruning) - это акт удаления истории файловой системы. Будет удержана только история используемая заданными мгновенными снимками и история следующая за последним мгновенным снимком. Вся остальная история удаляется. Перераспределение блоков (reblocking) переупорядочивает все элементы, таким образом дефрагментирует файловую систему и освобождает пространство для повторного использования. После подрезания файловая система должна перераспределить блоки для восстановления всего доступного пространства. Перераспределение блоков требуется даже если вы воспользовались для монтирования опцией nohistory команды mount_hammer(8).

Команды hammer(8), относящиеся к теме: cleanup, prune, prune-everything, reblock, reblock-btree, reblock-inodes, reblock-dirs, reblock-data

Зеркалирование и псевдо-файловые системы

Чтобы разрешить дубликацию номеров inode на подчинённые (slaves) файловые системы HAMMER, подсистема зеркалирования использует псевдо-файловые системы (Pseudo File System - PFS). Файловая система HAMMER поддерживает до 65535 PFS'ов. Поддерживается множество подчинённых одному хозяину (master), но несколько хозяев на одного подчинённого - нет. Подчинённые всегда доступны только для чтения. Поддерживается обновление подчинённых до хозяев и откат (downgrade) хозяев до подчинённых.

Рекомендуется использовать null-точку монтирования для доступа к PFS; этот способ не собьёт с толку инструменты корнем PFS, являющимся ссылкой, и inode'ами, не являющимися уникальными во всей файловой системе HAMMER.

Команды hammer(8), относящиеся к теме: pfs-master, pfs-slave, pfs-cleanup, pfs-status, pfs-update, pfs-destroy, pfs-upgrade, pfs-downgrade, mirror-copy, mirror-stream, mirror-read, mirror-read-stream, mirror-write, mirror-dump

Экспорт по NFS

Файловая система HAMMER поддерживает экспорт по NFS. Экспорт PFS по NFS выполняется с использованием null-монтирования. Например, для экспорта PFS /hammer/pfs/data, создайте null-монтирование, например, к /hammer/data и экспортируйте последний путь.

Не экспортируйте каталог, содержащий PFS (например, вышеуказанный /hammer/pfs). Должен экспортироваться только null-смонтированный корень PFS (например, вышеуказанный /hammer/data) (подкаталоги могут быть экранированы при экспорте).

ПРИМЕРЫ

Подготовка файловой системы

Чтобы создать и смонтировать файловую систему HAMMER воспользуйтесь командами newfs_hammer(8) и mount_hammer(8). Отметим, что все файловые системы HAMMER должны иметь уникальные имена в пределах одной машины.

newfs_hammer -L HOME /dev/ad0s1d
mount_hammer /dev/ad0s1d /home

Таким же образом, указав дополнительные аргументы, можно создавать многотомные файловые системы.

newfs_hammer -L MULTIHOME /dev/ad0s1d /dev/ad1s1d
mount_hammer /dev/ad0s1d /dev/ad1s1d /home

Однажды созданная и смонтированная, файловая система HAMMER требует периодической очистки, создающей мгновенные снимки, подрезающей и перераспределяющей блоки, чтобы доступ к истории и файловой системе не заполнял диски. Для этого рекомендуется использовать метакоманду hammer(8) cleanup.

По умолчанию, DragonFly настраивает запуск hammer cleanup каждую ночь из periodic(8).

Можно также производить эти операции индивидуально через crontab(5). Например, чтобы перераспределять блоки файловой системы /home каждую ночь в 2:15 не дольше 5 минут:

15 2 * * * hammer -c /var/run/HOME.reblock -t 300 reblock /home >/dev/null 2>&1

Мгновенные снимки

Команда snapshots утилиты hammer(8) предоставляет несколько способов получения мгновенных снимков. Все они принимают каталог, в котором хранятся мгновенные снимки.

mkdir /snaps
hammer snapshot /home /snaps/snap1
(...после некоторых изменений в /home...)
hammer snapshot /home /snaps/snap2

Мягкие ссылки в /snaps указывают на состояние каталога /home во время каждого выбранного мгновенного снимка, и могут использоваться для копирования данных в другое место для задач резервного копирования.

По умолчанию DragonFly настраивает создание мгновенных снимков каждую ночь для всех файловых систем HAMMER из periodic(8) и хранит их 60 дней.

Подрезание

Каталог мгновенного снимка - это аргумент для команды hammer(8) prune, которая освобождает исторические данные из файловой системы, на которые не ссылается ни одна ссылка мгновенного снимка, из более поздних снимков и из-за последнего снимка.

rm /snaps/snap1
hammer prune /snaps

Зеркалирование

Зеркалирование может быть настроено с использованием псевдо-файловых систем HAMMER. Для связывания подчинённого с хозяином, его разделяемый UUID должен быть задан таким же, как разделяемый UUID на хозяине, который выводится командой hammer pfs-master.

hammer pfs-master /home/pfs/master
hammer pfs-slave /home/pfs/slave shared-uuid=<разделяемый uuid хозяина>

Ссылка /home/pfs/slave не доступна до тех пор, пока операция зеркалирования не будет завершена.

Для зеркалирования данных хозяина, воспользуйтесь любой из команд: командами чтения из канала mirror-read и записи в канал mirror-write, или воспользуйтесь сокращением, используйте команду mirror-copy (которая также работает через подключения ssh(1)). Начальное зеркалирование может быть выполнено в путь PFS (так как mount_null(8) всё ещё не доступно).

hammer mirror-copy /home/pfs/master /home/pfs/slave

После начального шага можно настроить null-монтирование для /home/pfs/slave. Следующие операции могут использовать null-монтирование.

mount_null /home/pfs/master /home/master
mount_null /home/pfs/slave /home/slave
hammer mirror-copy /home/master /home/slave

Экспорт по NFS

Для экспорта по NFS из файловой системы HAMMER /hammer каталога /hammer/non-pfs без PFSs, и PFS /hammer/pfs/data, последний null-монтируется в /hammer/data.

Добавим к /etc/fstab (смотри fstab(5)):

/hammer/pfs/data /hammer/data null rw

Добавим к /etc/exports (смотри exports(5)):

/hammer/non-pfs
/hammer/data

СМОТРИ ТАКЖЕ

md5(1), tar(1), undo(1), ffs(5), disklabel64(8), gpt(8), hammer(8), mount_hammer(8), mount_null(8), newfs_hammer(8)

Мэтью Диллон (Matthew Dillon), Файловая система HAMMER, июнь 2008, http://www.dragonflybsd.org/hammer/hammer.pdf.

Мэтью Диллон (Matthew Dillon), Презентация с NYCBSDCon 2008, октябрь 2008, http://www.dragonflybsd.org/hammer/nycbsdcon/.

ИСТОРИЯ

Файловая система HAMMER впервые появилась в DragonFly 1.11.

АВТОРЫ

Файловая система HAMMER была спроектирована и реализована Мэтью Диллоном (Matthew Dillon). Эта страница руководства была написана Сашей Уилднером (Sascha Wildner).

АВТОР ПЕРЕВОДА

Перевод на русский язык выполнил Владимир Ступин