Конфигурирование Storage Daemon

Конфигурационный файл Storage Daemon содержит не так много определений ресурсов. Однако по причине большого разнообразия резервных носителей и системных возможностей, сервер Storage Daemon должен отличаться крайне гибко изменяемой конфигурацией. Как следствие, определение ресурса Device содержит большое количество директив, которые позволяют пользователю задавать параметры устройства хранения данных (как правило, это ЗУ на магнитной ленте). К счастью современные ЗУ позволяют пользоваться настройками по умолчанию и задействовать незначительное количество директив.

Пример директив ресурса Device, которые используются для определенных стандартных ЗУ на магнитной ленте, можно найти в каталоге bacula-src/examples/devices. Большая часть этих директив будет перечислена в данном разделе.

Дополнительная информация, касающаяся конфигурационного файла и ресурсов, включая типы данных, с которыми работает Bacula, содержится в соответствующем разделе данного руководства. Необходимо задать следующие определения ресурса Storage:

  • StorageStorageResource — задает имя сервера Storage Daemon.
  • DirectorDirectorResource1 – задает имя службы Director и пароль доступа к нему.
  • DeviceDeviceResource – задает свойства запоминающего устройства (ЗУ на магнитной ленте).
  • MessagesMessagesChapter – используется для определения места, куда будут отправляться сообщения об ошибках и информационные сообщения.

Ресурс Storage

Как правило, параметры, указанные в ресурсе Storage, определяют глобальные свойства сервера Storage Daemon. Каждый конфигурационный файл Storage Daemon должен иметь одно и только одно определение ресурса Storage.

Name = Storage-Daemon-Name

Директива задает имя сервера Storage Daemon. Обязательная директива.

Working Directory = Directory

Обязательная директива, которая задает каталог, в который Storage Daemon может помещать свои файлы статусов. Этот каталог должно использовать только ПО Bacula, Однако он также может использоваться другими службами Bacula Daemon при условии, что название каждой службы Daemon в определении Name является уникальным. Эта обязательная директива.

Pid Directory = Directory

Это обязательная директива, которая позволяет задать каталог, в который служба Director может помещать файлы с ID соответствующего процесса. Файл с ID процесса используется для завершения работы Bacula и для предотвращения одновременного запуска нескольких копий Bacula. Это обязательная директива. Стандартное расширение оболочки для каталога (Directory) выполняется при считывании конфигурационного файла для правильного увеличения значений $HOME .

Как правило, в системах Linux, данный каталог задается как: /var/run. Если вы устанавливаете Bacula не в системном каталоге, вы можете использовать рабочий каталог, как описано выше.

Heartbeat Interval = time-interval

Эта директива определяет интервал времени в секундах. Если сервер Storage Daemon ожидает, пока оператор установит магнитную ленту, в каждый интервал времени он будет отсылать контрольный сигнал серверу File Daemon. По умолчанию данный интервал равен нулю, что позволяет отключить контрольный сигнал. Эта функция полезна, если вы используете маршрутизатор типа 3Com, который не поддерживает стандарты Интернета и разрывает соединение через определенное время несмотря на использование интервала «keepalive». Это, как правило, приводит к возникновению сообщения об ошибке, связанной с неустойчивой работой канала.

Client Connect Wait = time-interval

Эта директива определяет интрвал времени в секундах, в течение которого сервер Storage Daemon будет ожидать подключение клиента (File Daemon). По умолчанию интервал равен 30 минутам. Будьте осторожны, чем дольше Storage Daemon ожидает подключения клиента, тем больше будет занято ресурсов.

Maximum Concurrent Jobs = number

где number – это максимальное количество задач, которое может быть запущено одновременно. По умолчанию данный параметр равен 20, но пользователь может задать другое значение. Каждое обращение службы Director (например, запрос статуса, или запрос запуска задачи) расценивается как задача. Поэтому, если вы хотите иметь возможность запрашивать статус в консоли во время выполнения другой задачи, вам необходимо задать значение > 1. Чтобы запустить несколько задач одновременно, пользователю потребуется задать определенное количество других директив в конфигурационном файле Director’а. Количество директив зависит от потребностей пользователя. Однако пользователю несомненно потребуется задать директиву Maximum Concurrent Jobs в ресурсе Storage в конфигурационном файле Director’а и, возможно, директивы в ресурсах Job и Client.

SDAddresses = IP-address-specification

Задайте порты и адреса, на которых Storage Daemon будет слушать подключения службы Director. Как правило, достаточно использовать дефолтные параметры и не задавать данную директиву. Приведем следующий пример для простоты понимания:

 SDAddresses  = { ip = {

        addr = 1.2.3.4; port = 1205; }

    ipv4 = {

        addr = 1.2.3.4; port = http; }

    ipv6 = {

        addr = 1.2.3.4;

        port = 1205;

    }

    ip = {

        addr = 1.2.3.4

        port = 1205

    }

    ip = {

        addr = 1.2.3.4

    }

    ip = {

        addr = 201:220:222::2

    }

    ip = {

        addr = bluedot.thun.net

    }

}

где ip, ip4, ip6, addr, и port – это ключевые слова. Примите во внимание тот факт, что адрес может быть задан как четырьмя группами цифр, разделенными точками, так и с использованием нотации IPv6, либо с использованием условного имени (только в IP спецификации). Порт может быть обозначен с помощью численного, либо мнемонического значения из файла /etc/services. Если порт не задан, будет использован порт по умолчанию. Если указана ip группа, разрешение может быть задано с использованием IPv4 или IPv6. Если задан протокол ip4, допускается использование только IPv4 разрешений. То же самое действует и для протокола ip6.

С помощью данной директивы вы можете заменить директивы SDPort и SDAddress, описанные ниже.

SDPort = port-number

Используется для настройки номера порта, на котором Storage Daemon слушает подключения службы Director. По умолчанию используется порт 9103.

SDAddress = IP-Address

Это опциональная директива. Если она используется, сервер Storage Daemon (для подключений Director и File Daemon) будет привязан к указанному параметру IP-Address, который является либо доменным именем, либо IP адресом, заданным четырьмя группами цифр, разделенными точками. Если данная директива не задана, сервер Storage Daemon будет привязан в любому доступному адресу (по умолчанию).

Ниже приведены стандартные определения хранилища Storage для Storage Daemon.

#

# «Global» Storage daemon configuration specifications appear

# under the Storage resource.

#

