如何使用 t_reader 公用程式

Summary: 本文說明如何在各種作業系統上使用 t_reader 和 t_writer 公用程式,以及下載位置。

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

  • 必須判斷磁帶上的實際區塊大小
  • 必須驗證 NetWorker 標籤結構
  • 必須驗證磁帶介質的物理完整性
  • 必須確認 NetWorker 區塊標頭中繼資料
  • 必須轉儲每個區塊前 512 個位元組的原始

可使用 t_reader 公用程式可用來診斷和故障診斷磁帶機相關問題。它也是 NetWorker 支援,可提供多種磁帶功能,使其成為實用的故障診斷工具。使用它來:

  • 測試寫入磁帶的塊的實際大小
  • 判斷寫入磁帶的區塊大小是否有不同
  • 測試讀取實體媒體是否有 I/O 錯誤或實體損壞
  • 確定應用程式層下的元素(驅動程式、作業系統、傳輸、設備本身)是否可以讀取特定大小的塊
  • 在 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 開始,儘管實際上從更晚的地址開始。
  • 在可判斷實際區塊大小的作業系統上,驅動程式或作業系統中的區塊大小限制會導致錯誤,指出緩衝區太小,無法容納區塊資料,例如 cannot allocate memorymore data is available
  • t_reader 不需要讀取實際資料,但可以識別並讀取 NetWorker 標籤 (如果有的話)
  • 在 Windows 上,它還可以讀取和報告塊頭資訊(如果可用);它還可以轉儲前 512 個原始位元組的數據(請參閱下面的變數)
  • Always - 區塊大小必須在第一對 32 KB 標籤區塊之後一致,並且必須與掃描器傳回寫入標籤的區塊大小相符

UNIX
要先倒帶來準備卷:

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

此示例演示了一個健康的卷,前兩個檔上有兩個 32K 塊指示標籤,後跟 96K 塊,這些塊定期被文件標記打斷,直到檔 18 之後遇到數據結束 (EOD)。

視窗
針對 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 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。這是僅限 Windows 的公用程式,會取代 tar 和 dd 等 UNIX 公用程式,並可讓測試寫入以自訂區塊大小執行至磁帶。它需要隨附的檔、seeding.image 或任何同名的二進位檔。

要使用該實用程式,請使用媒體載入的設備作為第一個參數,並使用所需的塊大小(以位元組為單位)作為第二個參數來運行它,例如:

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...

 

Affected Products

NetWorker
Article Properties
Article Number: 000094976
Article Type: Solution
Last Modified: 19 Nov 2024
Version:  3
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.