Skip to content


Lekcja 8: Wprowadzenie do Napędów Taśm

Instalacja Napędu Taśmowego

Przed zainstalowaniem napędu taśmowego sprawdź, które SCSI adresy są już zajęte.

marcoPolander:/home/duszyk>lsdev -Cs scsi
hdisk0 Available 03-08-00-3,0 16 Bit LVD SCSI Disk Drive
hdisk1 Available 03-08-00-4,0 16 Bit LVD SCSI Disk Drive
hdisk2 Available 03-08-00-5,0 16 Bit LVD SCSI Disk Drive
hdisk3 Available 03-08-00-8,0 16 Bit LVD SCSI Disk Drive
ses0 Available 03-08-00-15,0 SCSI Enclosure Services Device

Produkcja ostatniego polecenia mówi nam, że na maszynie zwanej marcoPolander wszystkie urządzenia SCSI są podłączone do tego samego adaptera/wtyczki/szuflady znajdującej się po adresem 03-08-00. Ich adresy to 3,4,5,8 oraz 15. Wiedząc które adresy są obecnie w użyciu upraszcza wybór odpowiedniego adresy dla nowego urządzenia. Po jego zainstalowaniu i włączeniu maszyny, wydaj następujące polecenie:

marcoPolander:/home/duszyk>lsdev -Cc tape
rmt0 Defined 03-08-00-0,0 LVD SCSI Tape Drive

Jeżeli w miejsce Avaiable widzisz Defined to wydaj polecenie mkdev -l rmt0. Powtórne wydanie polecenia lsdev -Cc tape powinno pokazać ten napęd jako Avaiable czyli nadający się do użytku. Zintegrowany przed chwilą napęd rmt0 jest w rzeczywistości jednym z ośmiu napędów logicznych stworzonych przez AIX. Te napędy to:

marcoPolander:/home/duszyk>ls /dev/rmt*
/dev/rmt0 /dev/rmt0.2 /dev/rmt0.4 /dev/rmt0.6
/dev/rmt0.1 /dev/rmt0.3 /dev/rmt0.5 /dev/rmt0.7

Czym różnią się te urządzenia? Każdy reprezentuje inny aspekt fizycznego napędu przedstawiony poniżej.


Device Name Re-wind Re-tension Density
rmt0 yes no density_set_1
rmt0.1 no no density_set_1
rmt0.2 yes yes density_set_1
rmt0.3 no yes density_set_1
rmt0.4 yes no density_set_1
rmt0.5 yes no density_set_1
rmt0.6 yes no density_set_1
rmt0.7 yes no density_set_1

Napęd /dev/rmt# (gdzie # oznacza 0, 0.1, 0.2, 0.4 oraz 0.6) przewija taśmę po jej umieszczeniu w napędzie oraz po każdym wpisaniu danych (archiwum) do taśmy. Te urządzenia nie naprężą taśmy w momencie umieszczenia je w napędzie. Gęstość zapisu tego napędu jest kontrolowana parametrem density_set_1, który reprezentuje najwyższą gęstość zapisu tego urządzenia. Urządzenia /dev/rmt#.1, rmt#.3, rmt#.5 oraz rmt#.7 nie przewijają taśmy po wpisaniu do niej danych. Ich gęstość zapisu jest kontrolowana parametrem density_set_2. Wyświetlenie parametrów napędu jest dokonywane w następujący sposób:


marcoPolander:/home/duszyk>tctl -f /dev/rmt0 status
rmt0 Available 03-08-00-0,0 LVD SCSI Tape Drive
attribute value description user_settable
block_size 1024 BLOCK size (0=variable length) True
compress yes Use data COMPRESSION True
density_set_1 129 DENSITY setting #1 True
density_set_2 128 DENSITY setting #2 True
extfm yes Use EXTENDED file marks True
mode yes Use DEVICE BUFFERS during writes True
ret no RETENSION on tape change or reset True
ret_error no RETURN error on tape change or reset True
size_in_mb 80000 Size in Megabytes False

