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_readerUNIX에서는 볼륨을 자동으로 되감지 않습니다 (Windows에서는 제공됨) - 테이프의 어느 지점에서나 배치하고 시작할 수 있습니다.- 대부분의 운영 체제에서
t_reader이 시점에서 찾은 블록 크기를 보고합니다. 일부는 읽기를 시도하기 위해 블록 크기가 필요합니다. t_reader0에서 파일 및 레코드의 열거를 시작합니다 - 즉, 파일 5로 스페이스 포워드하려면 의도적으로 500을 기록한 다음 실행하십시오.t_reader-t_reader출력은 실제로 훨씬 나중에 시작함에도 불구하고 F0 R0에서 시작하는 것처럼 보입니다.- 실제 블록 크기를 확인할 수 있는 운영 체제에서는 드라이버 또는 OS의 블록 크기 제한으로 인해 버퍼가 블록 데이터를 보유하기에 너무 작음을 나타내는 다음과 같은 오류가 발생합니다.
cannot allocate memory또는more data is available를 사용하여 로그인합니다. t_reader에서는 실제 데이터를 읽을 필요가 없지만 NetWorker 레이블이 있는 경우 이를 인식하고 읽을 수 있습니다.- Windows에서는 블록 헤더 정보(사용 가능한 경우)를 읽고 보고할 수도 있습니다. 또한 데이터의 처음 512 원시 바이트를 덤프 할 수 있습니다 (아래 변수 참조)
- Always - 블록 크기는 32KB 레이블 블록의 첫 번째 쌍 이후에 일관되어야 하며 scanner에서 반환된 레이블에 기록된 블록 크기와 일치해야 합니다.
유닉스
먼저 볼륨을 되감아 준비하려면 다음을 수행합니다.
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
이 예제에서는 레이블을 나타내는 처음 두 파일에 두 개의 32K 블록이 있는 정상 볼륨과 파일 18 이후에 EOD(End of Data)가 나타날 때까지 주기적으로 파일 표시로 구두점이 찍힌 96K 블록을 보여 줍니다.
윈도우
Windows의 경우 읽으려는 블록 크기도 제공해야 합니다.
t_reader \\.\tape0 131072
이것의 효과는 Windows가 제공된 블록 크기를 읽으려고 시도하고 (잠재적으로 기록된 실제 블록 크기보다 클 수 있음에도 불구하고) 불평하지 않는다는 것입니다 - 인수로 제공된 블록 크기가 실제 블록보다 작거나 해당 크기의 블록을 사용할 수 없게 만드는 OS 또는 드라이버 제한이 있는 경우 오류가 발생합니다.
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 읽은 모든 블록의 처음 512B를 덤프하려면 다음을 수행합니다.
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를 사용하여 로그인합니다. 이 유틸리티는 tar 및 dd와 같은 UNIX 유틸리티를 대체하는 Windows 전용 유틸리티이며 사용자 지정 블록 크기의 테이프에 테스트 쓰기를 수행할 수 있습니다. 함께 제공되는 파일, 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...