t_readerユーティリティーの使用方法
Summary: この記事では、さまざまなオペレーティング システムでのt_readerおよびt_writerユーティリティーの使用方法と、それをダウンロードする場所について説明します。
Symptoms
- テープ上の実際のブロック長を決定する必要がある
- NetWorkerラベル構造を確認する必要があります
- テープ メディアの物理的な整合性を検証する必要がある
- NetWorkerブロック ヘッダーのメタデータを確認する必要がある
- 各ブロックの未フォーマットの最初の512バイトをダンプする必要がある
、 t_reader ユーティリティーは、テープ ドライブ関連の問題を診断およびトラブルシューティングするためのものです。また、NetWorkerサポートとして、いくつかのテープ機能が提供されるため、便利なトラブルシューティング ツールとなります。これを使用して、次のことを行います。
- テープに書き込まれたブロックの実際のサイズをテストする
- テープに書き込まれるブロックのサイズにばらつきがあるかどうかを判断します
- I/Oエラーまたは物理的損傷について、物理メディアの読み取りをテストします
- アプリケーション層の下の要素(ドライバー、OS、トランスポート、デバイス自体)が特定のサイズのブロックを読み取ることができるかどうかを判断する
- 他の現在のユーティリティーでは不可能なWindowsの低レベル情報の公開
Cause
テープ メディアの問題は、多くの場合、次のような外部要因によって引き起こされます。
- OS/HBA/ドライバーのブロック要因の問題
- 書き込み中にI/Oハードウェアまたは転送エラーが検出されない
- 経年劣化、使用方法、ドライブの衛生状態、不適切な保管によるメディアの劣化
Resolution
ダウンロード t_reader ここから:NetWorkerツール
バンドルを抽出し、 t_reader ホストのアーキテクチャに対応。
t_readerは、UNIX上では自動的にボリュームを巻き戻しません(Windowsではに提供されます)-これにより、テープ上の任意の場所に配置したり、テープの任意の場所から開始したりできます。- ほとんどのオペレーティング システム
t_readerこの時点から検出されたブロックサイズを報告します。一部では、読み取りを試みるためにブロック長が必要です。 t_readerファイルとレコードの列挙を 0 で開始します - つまり、ファイル 5 にスペースフォワードする場合は、意図的に 500 を記録してから、t_reader-t_reader出力は F0 R0 から始まるように見えますが、実際にはかなり後のアドレスから始まっています。- 実際のブロック長を判別できるオペレーティングシステムでは、ドライバまたはOSのブロック長制限により、バッファが小さすぎてブロックデータを保持できないことを示す次のようなエラーが発生します。
cannot allocate memoryまたはmore data is available間のデッドロックが原因で潜在的なHMONタイムアウトが発生する問題が解決されています。 t_reader実際のデータを読み取る必要はないが、NetWorkerラベルが存在する場合、それを認識して読み取ることができる- Windows では、ブロック ヘッダー情報を読み取って報告することもできます (使用可能な場合)。また、データの最初の 512 バイトをダンプすることもできます (以下の変数を参照)
- 常時 - 32 KBラベル ブロックの最初のペアの後のブロック長は一貫している必要があり、スキャナーによって返されるラベルに書き込まれたブロック長と一致する必要があります
UNIX
最初に巻き戻してボリュームを準備するには、次のようにします。
mt -f /dev/nst0 rewind
実行する t_readerの場合は、テープ カートリッジがロードされたドライブの OS デバイス ファイル ハンドルを指定します。たとえば、次のようになります。
./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
この例は、ラベルを示す最初の2つのファイルに32Kブロックが2つあり、その後にファイル18の後にデータの終わり(EOD)に達するまで、ファイル・マークによって定期的に区切られた96Kブロックが続く正常なボリュームを示しています。
WINDOWS
Windowsの場合は、読み取るブロックのサイズも指定する必要があります。
t_reader \\.\tape0 131072
この効果は、Windowsが提供されたブロックサイズを読み取ろうとし、(実際に書き込まれたブロックサイズよりも大きくなる可能性があるにもかかわらず)文句を言わないことです - ただし、引数として指定されたブロックサイズが実際のブロックよりも小さい場合、またはOSまたはドライバーの制限により、そのサイズのブロックが使用できなくなる場合はエラーが発生します。
Windowsはブロック長を自動的に決定して報告できないため、2番目の引数として指定する必要があります。ブロックサイズが大きすぎる場合は、単に複数のブロックを読み取って引数で指定したサイズとして提示するため、誤って報告されます。指定されたブロック長 (例: 131072) が 実際の ブロック長 (262144 など) よりも小さい場合は、エラーが発生します。
>>>>>File Mark Encountered. Total Records Estimated In File 1 Are 1 Read Record does not align on Assigned Buffer
したがって、不明なブロック・サイズを正しく判別するには、32768 から開始し、ユーティリティーが成功するまで 2 倍にします。ただし、 通常、予想される ブロック長はラベルから判断できます。
Windows には、より詳細なデバッグ用に設定できる 2 つの変数もあります。
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 B をダンプするには、次のようにします。
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間のデッドロックが原因で潜在的なHMONタイムアウトが発生する問題が解決されています。これは、tarやddなどのUNIXユーティリティーの代わりとなるWindows専用のユーティリティーで、カスタム ブロック長でテープへのテスト書き込みを実行できます。付属のファイル、seeding.image、または同じ名前のバイナリファイルが必要です。
このユーティリティーを使用するには、最初の引数としてメディア ロードされたデバイスを使用し、2番目の引数として必要なブロック長(バイト単位)を使用して実行します。たとえば、次のようになります。
win_t_writer.exe \\.\Tape2147483639 131072
このユーティリティーは、ユーザーがプロセスを中断するまで実行されます。異なるブロック長をシミュレートするために、同じボリューム上で異なるブロック長で連続して実行したり、ランダムI/Oエラーまたは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...