Storage {

  Name = «Storage daemon»

  Address = localhost

  WorkingDirectory = «~/bacula/working»

  Pid    Directory = «~/bacula/working»

}

Ресурс Director

Ресурс Director задает имя службы Director, которая позволяет использовать службы сервера Storage Daemon. Ресурсов службы Director может быть несколько. Имя и пароль для службы Director должны соответствовать значениям, заданным в конфигурационном файле Director’а.

Name = Director-Name

Директива задает имя службы Director, позволяющей подключаться к серверу Storage Daemon. Это обязательная директива.

Password = Director-password

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

Monitor = yes|no

Если директиве Monitor присвоено значение no (по умолчанию), служба Director получит полный доступ к серверу Storage Daemon. Если директиве Monitor присвоено значение yes, служба Director сможет лишь отслеживать статус сервера Storage Daemon.

Пожалуйста, примите во внимание тот факт, что если данная служба Director используется директивой Monitor, мы настоятельно рекомендует присвоить ей значение yes, чтобы избежать проблем с безопасностью.

Ниже приведен пример правильного определения ресурса Director:

Director {

  Name = MainDirector

  Password = my_secret_password

}

Ресурс Device

Ресурс Device определяет характеристики каждого отдельного устройства (как правило ЗУ на магнитной ленте), которое может использовать сервер Storage Daemon. Возможно существование нескольких ресурсов Device для одного сервера Storage Daemon. Как правило, свойства, указанные в ресурсе Device, характерны для конкретного устройства.

Name = Device-Name

Директива задает имя, которое будет использовать служба Director при запросе создания бэкапа/восстановления на/с данного устройства. Это имя логического устройства. Оно может представлять собой любую строку, содержащую 127 символов. Как правило, в качестве имени используется имя устройства резервного копирования на английском языке. Имя физического устройства указано в каталоге Archive Device, как описано ниже. Имя, которое пользователь указывает в директиве, также используется в конфигурационном файле Director’а в Device directiveStorageResource2 в соответствующем ресурсе Storage.

Archive Device = name-string

Директива name-string задает имя системного файла устройства хранения данных, которым управляет данный сервер Storage Daemon. Таким именем, как правило, является имя файла съемного ЗУ (магнитной ленты), например «/dev/nst0» или «/dev/rmt/0mbn«. В роли такого имени также может выступать имя каталога, если вы создаете архив на дисковом ЗУ. В таком случае, пользователь должен будет указать полный путь к каталогу. Если указывается ЗУ на магнитной ленте, предпочтительно задавать «не повторяющийся» вариант имени файла устройства. К тому же, в системах типа Sun, в которых реализованы различные методы доступа к магнитным лентам, пользователь должен убедиться в том, что он использует условные обозначения Berkeley I/O. В данном случае необходимо использовать b в спецификации архива Solaris (Sun) /dev/rmt/0mbn. Bacula не поддерживает характеристики ЗУ на магнитной ленте SysV.

Как сказано выше, чаще всего Archive Device представляет собой имя ЗУ на магнитной ленте, но пользователь также может указать полный путь к существующему каталогу. Если устройство представляет собой каталог, Bacula запишет данные в файловое хранилище в указанном каталоге, а имя файла будет представлять собой имя тома, указанного в службе Catalog. Если вы хотите записать данные в несколько каталогов (например, чтобы распределить нагрузку между различными дисками), пользователю потребуется задать два ресурса Device, каждый из которых должен содержать Archive Device со своим каталогом. Помимо имени ЗУ на магнитной ленте или имени каталога, Bacula может использовать имя FIFO. FIFO – это особый тип файла, который связывает две программы через память ядра. Если для процедуры резервного копирования указано FIFO устройство, пользователю понадобится программа, которая считает информацию, записанную Bacula в FIFO. Когда сервер Storage Daemon запускает задачу, он ожидает время, заданное с помощью директивы MaximumOpenWait, чтобы программа начала считывать информацию. По истечении времени выполнение задачи прерывается. Как следствие, возможно, лучше запускать программу чтения до выполнения задачи с помощью директивы RunBeforeJob. Для данного типа устройства не следует присваивать директиве AlwaysOpen значение Yes. Необходимо задавать значение No. Поскольку устройство FIFO – это устройство с односторонней связью, Bacula не будет пытаться считывать метку FIFO устройства, а лишь запишет в него информацию. Чтобы создать том FIFO в каталоге, используйте команду add, а не команду label, чтобы не допустить попытки записи метки.

Device {

  Name = FifoStorage

  Media Type = Fifo

  Device Type = Fifo

  Archive Device = /tmp/fifo

  LabelMedia = yes

  Random Access = no

  AutomaticMount = no

  RemovableMedia = no

  MaximumOpenWait = 60

  AlwaysOpen = no

}

Во время процедуры восстановления, если Archive Device представляет собой FIFO-устройство, ПО Bacula попытается считать данные с FIFO- устройства, поэтому пользователю необходимо иметь внешнюю программу, которая может записывать данные в FIFO-устройство. ПО Bacula подождет время, заданное с помощью директивы MaximumOpenWait, чтобы программа начала вести запись. По истечении времени выполнение задачи будет прервано. Как сказано выше, вы можете использовать директиву RunBeforeJob, чтобы запустить программу записи до начала выполнения задачи.

Директива Archive Device является обязательной.

Device Type = type-specification

Директива Device Type позволяет пользователю явно задавать ПО Bacula тип устройства. В качестве параметра type-specification можно выбрать одно из следующих значений:

File

Параметр говорит о том, что устройство является файлом. Этот файл может быть, либо файлом, заданным на фиксированном носителе, либо на съемном устройстве, например USB-устройстве. Все файлы должны представлять собой ОЗУ-устройства.

Tape

Устройство представляет собой ЗУ на магнитной ленте с последовательным доступом к памяти. ЗУ на магнитной ленте контролируются с помощью запросов ioctl().

Fifo

Устройство представляет собой FIFO-устройство с последовательным доступом к памяти, предназначенным только для чтения или записи информации.

Директива Device Type не является обязательной, и, если она не используется, ПО Bacula постарается самостоятельно определить, какой тип устройство был задан, используя указанные характеристики Archive Device. Точное указание типа используемого устройства дает пользователю определенные преимущества. Во-первых, в некоторых системах существуют блочные и символьные устройства одного и того же типа. Во-вторых, если пользователь явно задает тип устройства, ему не понадобится указывать точку монтирования до тех пор, пока устройство не будет открыто. В частности, это касается большинства съемных устройств, типа USB, которые монтируются с помощью HAL Daemon. Если тип устройства не задан явно, должна существовать точка монтирования при запуске Storage Daemon.