Ten napęd, który jest adresowany jako /dev/rmt0.# używa własnych buferów w czasie zapisywania danych (mode=yes). To polepsza jego wydajność ale w niektórych sytuacjach może nie być pożądane. Przez to, że dane są przechowywane w jego własnym buferze, napęd często informuje system operacyjny o zapisaniu danych przed zakończeniem tej operacji.

W celu ustalenia optymalnej wielkości block_size danego napędu należy wpisywać do niego dane (na przykład ten sam plik) za każdym razem zmieniając jego wartość. Używaj do tego celu wielokrotność 1024 (2048, 4096, itp.), nie obawiaj się próbowania dużego numeru (20kb czy więcej). W przypadku, kiedy block_size = 0 – to oznacza zmienny rozmiar (w teorii napęd jest w stanie czytać dane nie zależnie od rozmiaru bloku użytego to ich zapisu). Koniec danych na taśmie jest oznaczany przy pomocy specjalnego kodu. Obecność tych kodów (znak końca pliku) jest jednym z czynników umożliwiających wpisywania wielu plików do jednej taśmy.

Znaki określające położenie plików na taśmie dzielą się na krótkie i poszerzone (short and extended file marks). The poszerzone umożliwiają na wpisanie danych w obszar taśmy już posiadający dane (poprzednie dane ulegają zniszczeniu). Krótkie znaki pozwalają na wpisywanie plików w systemie szeregowym (jeden po drugim), są one również używane w przypadku taśmy nie posiadającej danych.

Znajdź rozmiar bloku

Czasami, twoim zadaniem będzie odczytanie danych z nieznanej taśmy – to ci się nie uda ponieważ rozmiar bloku twojego napędu a napędu użytego do wpisanie danych na tej taśmie nie jest ten sam. Zmień rozmiar bloku swojego urządzenie – przyznaj mu wartość 0 (zero). Z taśmy odczytaj jeden blok danych wydając następujące polecenie:

dd if=/dev/rmt0 of=/tmp/file_name bs=128k count=1

Następnie, znajdź rozmiar tego pliku, wykonując na przykład jedno z następujących dwóch poleceń:

ls –l file_name

or
wc –c file_name

This size equals the size of the block used to create the tape archive. If you know what command was used to create the tape archive, change the block_size attribute of your tape device to that value and extract the data. If you do not know what command created the archive, you must determine the tape format on your own. After a single block of data was extracted from the tape, it was placed in a file named output_file. Now, execute the /usr/bin/file file_name. If the file command cannot determine the archive format, it will display the following message: “data or International Language text”. Otherwise you will be presented with the format: tar archive, BIN cpio archive, etc. Change the block size of your tape drive to that of the tape and depending on the type of archive use one of the entries shown below to list the contents of the tape.Rozmiar tego pliku reprezentuje rozmiar bloku użytego wpisując dane do taśmy. Teraz, znając już rozmiar bloku użytego do wpisania danych to taśmy wiesz jak masz ustawić swój napęd. Jeżeli znasz jakie polecenie zostało użyte do zapisania tej taśmy to nic nie stoi na przeszkodzie wydobycia danych z taśmy. W przeciwnym przypadku, wydaj polecenie /usr/bin/file file_name. Polecenie file nie będąc w stanie określić rodzaju pliku produkuje “data or International Language text“. Będąc w stanie określić rodzaj pliku, wyświetli ono odpowiednią do jego rodzaju informację: tar, BIN cpio archive, itp.

Rodzaj Archiwum     Polecenie
tar                    dd if=/dev/rmt# bs=block_size | tar –tvf-
cpio (ascii)           dd if=/dev/rmt# bs=block_size | cpio –itcv
cpio (binary)          dd if=/dev/rmt# bs=block_size | cpio –itv
backbyname             dd if=/dev/rmt# bs=block_size | restore –Tvqf
backbyinode            dd if=/dev/rmt# block_size | restore –tvqf
rdump                  dd if=/dev/rmt# block_size | restore –tvqf

