Как использовать утилиту t_reader
Summary: В этой статье описано использование t_reader и t_writer утилит в различных операционных системах, а также где их скачать.
Symptoms
- Необходимо определить фактические размеры блоков на ленте
- Необходимо проверить структуру меток NetWorker
- Необходимо проверить физическую целостность ленточного носителя
- Необходимо подтвердить метаданные заголовка блока NetWorker
- Необходимо выгрузить необработанные первые 512 байт каждого блока
Оператор t_reader Утилита предназначена для диагностики, поиска и устранения неисправностей, связанных с ленточным накопителем. Это также поддержка NetWorker, которая предоставляет несколько функций ленточного накопителя, что делает его полезным средством устранения неполадок. С его помощью можно решать следующие задачи:
- Проверка фактического размера блоков, записанных на ленту
- Определите, есть ли различия в размерах блоков, записываемых на ленту
- Тестовое чтение физического носителя на предмет ошибок ввода-вывода или физических повреждений
- Определите, могут ли элементы, расположенные ниже прикладного уровня (драйвер, ОС, транспорт, само устройство), считывать блоки определенного размера
- Раскрытие низкоуровневой информации в Windows невозможно ни с одной другой текущей утилитой
Cause
Проблемы с ленточными носителями часто вызваны внешними факторами, такими как:
- Проблемы с фактором блокировки ОС/HBA/драйверов
- Необнаруженные ошибки оборудования ввода-вывода или транспортные ошибки во время записи
- Ухудшение состояния носителя из-за возраста, использования, гигиены диска или неправильного хранения
Resolution
Скачать t_reader отсюда: Инструменты NetWorker
Извлеките пакет и используйте t_reader для архитектуры хоста.
t_readerне будет автоматически перематывать том на UNIX (это предлагается на Windows) - это позволяет вам позиционировать и начинать с любого места на ленте.- В большинстве операционных систем
t_readerсообщает о размерах блоков, которые он находит с этой точки; Некоторые из них требуют для чтения определенного размера блока. t_readerначинает нумерацию файлов и записей с 0 - это означает, что если вы хотите переместиться вперед к файлу 5, запишите 500 преднамеренно, а затем запуститеt_reader-t_readerвыходы, по-видимому, начинаются с F0 R0, хотя на самом деле начинаются с гораздо более позднего адреса.- В операционных системах, которые могут определять фактический размер блока, ограничение размера блока в драйвере или операционной системе приводит к ошибке, указывающей, что буфер слишком мал для хранения данных блока, например
cannot allocate memoryилиmore data is available. t_readerне требует считывания фактических данных, но может распознавать и считывать этикетки NetWorker, если они есть;- В Windows он также может считывать и сообщать информацию о заголовках блоков, если таковая имеется; Он также может выгружать первые 512 необработанных байт данных (см. переменные ниже)
- Всегда — размеры блоков должны быть одинаковыми после первой пары блоков меток по 32 Кбайт и должны соответствовать размеру блоков, записанному в метке, возвращенному сканером
ЮНИКС
Чтобы подготовить том, сначала перемотав его назад, выполните следующие действия.
mt -f /dev/nst0 rewind
Для запуска t_reader, предоставьте дескриптор файла устройства ОС накопителя с загруженным ленточным картриджем, например:
./t_reader_linux /dev/nst0
Вывод стандартного тома NetWorker после перемотки выглядит следующим образом:
About to read FileNo-BlockNo: 0-0 Found block size: 32768 About to read FileNo-BlockNo: 0-1 EOF encountered About to read FileNo-BlockNo: 1-0 Found block size: 32768 About to read FileNo-BlockNo: 1-1 EOF encountered About to read FileNo-BlockNo: 2-0 Found block size: 98304 About to read FileNo-BlockNo: 2-1 Found block size: 98304 ... About to read FileNo-BlockNo: 19-0 Found this record at block size= 98304 About to read FileNo-BlockNo: 19-1 File Mark encountered About to read FileNo-BlockNo: 20-0 File Mark encountered No more data is on Tape
В этом примере показан работоспособный том с двумя блоками по 32 КБ в первых двух файлах, указывающими метку, за которыми следуют 96 КБ блоков, периодически перемежающихся файловыми метками, до тех пор, пока не наступит конец данных (EOD) после файла 18.
ВИНДОУС
Для Windows вы также должны указать размер блока, который вы хотите прочитать:
t_reader \\.\tape0 131072
Результатом этого является то, что Windows пытается считывать любой размер блока, предоставленный ей, и не жаловаться (несмотря на то, что он потенциально больше, чем фактический размер записанного блока) - хотя он будет ошибкой, если размер блока, указанный в качестве аргумента, меньше фактического блока, или существует ограничение ОС или драйвера, которое делает блок такого размера непригодным для использования.
Поскольку Windows не может автоматически определять и сообщать размер блока, он должен быть указан в качестве второго аргумента. Если размер блока слишком велик, он сообщает неверно, так как просто считывает несколько блоков и представляет их как размер, предоставленный аргументом. Если указанный размер блока, например 131072, меньше фактического размера блока, например 262144, вы получите сообщение об ошибке:
>>>>>File Mark Encountered. Total Records Estimated In File 1 Are 1 Read Record does not align on Assigned Buffer
Поэтому, чтобы правильно определить неизвестный размер блока, начните с 32768 и удваивайте до тех пор, пока утилита не добьется успеха. Однако обычно ожидаемый размер блока можно определить по метке.
В Windows также есть две переменные, которые можно установить для более глубокой отладки:
set EXPLODE_LEVEL=1
Причины t_reader Чтобы сообщить заголовок блока для любых найденных блоков NetWorker, выполните следующие действия.
Read 262144 bytes: HW Fn-Rn:2-81 Media Fn-Rn:2-81 Cummulative Bytes Read 21561344 mr_version 6 mr_size 262144 Volid 4222551389 (0xFBAF055D) Media Fn 2-Media Rn 81 mr_len 444 mr_chunk_len 1
Чтобы вызвать t_reader чтобы выгрузить первые 512 Б каждого блока, прочитайте:
set DUMP_BUFFER=1
Ожидайте следующий вывод:
Read 262144 bytes: HW Fn-Rn: 2-47 Cummulative Bytes Read 12648448 Dumping 512 Bytes Starting At Address: 0x 850048 0x0000: 56 4F 4C 31 51 30 57 30 50 53 20 20 20 20 20 20 0x0010: 20 20 20 20 20 4E 45 54 57 4F 52 4B 45 52 20 20 0x0020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0x0030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0x0040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 33 0x0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...
Это может обеспечить более глубокую отладку или доказать отсутствие NetWorker, поврежденных или зашифрованных томов, но, очевидно, предназначено для редких случаев.
Additional Information
t_reader также поставляется в комплекте с утилитой-компаньоном, t_writer.exe. Это утилита только для Windows, которая заменяет утилиты UNIX, такие как tar и dd, и позволяет выполнять тестовую запись на ленты с пользовательскими размерами блоков. Для этого требуется сопроводительный файл seeding.image или любой двоичный файл с тем же именем.
Чтобы использовать утилиту, запустите ее с использованием носителя устройства в качестве первого аргумента и необходимого размера блока в байтах в качестве второго, например:
win_t_writer.exe \\.\Tape2147483639 131072
Утилита работает до тех пор, пока пользователь не прервет процесс. Его можно запускать последовательно на одном томе с разными размерами блоков для имитации различных размеров блоков или многократно до сбоя, если есть подозрение на случайные ошибки ввода-вывода или сброс SCSI. Его также можно использовать для демонстрации того, что условие усекает размеры блоков ниже уровня приложения.
В качестве примера выходных данных:
C:\Users\Administrator\t_reader>win_t_writer.exe \\.\Tape2147483639 131072
CAUTION: This Is An Un-Supported Tool. To Be Used By Tech. Support Personnel Only
For Comments or Change Requests, email: abid.yazdanie@emc.com
******WARNING Tape Write operations will occur on the device******
******Data Destruction Will Occur******
******You are using this tool at your own risk******
usage: win_t_writer \\.\tapeX 131072
Where tapeX is \\.\tapeX and 131072 (128X1024) is the desired block size, in this case 128K
The Block Size Used Above Is Only An Example.
Run mt -f \\.\tapeX status To Find The Max. Block Size For Your Tape Drive
Enter y to proceed or n to abort: y
Proceeding to write....
About to allocate write buffer
Opening Seeding File seeding.image
Copying Contents Of Seeding File: seeding.image To Write Buffer
WRITE access to device \\.\\\.\Tape2147483639
Successfully opened device: \\.\\\.\Tape2147483639
Calling WriteFile in a perennial loop...