Данная директива была реализована в Bacula версии 1.38.6.

Media Type = name-string

Директива name-string служит для указания имени типа носителя, поддерживаемого устройством, например, «DLT7000». Имена типов носителей могут назначаться произвольно, однако, они должны быть известны базам данных томов , чтобы можно было отслеживать, какие тома могут быть считаны определенным Storage Daemon. Как правило, каждому отдельному типу хранилища должен соответствовать уникальный тип носителя. Такое же имя name-string должно быть отображено в соответствующем определении ресурса Storage в конфигурационном файле Director’а.

Несмотря на то, что пользователь может назначать произвольные имена (то есть может сам выбирать имена), необходимо с осторожностью назначать их, так как директива Media Type используется для того, чтобы определить, какое устройство хранения информации выберет ПО Bacula во время восстановления. Таким образом, пользователю, возможно, следует использовать те же характеристики Media Type для всех накопителей, которые могут быть заменены. У пользователя, как правило, не возникает проблем, если он использует один сервер Storage daemon, проблема может возникнуть при работе с несколькими серверами Storage Daemon, особенно, если они содержат несовместимые носители.

Например, если пользователь задал имя «DDS-4» для Media Type, тогда во время восстановления ПО Bacula сможет выбирать любой сервер Storage Daemon, который обрабатывает «DDS-4». Если пользователь использует авточейнджер, он, возможно, захочет назвать тип накопителя уникальным именем авточейнджера, если, конечно, он не захочет иметь возможность использовать тома на других накопителях. Пользователю также следует давать уникальные имена типам носителей, если носители разных накопителей не совместимы между собой. Эта директива является обязательной для всех устройств.

Более того, если пользователь использует дисковое хранилище, каждый ресурс Device, как правило, будет  иметь собственную уникальную точку монтирования или каталог. Чтобы ПО Bacula правильно выбирало ресурс Device, каждый ресурс должен содержать уникальное название типа носителя.

Autochanger = yes|no

Если директиве присвоено значение Yes, устройство принадлежит к устройству автоматической смены магнитных лент. Пользователь должен указать ресурс Autochanger, который бы указывал на ресурсы Device. Также необходимо задать параметр Changer Device. Если директиве присвоено значение No (по умолчанию), том необходимо менять вручную. Такую же директиву необходимо использовать применительно к ресурсу Storage Autochanger1 в конфигурационном файле Director’а, чтобы при маркировке лент пользователь мог видеть подсказку, указывающую на слот.

Changer Device = name-string

Примечание: Несмотря на то, что данная директива может быть указана в ресурсе Device, как правило, она задается только в ресурсе Autochanger.

Указанное имя name-string должно представлять собой именем общего SCSI-устройства авточейнджера, которое соответствует стандартному устройству чтения/записи Archive Device, указанному в ресурсе Device. Это имя общего SCSI-устройства должно быть задано, если пользователь использует авточейнджер, или стандартное ЗУ на магнитной ленте, и хочет использовать команду Alert Command (см. ниже). Например, в системах Linux для имени Archive Device в /dev/nst0, вам потребуется указать /dev/sg0 для имени чейнджера. В зависимости от конкретной конфигурации, и количества авточейнджеров или его типа, может меняться и запись. Это опциональная директива. Более подробную информацию относительно использования директив для авточейнджеров вы найдете в соответствующем разделе данного руководства.

Changer Command = name-string

Примечание: Несмотря на то, что данная директива может быть указана в ресурсе Device, как правило, она задается только в ресурсе Autochanger.

Директива name-string задает внешнюю программу, которая должна быть вызвана для автоматической смены томов, как того требует ПО Bacula. Как правило, данная директива указывается только в ресурсе AutoChanger, который впоследствии используется всеми устройствами. Однако, Вы можете также указать различные команды Changer Command в каждом ресурсе Device. Наиболее часто пользователи используют следующий mtx-changer скрипт:

Changer Command = «/path/mtx-changer %c %o %S %a %d»

Таким образом, пользователь установит пакет mtx в системе (ищите в релизе depkgs). Пример этой команды содержится в дефолтном файле bacula-sd.conf file. Более подробную информацию относительно замены символов, которые можно указывать для конфигурирования авточейнджера, вы найдете в разделе данного руководства, посвященном описанию авточейнджера. Пользователи FreeBSD могут ознакомиться с одним из нескольких chio скриптов в папке examples/autochangers.

Alert Command = name-string

Директива name-string задает внешнюю программу, которая должна вызываться при завершении каждой задачи после разблокировки устройства. Цель данной директивы заключается в проверке оповещений Tape Alerts, которые появляются в результате неполадок при работе ЗУ на магнитной ленте (по крайней мере, в случае использования наиболее современных ЗУ на магнитной ленте). Можно произвести замену символов, как и в случае с директивой Changer Command. Более подробную информацию вы найдете в разделе данного руководства, посвященном описанию авточейнджера.

Примите во внимание, что необязательно задействовать авточейнджер, чтобы использовать данную директиву. Пример ниже использует программу tapeinfo, которая включена в пакет mtx, однако, она может быть применена к любому типу ЗУ на магнитной ленте. Однако пользователю понадобится задать директиву Changer Device в ресурсе Device (смотрите выше), чтобы можно было редактировать имя стандартного SCSI –устройства в команде (с помощью %c).

Пример использования директивы для вывода на печать типов оповещений Tape Alerts в отчете Job:

Alert Command = «sh -c ‘tapeinfo -f %c | grep TapeAlert'»

пример записи, содержащей проблему:

bacula-sd  Alert: TapeAlert[32]: Interface: Problem with SCSI interface

                  between tape drive and initiator.

 

Drive Index = number

Эта директива используется применительно к устройству, которое является частью авточейнджера. Индекс накопителя Drive Index, который указывает пользователь, используется скриптом mtx-changer и, соответственно, программой mtx. По умолчанию индекс накопителя равен нулю, поэтому, если авточейнджер подразумевает использование только одного накопителя, система будет работать в нормальном режиме. Однако, если пользователь использует несколько накопителей, он должен будет задать несколько ресурсов Bacula Device (по одному для каждого носителя). Первый носитель должен иметь индекс равный 0, второй может получить индекс равный 1 и так далее. Это позволит пользователю использовать два и более носителя в авточейнджере. Начиная с версии 1.38.0 ПО Bacula использует ресурс Autochanger, гарантируя, что лишь один носитель использует скрипт авточейнджера за раз. Пользователю больше не нужно объединять скрипты, как раньше. Дефолтный скрипт mtx-changer будет работать для любого количества носителей.