Komunikat “data or Internationa Language text” nie oznacza braku możliwości odczytania danych z nieznanej taśmy. W dalszym ciągu masz możliwości odczytania jej danych. Sprawdź czy taśma zawiera archiwum polecenia mksysb czy sysback Zmień wymiar bloku na 512 bytów:

chdev –l rmt# -a block_size=512

Następnie, przesuń taśmę do końca drugiego archiwum

tctl –f /dev/rmt# fsf 2

Jeżeli coś tam jest to może być odczytane:

dd if=/dev/rmt# bs=512 count=1

Następujące orędzie wskazuje, że dane są rezultatem polecenia mksysb: DUMMY TAPE TOC. To orędzie wskazuje na sysback DUMMY SYSBACK TOC. W przeciwnym wypadku, czy jeżeli polecenie tctl odmówi posłuszeństwa wiemy że taśma nie została zapisana przy użyciu jednego z tych dwóch poleceń. Jeżeli zaś taśma jest produkcją mksysb to w celu odczytania jej danych (backup rootvg) należy zmienić blok na 512 (bytów), przesunąć taśmę poza trzecie archiwum i używając polecenie tar można ściągnąć dane z taśmy

tctl –f /dev/rmt# fsf 3

Zawartość taśmy jest określana następująco:

tar –tvf /dev/rmt#

Jeżeli jesteś zainteresowany zawartością taśmy, to przesuń ją do początku:

tctl -f /dev/rmt# rewind

po czym, przesuń ją ponownie do trzeciej pozycji i skopiuj jej dane.

Nie poddawaj się jeżeli file nie jest w stanie określić typu obecnego na taśmie archiwum (pliku) i wyświetla za to orędzie “commands text”, nie wszytko jest jeszcze stracone. Wdaje jedno z tych dwóch poleceń cat czy more do interrogacji bloku danych odczytanych powyżej używając polecenie:

dd if=/dev/rmt0 of=/tmp/file_name bs=128k count=1

If you see that the contents are readable, you should try to determine if the extracted data follows a pattern. At this moment, you know that you can get the data from the tape but maybe the data is an extract from a database, and it would be good if you could extract it recreating the records. Use command /usr/bin/split to split the file_name into smaller files that are easier to study. If you can see a pattern, count the number of characters that it contains. Divide the size of the file_name by the number of characters (bytes) found in this pattern. Hopefully the result is a multiple of the block size used to create this archive. Then try to recover a single block of data with the following command:Jeżeli jesteś w stanie odczytać zawartość tego bloku, zwróć uwagę czy te dane tworzą jakiś wzór czy szablon. W tym momencie, wiesz że jesteś w stanie odczytać dane z taśmy, wzór sugeruje dane bazy danych – może uda ci się je skopiować jej akta (database records). Używając polecenie /usr/bin/split podziel plik file_name na mniejszego rozmiaru pliku – łatwiej je studiować. Jeżeli zauważyłeś, że dane w file_name tworzą jakiś wzór (pattern), policz jego charaktery (bytes). Podziel rozmiar file_name przez rozmiar wzoru. Miejmy nadzieję, że wynik to wielokrotność bloku tej taśmy. Spróbuj odczytać pojedynczą jednostkę danych używając następującego polecenia:

dd if=/dev/rmt# cbs=pattern_length ibs=block_length count=1 of=output_file conv=unblock

W przypadku sukcesu, powtórz ostatnie polecenie używając większej wartości count. Ponownie, przyjrzyj się odzyskanej danej. Jeżeli nic jej nie brakuje, ponownie wydaj to polecenie ale tym razem nie zmieniaj wartości count

Tape drive performance

