Накопители на лентах


FreeBSD поддерживает накопители на магнитных лентах с интерфейсами SCSI, USB и IDE. По сравнению с устройствами IDE устройства SCSI быстрее и надежнее, однако устройства IDE дешевле. Накопители с интерфейсом USB не всегда соответствуют стандартам и потому могут не поддерживаться системой FreeBSD. Обязательно ознакомьтесь с примечаниями к выпуску в архивах почтовых рассылок FreeBSD, чтобы убедиться, что ваш накопитель на магнитной ленте совместим с FreeBSD.

После физической установки накопителя на ленте необходимо убедиться, что FreeBSD распознала это устройство. Самый простой путь — проверить файл /var/run/dmesg.boot, как рассказывалось в главе 3. Накопители с интерфейсами SCSI и USB отображаются в нем как устройства «sa», тогда как IDE-накопители отображаются как устройства «ast». Например, следующие три строки из файла dmesg.boot описывают SCSI-накопитель, подключенный к этому компьютеру:

Из всей информации, что мы имеем об этом накопителе на магнитной ленте, самое важное, что FreeBSD опознала его как устройство sa0 (1). Кроме того, это устройство подключено к SCSI-карте ahc0 (2) со SCSI ID 9 (3) и это модель «SONY SDT-10000 0110» (4) максимальной производительностью до 40 Мбайт в секунду (5).

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

Прежде чем вы сможете использовать накопитель на магнитной ленте для нужд резервного копирования, необходимо научиться им управлять. Подобно многим другим старомодным устройствам UNIX, способ доступа к накопителю на ленте определяет его поведение. Для каждого типа накопителей на ленте используются различные файлы устройств, и все они ведут себя по-разному. Основной механизм управления накопителем — применение файла устройства, который используется для доступа к нему.

При наличии обычного SCSI-накопителя интерес представляют только три файла устройств: /dev/esa0, /dev/nsa0 и /dev/sa0. Точно так же для IDE-накопителя важны файлы /dev/east0, /dev/nast0 и /dev/ast0.

Накопители на лентах — это устройства с последовательным доступом; данные на ленте хранятся линейно. Для получения доступа к определенным данным на ленте необходимо перематывать ленту вперед и назад. Делать это или не делать — вопрос важный.

Примечание
Поведение различных файлов устройств накопителей на ленте различно в разных операционных системах. Различные версии UNIX обладают различным программным обеспечением, которое по-разному обслуживает эти накопители. Не делайте никаких предположений относительно вашего накопителя!

Если в команде указывается файл устройства, который соответствует имени устройства, лента будет автоматически перемотана после завершения операции. Возьмем устройство SCSI sa0; при запуске команды, в которой в качестве файла устройства указан /dev/sa0, лента будет автоматически перемотана по завершении команды.

Бывает так, что после завершения операции ленту перематывать не надо, например, когда предполагается выполнить резервное копирование данных с другой машины и разместить их на ленте или вам необходимо перед перемоткой и извлечением ленты каталогизировать ее. В этом случае следует задействовать файл устройства, имя которого начинается с n. Скажем, если в команде указан /dev/nsa0, лента не будет перемотана.

Чтобы лента извлекалась автоматически после завершения операции, следует указать файл устройства, имя которого начинается с e. Например, если операция подразумевает резервное копирование всей системы, для автоматического извлечения ленты по окончании сохранения следует задействовать устройство /dev/esa0. Некоторые старые накопители на лентах могут не поддерживать автоматическое извлечение ленты; в этом случае необходимо нажать клавишу для приведения в действие рычага, который извлечет ленту из накопителя. Самый простой способ, позволяющий выяснить, возможно ли автоматическое извлечение ленты, состоит в том, чтобы попробовать извлечь ее за счет использования соответствующего файла устройства и посмотреть, что произойдет.

Переменная $ТАРЕ

Во многих программах подразумевается, что накопитель на ленте представлен файлом устройства /dev/sa0, однако такое предположение не всегда верно. Даже если в системе установлен только один накопитель SCSI, то возможно, что вам не потребуется автоматическая перемотка ленты (dev/nsa0) или надо будет извлечь ленту по завершении резервного копирования (/dev/esa0). Либо в системе есть накопитель IDE, для которого используется файл устройства с совершенно другим именем.