Autoselect = yes|no

Если данной директиве присвоено значение yes (по умолчанию), а накопитель является частью авточейнджера, тогда в случае, когда Director будет ссылаться на авточейнджер, это устройство будет выбираться автоматически. Если данной директиве присвоено значение no, тогда ссылаться на устройство можно только при непосредственном указании имени устройства в службе Director. Эта опция полезна в том случае, если пользователю необходимо зарезервировать накопитель под определенные операции, например, для приоритетного создания бэкапов или восстановления.

Maximum Concurrent Jobs = num

Эта директива позволяет задать максимальное количество задач, которые можно запускать одновременно на указанном устройстве. Данная директива позволяет выполнять несколько задач с помощью нескольких накопителей, так как при достижении значения Maximum Concurrent Jobs, Storage Daemon запустит новые задачи на другом доступном совместимом накопителе. Данная директива упрощает запись данных на несколько накопителей с помощью нескольких задач, использующих один и тот же пул.

Maximum Changer Wait = time

Данная директива позволяет задать максимальное количество времени в секундах, в течение которого ПО Bacula будет ожидать смену авточейнджером тома. Если время будет превышено, Bacula отменит номер слота тома, хранимый в каталоге, и попытается произвести операцию заново. В случае отсутствия дополнительных томов, ПО Bacula потребует вмешательства оператора. Значение по умолчанию составляет 5 минут.

Maximum Rewind Wait = time

Данная директива позволяет указать максимальное время в секундах, в течение которого ПО Bacula будет ожидать перемотки ленты. Если время истечет, ПО Bacula отменит задачу. Значение по умолчанию составляет 5 минут.

Maximum Open Wait = time

Данная директива позволяет указывать максимальное время в секундах, в течение которого ПО Bacula будет ожидать освобождение занятого устройства. Значение по умолчанию составляет 5 минут. Если устройство будет оставаться недоступным, выполнение текущей задачи будет прервано в результате возникновения ошибки. Bacula попытается повторно открыть накопитель при следующем запуске задачи, которой требуется данное устройство.

Always Open = yes|no

Если данной директиве присвоено значение Yes (по умолчанию), Bacula будет сохранять устройство открытым до тех пор, пока оно не будет размонтировано консольной программой. Данная директива позволяет  Bacula гарантировать постоянную доступность и правильную установку ЗУ на магнитных лентах. Если задать AlwaysOpen = noBacula будет открывать накопитель только при необходимости, а при завершении задачи, если не будет выполняться другая задача, использующая данный накопитель, устройство будет высвобождено. В следующий раз, когда Bacula захочет добавить данные на ленту высвобожденного накопителя, программа перемотает ленту и установит ее в конце. Чтобы избежать бесполезного перемещения ленты и минимизировать вмешательство со стороны оператора, рекомендуется использовать директиву Always Open = yes. Директива позволит гарантировать доступность накопителя  для Bacula в любой момент.

Если пользователь задал директиву типа Always Open = yes (рекомендуется) и хочет использовать накопитель для другой задачи, он должен воспользоваться командой unmount в консоли, чтобы высвободить данный накопитель. Однако, как только накопитель станет доступным, стоит помнить о его повторном монтировании с помощью команды mount. В противном случае выполнение следующей задачи Bacula будет заблокировано.

Данная директива игнорируется в случае файлового хранилища. В случае FIFO-устройств, необходимо использовать директиву типа AlwaysOpen = no.

Пожалуйста, примите во внимание тот факт, что при использовании директивы AlwaysOpen = no, Bacula будет высвобождать ЗУ на магнитной ленте между выполнением задач. Таким образом, каждая последующая задача будет перематывать ленту и устанавливать ее в конец. Данная процедура может занимать много времени. К тому же директива вида AlwaysOpen = no не позволяет выполнять операции при использовании авточейнджера с несколькими накопителями. Мы настоятельно рекомендует использовать директиву AlwaysOpen = Yes.

Volume Poll Interval = time

Если время, указанное в данной директиве, не равно 0, после того, как ПО попросит пользователя смонтировать новый том, Bacula начнет периодически «опрашивать» (или считывать) накопитель через указанные промежутки времени, чтобы «понять», был ли смонтирован новый том. Если интервал задан равным 0 (по умолчанию), ПО не будет опрашивать накопитель. Данная директива может быть полезна в том случае, если пользователь хочет избежать вмешательства оператора в работу системы через консоль. Вместо этого, он может удалить старый том и смонтировать новый требуемый. ПО Bacula при следующем опросе распознает новую ленту и продолжит выполнять задачу. Если пользователь задаст слишком маленький интервал, это приведет к существенному износу ленты, так как Bacula будет ее считывать при каждом опросе. Этого можно избежать, если извлечь ленту с помощью команд Offline On Unmount и Close on Poll. Однако, если вы используете ядро Linux 2.6 или другие ОС, скажем, FreeBSD или Solaris, команда Offline On Unmount оставит накопитель без ленты, а ПО Bacula не сможет правильно открыть накопитель, что может привести к прерыванию задачи. Более подробная информация изложена в соответствующем разделе руководства по устранению неисправностей при работе с Bacula Enterprise.

Close on Poll= yes|no

Если данной директиве присвоено значение Yes, Bacula закрывает устройство (что равносильно размонтированию), и открывает его заново при каждом новом опросе. Как правило, данная директива не несет особой пользы, если вы не задали директиву Offline on Unmount. В таком случае, носитель будет временно переводится в автономный режим, что позволит предотвратить износ ленты во время выполнения будущих запросов. Как только пользователь вставит новую ленту, Bacula распознает носитель при следующем опросе и автоматически продолжит выполнять резервное копирование.

Removable media = yes|no

