Korzystanie z narzędzia t_reader
Summary: W tym artykule opisano korzystanie z narzędzi t_reader i t_writer w różnych systemach operacyjnych oraz informacje o tym, skąd można je pobrać.
Symptoms
- Musi określać rzeczywiste rozmiary bloków na taśmie
- Weryfikacja struktury etykiet NetWorker
- Weryfikacja integralności fizycznej nośnika taśmowego.
- Należy potwierdzić metadane nagłówka bloku NetWorker
- Musi zrzucić surowe pierwsze 512 bajtów każdego bloku
Polecenie t_reader Narzędzie służy do diagnozowania i rozwiązywania problemów związanych z napędami taśmowymi. Jest to również obsługa NetWorker, która zapewnia kilka funkcji taśm, co czyni ją przydatnym narzędziem do rozwiązywania problemów. Użyj go, aby:
- Przetestuj rzeczywisty rozmiar bloków zapisanych na taśmie
- Określ, czy istnieją różnice w rozmiarach bloków zapisanych na taśmie
- Testowy odczyt nośników fizycznych pod kątem błędów we/wy lub uszkodzeń fizycznych
- Określ, czy elementy znajdujące się poniżej warstwy aplikacji (sterownik, system operacyjny, transport, samo urządzenie) mogą odczytywać bloki o określonym rozmiarze
- Uwidocznienie informacji niskiego poziomu w systemie Windows nie jest możliwe przy użyciu żadnego innego aktualnego narzędzia
Cause
Problemy z nośnikami taśmowymi są często spowodowane czynnikami zewnętrznymi, takimi jak:
- Problemy z czynnikiem blokującym system operacyjny/HBA/sterownik
- Niewykryte błędy sprzętu we/wy lub transportu podczas zapisu
- Degradacja nośnika spowodowana wiekiem, użytkowaniem, higieną napędu lub niewłaściwym przechowywaniem
Resolution
Pobierz t_reader stąd: Narzędzia NetWorker
Wyodrębnij pakiet i użyj t_reader dla architektury Twojego hosta.
t_readernie przewinie automatycznie woluminu w systemie UNIX (oferuje w systemie Windows) - pozwala to na pozycjonowanie i rozpoczynanie od dowolnego miejsca na taśmie.- W większości systemów operacyjnych
t_readerzgłasza rozmiary bloków, które znajduje od tego punktu; Niektóre wymagają rozmiaru bloku do próby odczytania. t_readerrozpoczyna wyliczanie pliku i rekordu na 0 - co oznacza, że jeśli miałbyś przesunąć się do przodu do pliku 5, nagraj 500 celowo, a następnie uruchomt_reader-t_readerwydaje się, że wyjścia zaczynają się od F0 R0, mimo że w rzeczywistości zaczynają się od znacznie późniejszego adresu.- W systemach operacyjnych, które mogą określić rzeczywisty rozmiar bloku, ograniczenie rozmiaru bloku w sterowniku lub systemie operacyjnym powoduje błąd wskazujący, że bufor jest zbyt mały, aby pomieścić dane bloku, taki jak
cannot allocate memorylubmore data is available. t_readernie musi odczytywać rzeczywistych danych, ale potrafi rozpoznawać i odczytywać etykiety NetWorker, jeśli są obecne- W systemie Windows może również odczytywać i raportować informacje o nagłówku bloku, jeśli są dostępne; Może również zrzucić pierwsze 512 surowych bajtów danych (patrz zmienne poniżej)
- Zawsze — rozmiary bloków muszą być spójne po pierwszej parze bloków etykiet 32 KB i muszą być zgodne z rozmiarem bloku zapisanym na etykiecie zwróconym przez skaner
UNIX
Aby przygotować wolumin, przewijając go najpierw:
mt -f /dev/nst0 rewind
Biegać t_reader, podaj uchwyt do plików urządzenia z systemem operacyjnym napędu z załadowaną kasetą z taśmami, na przykład:
./t_reader_linux /dev/nst0
Dane wyjściowe standardowego woluminu NetWorker po przewinięciu wyglądają następująco:
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
W tym przykładzie pokazano prawidłowy wolumin z dwoma blokami 32 KB w pierwszych dwóch plikach, wskazującymi etykietę, a następnie blokami 96 KB przerywanymi okresowo znacznikami plików, aż do końca danych (EOD) napotkanego po pliku 18.
WINDOWS
W przypadku systemu Windows należy również podać rozmiar bloku, który ma być odczytywany:
t_reader \\.\tape0 131072
Efekt tego jest taki, że system Windows próbuje odczytać dowolny rozmiar bloku, który jest mu podany, i nie narzeka (pomimo tego, że jest potencjalnie większy niż rzeczywisty rozmiar zapisanego bloku) - chociaż będzie błąd, jeśli rozmiar bloku podany jako argument jest mniejszy niż rzeczywisty blok, lub istnieje ograniczenie systemu operacyjnego lub sterownika, które sprawia, że blok o tym rozmiarze jest bezużyteczny.
Ponieważ system Windows nie może automatycznie określić i zgłosić rozmiaru bloku, należy go podać jako drugi argument. Jeśli rozmiar bloku jest zbyt duży, błędnie zgłasza, ponieważ po prostu odczytuje wiele bloków i przedstawia je jako rozmiar dostarczony przez argument. Jeśli podany rozmiar bloku, np. 131072, jest mniejszy niż rzeczywisty rozmiar bloku, na przykład 262144, pojawi się błąd:
>>>>>File Mark Encountered. Total Records Estimated In File 1 Are 1 Read Record does not align on Assigned Buffer
W związku z tym, aby poprawnie określić nieznany rozmiar bloku, zacznij od 32768 i podwajaj go, aż narzędzie zakończy się pomyślnie. Na podstawie etykiety można jednak określić oczekiwany rozmiar bloku.
Windows ma również dwie zmienne, które można ustawić w celu głębszego debugowania:
set EXPLODE_LEVEL=1
Powoduje t_reader Aby zgłosić nagłówek bloku dla znalezionych bloków 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
Aby spowodować, że t_reader aby zrzucić pierwsze 512 B każdego bloku przeczytaj:
set DUMP_BUFFER=1
Oczekuj takich wyników, jak:
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 ...
Może to pozwolić na głębsze debugowanie lub sprawdzenie, że woluminy inne niż NetWorker, są uszkodzone lub zaszyfrowane, ale oczywiście dotyczy rzadkich zastosowań.
Additional Information
t_reader jest również dostarczany w pakiecie z narzędziem towarzyszącym, t_writer.exe. Jest to narzędzie tylko dla systemu Windows, które zastępuje narzędzia systemu UNIX, takie jak tar i dd, i umożliwia wykonywanie testowych zapisów na taśmach z niestandardowymi rozmiarami bloków. Wymaga pliku towarzyszącego, seeding.image lub dowolnego pliku binarnego o tej samej nazwie.
Aby użyć narzędzia, uruchom je z pierwszym argumentem urządzenia załadowanego nośnikiem i żądanym rozmiarem bloku w bajtach jako drugim, na przykład:
win_t_writer.exe \\.\Tape2147483639 131072
Narzędzie działa, dopóki użytkownik nie przerwie procesu. Może być uruchamiana sukcesywnie na tym samym woluminie z różnymi rozmiarami bloków w celu symulacji wariantów rozmiarów bloków lub wielokrotnie aż do niepowodzenia, jeśli podejrzewane są losowe błędy we/wy lub resetowanie SCSI. Może być również używany do zademonstrowania, czy warunek obcina rozmiary bloków poniżej warstwy aplikacji.
Jako przykład danych wyjściowych:
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...