Como usar o utilitário t_reader
Summary: Este artigo descreve o uso dos utilitários t_reader e t_writer em vários sistemas operacionais e onde baixá-lo.
Symptoms
- Deve determinar os tamanhos reais dos blocos em uma fita
- Deve verificar a estrutura de rótulos do NetWorker
- Deve verificar a integridade física da mídia de fita
- Precisa confirmar os metadados do cabeçalho de bloco do NetWorker
- Deve despejar os primeiros 512 bytes brutos de cada bloco
O comando t_reader O utilitário é para diagnosticar e solucionar problemas relacionados à unidade de fita. Também é um suporte do NetWorker, que fornece várias funções de fita que o tornam uma ferramenta útil de solução de problemas. Use-o para:
- Testar o tamanho real dos blocos gravados na fita
- Determine se há variações de tamanhos de blocos gravados em fita
- Teste a leitura da mídia física em busca de erros de E/S ou danos físicos
- Determine se os elementos abaixo da camada do aplicativo (driver, sistema operacional, transporte, o próprio dispositivo) podem ler blocos de um tamanho específico
- Expor informações de baixo nível no Windows não é possível com qualquer outro utilitário atual
Cause
Problemas com a mídia de fita geralmente são causados por fatores externos, como:
- Problemas de fator de bloqueio do SO/HBA/driver
- Erros de hardware ou transporte de E/S não detectados durante a gravação
- Degradação da mídia devido à idade, uso, higiene da unidade ou armazenamento inadequado
Resolution
Download t_reader daqui: Ferramentas do NetWorker
Extraia o pacote e use o comando t_reader para a arquitetura do seu host.
t_readernão retrocederá automaticamente o volume no UNIX (ele oferece no Windows) — isso permite que você posicione e comece a partir de qualquer ponto da fita.- Na maioria dos sistemas operacionais
t_readerrelata os tamanhos de bloco encontrados a partir deste ponto; alguns exigem que você tenha um tamanho de bloco para tentar ler. t_readercomeça sua enumeração de arquivo e registro em 0 - o que significa que se você fosse espaçar para o arquivo 5, registre 500 deliberadamente e, em seguida, executet_reader-t_readeras saídas parecem começar em F0 R0, apesar de realmente começarem em um endereço muito posterior.- Em sistemas operacionais que podem determinar o tamanho real do bloco, uma limitação de tamanho de bloco no driver ou no SO resulta em um erro que indica que o buffer é muito pequeno para armazenar os dados do bloco, como
cannot allocate memoryoumore data is available. t_readernão precisa ler os dados reais, mas pode reconhecer e ler os rótulos do NetWorker, se presentes- No Windows, ele também pode ler e relatar informações de cabeçalho de bloco, se disponíveis; Ele também pode despejar os primeiros 512 bytes brutos de dados (veja as variáveis abaixo)
- Always — os tamanhos dos blocos devem ser consistentes após o primeiro par de blocos de etiquetas de 32 KB e devem corresponder ao tamanho do bloco gravado na etiqueta conforme retornado pelo scanner
UNIX
Para preparar um volume rebobinando-o primeiro:
mt -f /dev/nst0 rewind
Para executar t_reader, forneça o identificador de arquivo do dispositivo operacional da unidade com o cartucho de fita carregado, por exemplo:
./t_reader_linux /dev/nst0
A saída de um volume padrão do NetWorker após o rebobinamento é semelhante a esta:
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
Este exemplo demonstra um volume íntegro com dois blocks de 32K nos dois primeiros arquivos indicando o rótulo, seguidos por blocks de 96K pontuados periodicamente por marcas de arquivo até o EOD (End of Data) encontrado após o arquivo 18.
WINDOWS
Para Windows, você também deve informar o tamanho do bloco que deseja ler:
t_reader \\.\tape0 131072
O efeito disso é que o Windows tenta ler qualquer tamanho de bloco fornecido a ele, e não reclamar (apesar de ser potencialmente maior do que o tamanho de bloco real escrito) - embora ele irá errar se o tamanho do bloco fornecido como o argumento é menor do que o bloco real, ou se houver uma limitação de sistema operacional ou driver que torna um bloco desse tamanho inutilizável.
Como o Windows não pode determinar e relatar automaticamente o tamanho do bloco, ele deve ser fornecido como o segundo argumento. Se o tamanho do bloco for muito grande, ele apresenta relatórios incorretos, pois está simplesmente lendo vários blocos e apresentando-os como o tamanho fornecido pelo argumento. Se o tamanho do bloco fornecido, por exemplo, 131072, for menor do que o tamanho real do bloco, por exemplo, 262144, você receberá um erro:
>>>>>File Mark Encountered. Total Records Estimated In File 1 Are 1 Read Record does not align on Assigned Buffer
Portanto, para determinar corretamente um tamanho de bloco desconhecido, comece em 32768 e dobre até que o utilitário seja bem-sucedido. No entanto, geralmente é possível determinar o tamanho esperado do bloco a partir do rótulo.
O Windows também tem duas variáveis que podem ser definidas para uma depuração mais profunda:
set EXPLODE_LEVEL=1
Causas t_reader para relatar o cabeçalho do bloco para todos os blocos do NetWorker encontrados:
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
Para causar t_reader para despejar o primeiro 512 B de cada bloco, leia:
set DUMP_BUFFER=1
Espere um resultado como:
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 ...
Isso pode permitir uma depuração mais profunda ou comprovar volumes danificados ou criptografados que não sejam do NetWorker, mas é obviamente para usos incomuns.
Additional Information
t_reader também vem com um utilitário complementar, t_writer.exe. Este é um utilitário somente para Windows que substitui utilitários UNIX, como tar e dd, e permite que as gravações de teste sejam executadas em fitas em tamanhos de bloco personalizados. Ele requer o arquivo que o acompanha, seeding.image ou qualquer arquivo binário de mesmo nome.
Para usar o utilitário, execute-o usando um dispositivo carregado por mídia como o primeiro argumento e o tamanho de bloco desejado em bytes como o segundo, por exemplo:
win_t_writer.exe \\.\Tape2147483639 131072
O utilitário será executado até que o usuário interrompa o processo. Ele pode ser executado sucessivamente no mesmo volume com tamanhos de bloco diferentes para simular tamanhos de bloco de variantes, ou repetidamente até a falha se houver suspeita de erros aleatórios de E/S ou redefinições de SCSI. Ele também pode ser usado para demonstrar se uma condição está truncando tamanhos de blocos abaixo da camada de aplicação.
Como exemplo do resultado:
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...