Если данной директиве присвоено значение Yes, значит устройство поддерживает съемный носитель (например, магнитную ленту или CD-диски). s). Если данной директиве присвоено значение No, носитель является несъемным (например, речь идет о промежуточной области резервного копирования на жёстком диске). Если съемный носитель активирован на файловом устройстве (в противовес ленте), Storage Daemon предположит, что устройство является чем-то вроде съемного USB-устройства или обычного съемного жесткого диска. При попытке открыть такое устройство, если не будет найдет том (в случае файловых устройств, имя тома совпадает с именем файла), тогда Storage Daemon произведет поиск всего устройства, чтобы найти соответствующие имена томов. В случае каждого найденного тома, сервер спросит у службы Director, можно ли использовать такой том. Если да, Storage Daemon использует первый такой найденный том. Таким образом, если не будет найдет правильный том, сервер «изучит» все найденные тома. И если том окажется пополняемым, сервер его использует.

Если съемный носитель не монтируется автоматически (например, udev), тогда пользователь может использовать дополнительные директивы устройства Storage Daemon, такие как Requires Mount, Mount Point, Mount Command и Unmount Command. Все эти команду можно использовать в сочетании с директивой Removable Media.

Random access = yes|no

Если данной директиве присвоено значение Yes, предполагается, что устройством архивирования является ЗУ с произвольным доступом, поддерживающим функцию lseek (или lseek64, если активна опция Largefile во время конфигурирования). Директиве необходимо присвоить значение Yes в случае использования любых файловых систем типа USB и фиксированных файлов. Директиве необходимо присвоить значение No в случае использования ЗУ без произвольного доступа, например лент или  именованных каналов.

Requires Mount = yes|no

Если активирована данная директива, Storage Daemon передаст команду Mount Command перед попыткой открыть устройство. Необходимо присвоить данной директиве значение yes в случае использования съемных файловых систем типа USB-устройств, которые не монтируются автоматически ОС при подключении или открытии с помощью Bacula. Необходимо присвоить данной директиве значение no в случае использования устройств иного типа, например, лент или фиксированных файловых систем. Также необходимо присвоить данной директиве значение no, если используется съемное устройство, которое автоматически монтируется ОС при открытии (например, USB-устройство, смонтированное с помощью udev или hotplug). Директива указывает на то, требует ли устройство монтирования с помощью команды Mount Command. Чтобы иметь возможность производить запись данных на устройство, необходимо его смонтировать и использовать при этом дополнительные директивы, как то Mount PointMount Command, и Unmount Command.

 

Mount Point = directory

Директивой назначается каталог, в котором можно смонтировать устройство. Директива используется только в случае устройств, для которых активирована директива Requires Mount, например, USB файловых устройств.

Mount Command = name-string

Эта директива задает команду, которая должна быть исполнена для монтирования устройств, например, множества USB-устройств. Перед выполнением команды, %a заменяется на устройство архивирования, а %m на точку монтирования.

Смотрите раздел «Редактирование кода» ниже.

Если пользователю необходимо указать множество команд, необходимо создать скрипт оболочки.

Unmount Command = name-string

Эта директива задает команду, которая должна быть исполнена для размонтирования устройств, например, множества USB-устройств. Перед выполнением команды, %a заменяется на устройство архивирования, а %m на точку монтирования.

Чаще всего используется следующая запись:

Unmount Command = «/bin/umount %m»

Смотрите раздел «Редактирование кода» ниже.

Если пользователю необходимо указать множество команд, необходимо создать скрипт оболочки.

Block Checksum = yes/no

Вы можете деактивировать код вычисления контрольной суммы блока (CRC32), который используется ПО Bacula при записи блоков в том. Использование данной опции позволит несколько снизить загрузку ЦП сервера Storage Daemon. Функция также позволяет ПО Bacula считывать том с поврежденными данными.

По умолчанию директиве присвоено значение yes, то есть контрольная сумма вычисляется при записи и проверяется при считывании.

Мы не рекомендует отключать функцию, в частности в случае старых ЗУ на магнитных лентах и дисковых томов, так как это может препятствовать нахождению поврежденных данных.

Minimum block size = size-in-bytes

Как правило, данная директива не используется применительно к большинству современных ЗУ на магнитных лентах. Если же вы задаете данную директиву, то Bacula будет использовать блоки фиксированного размера. Данная директива используется применительно к ЗУ без произвольного доступа (например ЗУ на магнитной ленте). Блоки, записанные Storage Daemon в память такого устройства, никогда не будут превышать заданный размер в байтах. Storage Daemon постарается эффективно заполнить блоки данными, полученными в ходе активной сессии, но, если потребуется, добавит заполнение для того, чтобы заархивировать требуемый минимальный размер.

Чтобы блоки имели фиксированный размер, как в случае с ЗУ без произвольного доступа (ЗУ на магнитной ленте), значения Minimum Block Size и Maximum Block Size должны быть одинаковыми (включая 0). По умолчанию используется значение 0, а размер блока по умолчанию равен 64 512 байтам.

Предположим, пользователь хочет задать размер блока, равный 100 Кб. В таком случае необходимо указать:

    Minimum block size = 100K

    Maximum block size = 100K