Napęd taśmowy jest najbardziej wydajny jeżeli prędkość dostarczanej jemu danych równy jest (lub jest bardzo zbliżony) do prędkości z jaką przenosi on tę daną do taśmy. Aplikacje przed przesłaniem danych do napędu, typowo grupują dane w bloki specyficznego rozmiaru. Jego rozmiar jest znany również jako “buffer size”, “blocking factor”, itp. To nie jest ten sam blok, który napęd używa do manipulowania taśmą. Aplikacja podająca napędowi dane w małych blokach obniża jego wydajność – wydajność napędu jest funkcją rozmiaru wysyłanej do niego danych oraz rozmiaru z jakim zapisuje (czy czyta) on tę daną do taśmy. Jeżeli te dwie wartości są małe czy poważnie nie dopasowane, bakup (backup) może zabrać cały dzień czy nawet więcej zamiast kilku godzin czy minut.

Techniczne detale napędu

[lang-en]This bit of information is always important while trying to resolve problems related to hardware failure of a tape drive.Ta informacja jest szczególnie ważna w przypadku awarii napędu.

marcoPolander:/home/duszyk>lscfg -vl rmt0
rmt0 U787B.001.DNWC527-P1-T14-L0-L0 LVD SCSI Tape Drive (80000 MB)
Manufacturer................IBMY
Machine Type and Model......VXA-2
Device Specific.(Z1)........210F
Serial Number...............25205871
Load ID.....................A1700D58
Part Number.................96P1771
FRU Number..................96P1772
EC Level....................H81463
Device Specific.(Z0)........0180020283000130
Device Specific.(Z3)........L1

[lnag_en]Working with tape drivePracując z napędem

W celu poznania parametrów napędu:

lsattr –El rmt#
or
tctl –f /dev/rmt# status

Zmiana rozmiaru bloku napędu:[/strong]

chdev –l rmt# -a block_size=new_value

Resetowane napędu:

tctl –f /dev/rmt# reset

lub

diag –c –d rmt#

Do określenia liczby plików (archiwów) na taśmie

tcopy /dev/rmt#
tcopy: File 1; End of file after: ### Records, ###### Bytes.
tcopy: File 2, End of file after: ### Records, ###### Bytes.
tcopy: File 3, End of file after: ### Records, ###### Bytes
tcopy: The end of the tape is reached.
tcopy: The total tape length is ###### bytes.

Ta taśma posiada trzy archiwa (każde może zawierać wiele plików). Przesunięcie taśmy do drugiego archiwum należy wykonać używając automatycznie nie przesuwającego się napędu logicznego:

tctl –f /dev/rmt#.1 fsf 1

Przesuń taśme do jej początku:

tctl –f /dev/rmt#.1 rewind

Usunięcie taśmy z napędu:

tctl –f /dev/rmt# offline

Kopiowanie zawartości pomiędzy napędami:

tcopy /dev/rmt0 /dev/rmt3

Archiwa (backups)

There are two basic categories of archives (backups): absolute and relative. Absolute backup can only be restored to the same directory structure it was made from originally. The contents of an absolute backup are listed with their path names beginning with the “/”. Relative backup will be restored to the directory that is current when the restore command was executed. The contents of a relative backup are listed with their path names beginning with the “.”. To create an absolute backup the path indicating file location must start with the “/” character. To create a relative backup it must start with the “.” character. The “.” is not required – any directive that does not start with “/” will create an absolute backup.Dwie główne kategorie archiwów na taśmie to “absolutne” – zaczynające się od “/” (root) i “względne” – zaczynające się od pozycji w hierarchii folder/katalog w momencie interakcji z napędem. Dane odczytane z absolutnego archiwum wylądują w dokładnie tym samym położeniu (folder/katalog). Dane z archiwum względnego będą zapisane w pozycji uzależnionej od położenia (folder/katalog) w momencie wydania polecenia. Stworzenie absolutnego archiwa wymaga rozpoczęcia specyfikacji lokacji plików charakterem “/” (root). Stworzenie relatywnego archiwum wymaga użycie “.” To nie jest w 100% prawdziwe gdyż każda specyfikacja nie zaczynająca się od “/” stworzy relatywne archiwum.


0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.



Some HTML is OK

or, reply to this post via trackback.