Многие программы (но не все) ориентируются на переменную окружения $ТАРЕ, значение которой они используют как имя файла устройства по умолчанию. Вы всегда сможете в командной строке указать иной файл устройства, а в переменную $ТАРЕ записать наиболее часто используемое значение и тем самым избавить себя от доли раздражения.

Если вы используете командный процессор по умолчанию, значение переменной $ТАРЕ можно установить следующей командой:

# setenv TAPE /dev/sa0

Определение состояние накопителя с помощью команды mt(1)

Теперь, когда вы узнали, как отыскать свой накопитель на ленте, можно выполнять основные операции, такие как перемотка, натяжка, очистка и т. д., с помощью команды mt(1). Чаще всего команда mt применяется для выяснения состояния накопителя на ленте:

# mt status

Большая часть информации, представленной здесь, особого значения не имеет, однако если эти данные необходимо изучить построчно, следует обратиться к странице руководства mt(1), хорошо описывающей все особенности команды. По крайней мере, если команда возвращает какую-то полезную информацию, следовательно, она обнаруживает накопитель.

Самое первое, что мы видим, — это характеристика плотности записи на ленту (1). В устаревших моделях для разных целей могли использоваться ленты с разной плотностью записи, но современные устройства записывают данные настолько плотно, насколько это возможно. В данном случае привод обеспечивает плотность записи DDS-3. Вам могла бы потребоваться иная плотность записи, но DDS-3 — это все, что может вам предложить данное устройство. Далее видно, что устройство предлагает возможность аппаратной компрессии данных по алгоритму DCLZ (2). Ближе к концу видно, что делает устройство в настоящий момент (3).

Команда status может выводить самые разные сообщения. Наибольшие проблемы вызывает то, которое сообщает, что устройство не сконфигурировано:

# mt status
mt: /dev/nsa0: Device not configured

Это означает, что в системе нет накопителя на ленте, соответствующего файлу устройства, который указан в переменной $ТАРЕ. С файлами устройств можно поэкспериментировать, если посредством ключа -f указать файл устройства (например, mt -f /dev/nsa1 status). Однако необходимую информацию можно получить из dmesg.boot.

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

Еще один вариант ответа, который можно получить от команды mt status, — mt: /dev/nsa0: Device busy. Вы спрашиваете, в каком состоянии находится ваша лента, и вам отвечают: «Я не могу говорить сейчас, я занят». Попробуйте обратиться позднее или с помощью команды ps -ах посмотрите, кто пользуется приводом. В каждый конкретный момент времени доступ к ленте может получить только один экземпляр программы. Вы не можете вывести содержимое ленты в то время, когда с нее производится чтение файла.

Другие команды управления накопителем на ленте

С накопителем на магнитной ленте можно выполнять гораздо более интересные операции, чем просто получать отчет о его состоянии. Наиболее часто я использую команды retension, erase, rewind и offline.

Ленты имеют свойство растягиваться, особенно первое время. (Я отлично знаю, все современные производители лент заявляют, что они предварительно производят растяжку своих лент или что их ленты не растягиваются; но прибавляем к этим заявлениям два кусочка хлеба и получаем болонский сэндвич.) Повторное натяжение (retensioning) ленты производится простой ее перемоткой вперед и назад, с помощью команды mt retension. Повторное натяжение устраняет слабину и повышает надежность резервного копирования.

Операция стирания удаляет все данные с ленты. Но это не то надежное стирание, которое можно было бы использовать для сокрытия данных от фирмы, занимающейся восстановлением данных или от налогового управления США: mt erase просто прокручивает ленту и накладывает новую запись поверх существующей. Это может занять довольно много времени. Если нужно стереть ленту быстро, можно воспользоваться командой mt erase 0, которая просто пометит ленту как пустую.

Команда mt rewind перемотает ленту в начало, точно так же, как и обращение к устройству через файл устройства с тем же именем.

Когда устройство отключается, оно перематывает ленту и выталкивает ее, что дает возможность вставить новую ленту. Команда, которая делает это, выглядит немного странно — mt offline.

Перематывать или нет?

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

Характер накопителя на ленте

Не все накопители на магнитной ленте поддерживают полный перечень функций. Устаревшие модели накопителей очень капризны и требуют тщательной настройки. Если вы испытываете сложности с каким-либо приводом, загляните в архивы почтовых рассылок FreeBSD-questions и посмотрите, не было ли там сообщений с описанием аналогичной проблемы. Возможно, там вам удастся отыскать ответ.

Комментарии запрещены.