Примите во внимание, что, если вы хотите указать фиксированный размер блока, как показано выше, ЗУ на магнитной ленте должно работать либо в режиме переменного размера блока, либо, если оно работает в режиме фиксированного размера блока, размер блока (как правило, задается  с помощью mtдолжен быть равным размеру, заданному в ПО Bacula. В противном случае, при попытке повторного считывания томов, пользователь столкнется с ошибкой.

Если вы хотите использовать переменный размер блока, но в диапазоне от 64K (минимум) до 200K (максимум), вам необходимо задать:

    Minimum block size = 64K

    Maximum blocksize = 256K

Maximum Block Size = size-in-bytes

Как правило, данная директива не используется применительно к большинству современных ЗУ на магнитных лентах. Если же вы задаете данную директиву, она поможет улучшить эффективность работы системы в случае использования более современных LTO накопителей. Storage Daemon будет всегда пытаться записывать блоки заданного размера (в байтах) в устройство архивирования. Соответственно, данная директива позволяет задать размер блока по умолчанию и максимальный размер блока. Размер записываемого блока никогда не превысит заданный размер в байтах. Если при добавлении данных в блок, увеличится его максимальный размер, блок будет записан в устройство архивирования, а новые данные будут добавлены в новый блок.

Если не будет задано значение, или будет задано нулевое значение, Storage Daemon будет использовать размер блока по умолчанию, равный 64 512 байтам (126 * 512).

Максимально возможный размер в байтах составляет 4 000 000.

Hardware End of Medium = yes|no

Если данной директиве присвоено значение No, устройству архивирования не потребуется поддерживать выполнение ioctl запроса, а Storage Daemon  будет использовать функцию перехода к следующему файлу для определения конца записанных данных. Если данной директиве присвоено значение Yes, устройство архивирования должно поддерживать запрос ioctl MTEOM, который позволяет установить ленту в положение конца записанных данных. К тому же, SCSI-драйвер должен отслеживать номер файла на ленте и правильно возвращать этот номер с помощью MTIOCGET ioctl. Примите во внимание тот факт, что некоторые SCSI-драйвера правильно переходят к концу записанных данных, но не отслеживают номер файла. На машинах, на которых установлена ОС Linux, SCSI-драйвера используют функцию fast-eod, которая, в случае ее активации, приводит к тому, что драйвер перестает отслеживать номер файла. Необходимо удостовериться в том, что данная функция отключена с помощью программы mt.

По умолчанию директиве Hardware End of Medium присваивается значение Yes. Эта функция используется до добавления данных на ленту, чтобы гарантировать сохранность предыдущих данных. В случае, если пользователь использует нестандартные ЗУ на магнитной ленте, мы рекомендуем использовать программу btape для тестирования накопителя, чтобы понять поддерживает он или нет данную функцию. Все современные ЗУ на магнитных лентах (после 1998 года) поддерживают данную функцию.

Fast Forward Space File = yes|no

Если данной директиве присвоено значение No, устройству архивирования не потребуется поддерживать функцию отслеживания номера файла (MTIOCGET ioctl) при переходе к следующему файлу. Если данной директиве присвоено значение Yes, устройство архивирования должно поддерживать запрос ioctl MTFSF, который, как правило, поддерживают все драйвера. Однако, помимо этого, SCSI-драйвер должен продолжать отслеживать номер файла на ленте и правильно возвращать его с помощью MTIOCGET ioctl запроса. Примите во внимание тот факт, что некоторые SCSI-драйвера правильно переходят к следующему файлу, но не поддерживают отслеживание номера файла, или, что важнее, не сообщают о завершении носителя.

По умолчанию директиве Fast Forward Space File присвоено значение Yes.

Use MTIOCGET = yes|no

Если данной директиве присвоено значение No, операционной системе не потребуется задействовать функцию отслеживания номера файла (MTIOCGET ioctl). По умолчанию директиве присвоено значение Yes. Если необходимо присвоить значение No, Bacula определит правильное положение файла, что, однако, приведет к неэффективной работе системы, так как перемещение ленты будет неэффективным. К счастью, данные сложности возникают только в некоторых системах *BSD. Среди ОС, у которых не возникает проблем с данной директивой, можно назвать Solaris, Linux и FreeBSD.

BSF at EOM = yes|no

Если данной директиве присвоено значение  No (по умолчанию), Bacula не придется предпринимать каких-либо специальных действий при завершении носителя (ленты), так как лента будет установлена в положение после последнего маркера EOF, а Bacula сможет, при необходимости, добавлять данные на ленту. Однако в некоторых системах, например, FreeBSD, когда Bacula считывает конец носителя (ленты), лента будет установлена после второй метки EOF (две EOF метки подряд означают конец носителя). Если Bacula будет добавлять данные после этой метки, все добавленные данные будут потеряны. Для таких систем существует решение, которое заключается в необходимости задать директиву BSF at EOM, которая вынудит Bacula перескочить назад через вторую метку EOF. Чтобы понять, нужно ли вам использовать данную директиву или нет, используйте команду test в программе btape.

TWO EOF = yes|no

Если данной директиве присвоено значение Yes, Bacula запишет две метки конца файла по завершении ленты, то есть после последней задачи или в случае завершения носителя. Если данной директиве присвоено значение No (по умолчанию), Bacula запишет только одну метку конца файла для завершения носителя.

Backward Space Record = yes|no

Если данной директиве присвоено значение Yes, устройство архивирования будет поддерживать запрос MTBSR ioctl для  возвращения на одну запись назад. Если данной директиве присвоено значение No, данные запрос не поддерживается. При этом ленту необходимо будет перематывать назад и вперед до нужного положения. По умолчанию директиве присвоено значение Yes для ЗУ без произвольного доступа. Если функция активирована, она используется в конце тома после записи конца файла и любой метки ANSI/IBM для определения правильности записи последнего блока данных. Если отключить данную функцию, проверка не будет выполняться. Однако это не нанесет ущерба, поскольку процесс повторного считывания используется в качестве профилактической меры и не является обязательным.

Backward Space File = yes|no

Если данной директиве присвоено значение Yes, устройство архивирования поддерживает запросы MTBSF и MTBSF ioctls для возврата назад через метку конца файла и к началу файла. Если данной директиве присвоено значение No, эти запросы не используются и ленту необходимо будет перематывать назад и вперед до нужного положения. По умолчанию директиве присвоено значение Yes для ЗУ без произвольного доступа.

Forward Space Record = yes|no

Если данной директиве присвоено значение Yes, устройство архивирования должно поддерживать запрос MTFSR ioctl для перехода вперед через записи. Если данной директиве присвоено значение  No, чтобы перейти к нужному положению на носителе, необходимо последовательно считывать данные. По умолчанию директиве присвоено значение Yes для ЗУ без произвольного доступа.

Forward Space File = yes|no

Если данной директиве присвоено значение Yes, устройство архивирования должно поддерживать запрос MTFSF ioctl для перехода к файлам по меткам. Если данной директиве присвоено значение  No, чтобы перейти к нужному положению на носителе, необходимо последовательно считывать данные. По умолчанию директиве присвоено значение Yes для ЗУ без произвольного доступа.

Offline On Unmount = yes|no

По умолчанию директиве присвоено значение No. Если данной директиве присвоено значение Yes, устройство архивирования должно поддерживать запрос MTOFFL ioctl, чтобы перематывать и переводить том в автономный режим. В таком случае, Bacula создаст запрос на перевод устройства в автономный режим (запрос на извлечение) до закрытия носителя во время выполнения команды unmount. Если данной директиве присвоено значение No, Bacula не будет пытаться перевести устройство в автономный режим перед его размонтированием. После создания запроса на перевод устройства в автономный режим, кассета будет извлечена. Таким образом, для продолжения работы потребуется вмешательство оператора.  В случае отдельных систем потребуется задать команду загрузки (mt -f /dev/xxx load) перед тем, как система распознает ленту. Если вы используете аточейнджер, для некоторых устройств потребуется задать команду перед сменой тома.

Если вы используете ядро Linux 2.6 или другую ОС, например, FreeBSD или Solaris, директива Offline On Unmount оставит носитель без ленты, а Bacula не сможет правильно открыть носитель, что может привести к неуспешному выполнению задачи. Более подробная информация по данному вопросу изложена в соответствующем разделе руководства по устранению неисправностей при работе с Bacula Enterprise.

Maximum Concurrent Jobs = number

где number – это максимальное количество задач, которое может быть запущено одновременно на указанном устройстве. При использовании данной директивы можно запускать различное количество задач с помощью нескольких накопителей, потому что при достижении максимального числа  одновременно запущенных задач, Storage Daemon запустит новые задачи на любом другом доступном совместимом накопителе. Данная директива упрощает запись данных на несколько накопителей с помощью нескольких задач, использующих один и тот же пул.

Maximum Volume Size = size

Данные не больше заданного объема в байтах будут записаны в указанный том на устройство архивирования. Эта директива используется в основном при тестировании возможности Bacula имитировать создание небольшого тома. Директива также может использоваться для ограничения размера файлового тома, который, скажем не должен превышать 2 Гб. В отдельных редких случаях директиву применяют, если используются устаревшие ЗУ на магнитной ленте, которые не могут правильно определять конец ленты во время записи данных. Примите во внимание, что эта директива является устаревшей. Вместо нее используется директива Maximum Volume Bytes в конфигурационном файле Director’а.

Maximum File Size = size

Данные не больше заданного объема в байтах будут записаны в указанный логический файл в томе. Как только заданный объем будет достигнут, в томе будет записана метка конца файла. Последующие данные будут записываться в следующий файл. Деление длинных последовательностей блоков данных с помощью меток позволяет быстрее устанавливать ленту в в начало указанного потока данных и, тем самым, повысить эффективность их восстановления, избегая ошибок считывания данных из тома. По умолчание используется объем равный 1 Гб. Директива создает EOF метки только на ленточных носителях. Тем не менее, не зависимо от типа носителя (лента, диск, USB ЗУ …) каждый раз при превышении максимального размера файла, в каталог БД вносится запись, которая позволяет искать нужно положение данных на носителе с целью из восстановления. Если пользователь задаст слишком маленький объем (например, 1Мб), система сгенерирует большое количество записей БД (JobMedia), что создаст существенную нагрузку на ЦП/диск.

Если вы конфигурируете ленту LTO-3 или LTO-4, возможно, стоит задать объем Maximum File Size равный 2Гб, чтобы не позволить носителю останавливаться для записи EOF метки.

Примите во внимание тот факт, что данная директива не ограничивает объем томов, которые создает Bacula не зависимо от того являются ли они  ленточными или дисковыми томами. Директива меняет исключительно номера EOF меток на ленте и номера сгенерированных записей о положениях блоков (смотрите). Если вы хотите ограничить объем всех томов для конкретного устройства, используйте директиву Maximum Volume Size (смотрите выше), или Maximum Volume Bytes в ресурсе пула Director’а, которая позволяет выполнять все те же действия только применительно к пулам.

Block Positioning = yes|no

Эта директива сигнализирует Bacula о том, что не нужно использовать процедуру позиционирования блока при выполнении восстановления. Если отключить директиву, Bacula будет работать крайне медленно при восстановлении файлов. Вы можете использовать эту директиву, если записали данные на ленты с помощью Bacula в режиме блоков переменной длины (по умолчанию), однако, при этом ваш накопитель работал в режиме блоков фиксированной длины. По умолчанию директиве присвоено значение Yes.

Maximum Network Buffer Size = bytes

где bytes – это исходный размер сетевого буфера, который будет использоваться совместно со службой File Daemon. Если размер сетевого буфера слишком большой, он будет уменьшен до размера, приемлемого для ОС. Пожалуйста, будьте осторожны при изменении данного значения, поскольку, если оно будет слишком большим, то будет уменьшено до 512 байтов. По умолчанию используется значение, равное 32 768 байтам.

Был выбран достаточно большой размер, используемый по умолчанию. Однако не такой большой на случай, если пользователь пересылает данные по сети Интернет. Очевидно, что в случае передачи данных по локальной сети, размер сетевого буфера можно увеличить и повысить производительность. Например, некоторые пользователи выяснили, что при использовании размера в 65 536 байт, скорость обработки данных повышается в 5-10 раз. Большее значение по мнению пользователей не повышает производительность. Если вы заинтересованы в том, чтобы повысить скорость создания резервных копий данных, вы можете поэкспериментировать со значениями. Скорее всего, вам захочется внести соответствующие изменения в каждый конфигурационный файл File daemon.

Maximum Spool Size = bytes

где bytes – это максимальный размер подкаченных в буфер данных для всех запущенных задач. По умолчанию размер подкачки не ограничен.

Maximum Job Spool Size = bytes

где bytes – это максимальный размер подкаченных в буфер данных для любой запущенной задачи. По умолчанию размер подкачки не ограничен. Эта директива реализована начиная с версии 1.37.

Spool Directory = directory

указывает имя каталога который необходимо использовать для хранения буферных файлов для конкретного устройства. Этот каталог также используется для хранения временных файлов при записи на устройство, которое требует монтирования (USB-устройство). По умолчанию используется рабочий каталог.

Редактирование кода для директив монтирования и размонтирования

Перед отправкой директив Mount CommandUnmount Command, или Free Space Command в ОС, Bacula производит следующую замену символов:

    %% = %

    %a = Archive device name

    %e = erase (set if cannot mount and first part)

    %n = part number

    %m = mount point

Устройства, требующие монтирования (USB-устройства)

Все директивы из данного радела реализованы только в ПО Bacula начиная с версии 1.37. Таким образом, они доступны в версии 1.38.6.

Директивы: «Requires Mount», «Mount Point», «Mount Command», и «Unmount Command» применимы к съемным файловым системам типа USB устройств.

Requires Mount = yes|no

Необходимо присвоить директиве значение yes для съемных устройств типа USB носителя, если они не поддерживают функцию автоматического монтирования, либо значение no для всех других типов устройств (лент/файлов). Директива используется в том случае, если устройство требует монтирования для считывания и если запись на него необходимо производить особым способом. Если директива задана, то также необходимо задать директивы Mount PointMount Command и Unmount Command.

Mount Point = directory

Каталог, в котором можно смонтировать устройство.

Mount Command = name-string

Команда, которую необходимы выполнить, чтобы смонтировать устройство. Перед выполнением команды, символ %a будет заменен на устройство архивирования Archive Device, а %m точкой монтирования Mount Point.

Чаще всего команда выглядит следующим образом:

Mount Command = «/bin/mount -t iso9660 -o ro %a %m»

В случае некоторых типов носителей пользователю, возможно, потребуется задать несколько команд. В таком случае рекомендуется использовать скрипт оболочки, а не вставлять их всех в директиву Mount Command. Например, вместо:

Mount Command = «/usr/local/bin/mymount»

Использовать скрипт:

#!/bin/sh

ndasadmin enable -s 1 -o w

sleep 2

mount /dev/ndas-00323794-0p1 /backup

Точно также стоит поступать со всеми прочими командными параметрами.

Unmount Command = name-string

Команда, которую необходимо выполнить, чтобы размонтировать устройство. Перед выполнением команды, символ %a будет заменен на устройство архивирования Archive Device, а %m точкой монтирования Mount Point.

Чаще всего команда выглядит следующим образом:

  Unmount Command = «/bin/umount %m»

Если необходимо задать несколько команд, создайте скрипт оболочки.

Возможности

Label Media = yes|no

Если присвоено значение Yes, директива позволяет данному устройству автоматически помечать незаполненные носителя без явно заданной директивы оператора. Процедура выполняется с помощью внутреннего алгоритма, как указано в записи FormatLabel в каждом ресурсе пула. По умолчанию директиве присвоено значение No. При этом Bacula пометит ленты только с помощью специальной директивы оператора (label в консоли) или при повторном использовании ленты.

Функция автоматической маркировки полезно использовать при записи данных на дисковые, а не на ленточные тома.

Automatic mount = yes|no

Если присвоено значение Yes (по умолчанию), директива позволяет  службе daemon проверять устройство, чтобы определять, не содержит ли оно том, помеченный Bacula. Данная процедура выполнятся при запуске службы daemon, а затем перед началом каждой задачи. Директиву важно использовать, если, в частности, вы задали директиву Always Open = no,  потому что она позволяет Bacula пытаться считывать устройство перед тем, как попросить системного оператора смонтировать ленту. Примите во внимание, что лента должна быть смонтирована до начала выполнения задачи.

Ресурс Сообщений

Более подробная информация о Ресурсе Сообщений изложена в соответствующем разделе данного руководства.

Пример конфигурационного файла Storage Daemon

Пример конфигурационного файла Storage Daemon приведен ниже:

#

# Default Bacula Storage Daemon Configuration file

#

#  For Bacula release 1.37.2 (07 July 2005) — gentoo 1.4.16

#

# You may need to change the name of your tape drive

#   on the «Archive Device» directive in the Device

#   resource.  If you change the Name and/or the

#   «Media Type» in the Device resource, please ensure

#   that bacula-dir.conf has corresponding changes.

#

Storage {                               # definition of myself

  Name = rufus-sd

  Address = rufus

  WorkingDirectory = «$HOME/bacula/bin/working»

  Pid Directory = «$HOME/bacula/bin/working»

  Maximum Concurrent Jobs = 20

}

#

# List Directors who are permitted to contact Storage daemon

#

Director {

  Name = rufus-dir

  Password = «ZF9Ctf5PQoWCPkmR3s4atCB0usUPg+vWWyIo2VS5ti6k»

}

#

# Restricted Director, used by tray-monitor to get the

#   status of the storage daemon

#

Director {

  Name = rufus-mon

  Password = «9usxgc307dMbe7jbD16v0PXlhD64UVasIDD0DH2WAujcDsc6»

  Monitor = yes

}

#

# Devices supported by this Storage daemon

# To connect, the Director’s bacula-dir.conf must have the

#  same Name and MediaType.

#

Autochanger {

  Name = Autochanger

  Device = Drive-1

  Device = Drive-2

  Changer Command = «/home/kern/bacula/bin/mtx-changer %c %o %S %a %d»

  Changer Device = /dev/sg0

}

 

Device {

  Name = Drive-1                      #

  Drive Index = 0

  Media Type = DLT-8000

  Archive Device = /dev/nst0

  AutomaticMount = yes;               # when device opened, read it

  AlwaysOpen = yes;

  RemovableMedia = yes;

  RandomAccess = no;

  AutoChanger = yes

  Alert Command = «sh -c ‘tapeinfo -f %c |grep TapeAlert|cat'»

}

 

Device {

  Name = Drive-2                      #

  Drive Index = 1

  Media Type = DLT-8000

  Archive Device = /dev/nst1

  AutomaticMount = yes;               # when device opened, read it

  AlwaysOpen = yes;

  RemovableMedia = yes;

  RandomAccess = no;

  AutoChanger = yes

  Alert Command = «sh -c ‘tapeinfo -f %c |grep TapeAlert|cat'»

}

 

Device {

  Name = «HP DLT 80»

  Media Type = DLT8000

  Archive Device = /dev/nst0

  AutomaticMount = yes;                 # when device opened, read it

  AlwaysOpen = yes;

  RemovableMedia = yes;

}

#Device {

#  Name = SDT-7000                     #

#  Media Type = DDS-2

#  Archive Device = /dev/nst0

#  AutomaticMount = yes;               # when device opened, read it

#  AlwaysOpen = yes;

#  RemovableMedia = yes;

#}

#Device {

#  Name = Floppy

#  Media Type = Floppy

#  Archive Device = /mnt/floppy

#  RemovableMedia = yes;

#  Random Access = Yes;

#  AutomaticMount = yes;               # when device opened, read it

#  AlwaysOpen = no;

#}

#Device {

#  Name = FileStorage

#  Media Type = File

#  Archive Device = /tmp

#  LabelMedia = yes;                   # lets Bacula label unlabeled media

#  Random Access = Yes;

#  AutomaticMount = yes;               # when device opened, read it

#  RemovableMedia = no;

#  AlwaysOpen = no;

#}

#

# A very old Exabyte with no end of media detection

#

#Device {

#  Name = «Exabyte 8mm»

#  Media Type = «8mm»

#  Archive Device = /dev/nst0

#  Hardware end of medium = No;

#  AutomaticMount = yes;               # when device opened, read it

#  AlwaysOpen = Yes;

#  RemovableMedia = yes;

#}

#

# Send all messages to the Director,

# mount messages also are sent to the email address

#

Messages {

  Name = Standard

  director = rufus-dir = all

  operator = root = mount

}