Bacula.pl

- rozwiązanie kopii zapasowych dla wymagających
Kategorie: WSZYSTKIE Newsy Artykuły Blog

Bacula a rozmiar bloku napędu taśmowego

21 sierpień 2009, autor: Marcin Haba (gani)

news

Rozpatrując napędy taśmowe pod względem sposobu zapisu danych w blokach na taśmie, można podzielić je na napędy zapisujące dane ze stałym lub zmiennym rozmiarem bloku. Artykuł opisuje jak tego typu urządzenia mogą współpracować z programami Baculi.

Rozpatrując napędy taśmowe pod względem sposobu zapisu danych w blokach na taśmie, można podzielić je na:

  • napędy zapisujące dane ze stałym rozmiarem bloku. Takie urządzenia domyślnie zapisują dane na taśmie w blokach w stałym i niezmiennym rozmiarze.
  • napędy zapisujące dane ze zmiennym rozmiarem bloku. Oznacza to, że napędy te dopuszczają oprogramowanie korzystające z urządzenia do ustawienia rozmiaru bloku według potrzeb danego programu.

Przed użyciem napędu taśmowego wraz z Baculą trzeba mieć pewność, że posiadany napęd charakteryzuje się zapisem ze zmiennym rozmiarem bloku. Domyślnie plik konfiguracyjny daemona magazynowania (Storage Daemon) obsługuje urządzenia ze zmiennym rozmiarem bloku. Dzieje się tak z dwóch powodów:

  1. Bacula używa zapisu z rozmiarem bloku 64512 bajtów i aby taki zapis był możliwy, Bacula potrzebuje dostępu do zarządzania rozmiarem bloku.
  2. Ostatni blok danych zapisanych podczas backupu może mieć różny rozmiar (mniejszy niż 64512 bajtów).

JAK SPRAWDZIĆ ROZMIAR BLOKU?

Do sprawdzenia aktualnie ustawionego rozmiaru bloku dla urządzenia można posłużyć się np. programem mt lub tapeinfo. Pierwszy występuje w dwóch odmianach GNU oraz st (odpowiednio mt-gnu i mt-st), drugi natomiast wchodzi w skład programów mtx służących do zarządzania zmieniarką SCSI. Obydwa programy dostępne są na platformach uniksowych i oprócz rozmiaru bloku urządzenia, dostarczają wiele innych użytecznych informacji o urządzeniu. Rozmiar bloku można odczytać poprzez komendy:

mt -f  {plik urządzenia} status

lub

tapeinfo -f  {plik urządzenia}

Jeśli plik urządzenia to /dev/nst0, wywołania programów wraz z wydrukami mogą wyglądać następująco:

# mt -f /dev/nst0 status
SCSI 2 tape drive:
File number=0, block number=0, partition=0.
Tape block size 512 bytes. Density code 0x32 (AIT-3 or SLR7).
Soft error count since last status=0
General status bits on (41010000):
 BOT ONLINE IM_REP_EN

Powyższy wydruk wskazuje na urządzenie z ustawionym rozmiarem 512 bajtów.

# tapeinfo -f /dev/nst0
Product Type: Tape Drive
Vendor ID: 'TANDBERG'
Product ID: 'SLR7            '
Revision: '0550'
Attached Changer API: No
SerialNumber: 'SN007049271'
MinBlock: 1
MaxBlock: 262144
SCSI ID: 4
SCSI LUN: 0
Ready: yes
BufferedMode: yes
Medium Type: 0x63
Density Code: 0x32
BlockSize: 512
DataCompEnabled: yes
DataCompCapable: yes
DataDeCompEnabled: yes
CompType: 0x3
DeCompType: 0x3
BOP: yes
Block Position: 0
Partition 0 Remaining Kbytes: -1
Partition 0 Size in Kbytes: -1
Partition 1 Remaining Kbytes: -1
Partition 1 Size in Kbytes: -1
ActivePartition: 0
EarlyWarningSize: 0
NumPartitions: 0
MaxPartitions: 2

Podobnie jak w poprzednim wydruku, ten wydruk również wskazuje urządzenie z ustawionym trybem zapisu ze stałym rozmiarem bloku o rozmiarze 512 bajtów.

Trzeba zaznaczyć, że jeśli już używa się napędu taśm magnetycznych wraz z Baculą, przed wywołaniem w/w komend, potrzeba będzie odmontować urządzenie od daemona magazynowania (Storage Daemon) lub wyłączyć daemona magazynowania. W przeciwnym wypadku, jedynym otrzymanym komunikatem, będzie komunikat informujący o tym, że urządzenie jest zajęte.

URZĄDZENIA ZE STAŁYM ROZMIAREM BLOKU

Jeśli już jesteśmy posiadaczami napędu taśmowego o stałym rozmiarze bloku, do współpracy urządzenia z Baculą potrzeba będzie dodatkowego zabiegu. Najpierw można spróbować przestawić urządzenie w tryb o zmiennym rozmiarze bloku, poprzez poniższe wywołanie programu mt. Trzeba tutaj zaznaczyć, że opcja setblk dostępna jest w programie mt-st, a nie jest dostępna w programie mt-gnu.

mt -f /dev/nst0 setblk 0

(zakładając, że plik urządzenia napędu taśmowego to /dev/nst0)

Po tej operacji, wydruk statusu urządzenia powinien wskazywać block size o wartości 0.

# mt -f /dev/nst0 status
SCSI 2 tape drive:
File number=0, block number=0, partition=0.
Tape block size 0 bytes. Density code 0x32 (AIT-3 or SLR7).
Soft error count since last status=0
General status bits on (41010000):
 BOT ONLINE IM_REP_EN

Rozmiar bloku 0 oznacza, że urządzenie pracuje w trybie zapisu ze zmiennym rozmiarem bloku. Należy mieć na uwadze fakt, że takie przestawienie trybu pracy napędu taśmowego nie jest trwałe, tzn. zostaje zresetowane po restarcie komputera, do którego podłączony jest napęd. Gdy posiadane fizyczne urządzenie backupowe wyposażone jest w zmieniarkę taśm, to jednym z rozwiązań na zachowanie na stałe zapisu ze zmiennym rozmiarem bloku jest dodanie do skryptu mtx-changer (skrypt bash do zarządzania magazynem taśm, z którego korzysta daemon magazynowania) wywołania komendy mt ustawiającej stały blocksize napędu taśmowego. Może wyglądać to mniej więcej tak (fragment kodu odpowiedzialny za załadowanie taśmy do napędu taśmowego):

load)
      debug "Doing mtx -f $ctl load $slot $drive"
      ${MTX} -f $ctl load $slot $drive
      rtn=$?
      if test ${load_sleep} -ne 0 ; then
    sleep ${load_sleep}
      fi
      wait_for_drive $device
      mt -f $device setblk 0
      exit $rtn
      ;;

Dla przypomnienia dodam, że powyższa zmiana zadziała tylko, gdy używamy programu mt w wersji st.

Drugim rozwiązaniem dla urządzeń o stałym rozmiarze bloku używanych wraz z Baculą jest ustawienie dyrektyw Minimum Block Size oraz Maximum Block Size dla zasobu Device urządzenia w pliku konfiguracyjnym daemona magazynowania.

Minimum Block Size = nnn
Maximum Block Size = nnn

Istnieją trzy kryteria ustawiania w/w dyrektyw.

  1. Dyrektywy występują w parze, tzn. aby użyć jednej z nich, potrzeba zdefiniować również drugą.
  2. Rozmiar bloku określony w jednej z tych dyrektyw musi być taki sam jak rozmiar w drugiej. Innymi słowy, rozmiar bloku definiowany przez dyrektywy powinien być taki sam.
  3. Ustawiany rozmiar bloku powinien być równy domyślnemu rozmiarowi oferowanemu przez napęd taśmowy lub być jego wielokrotnością.


Przykładowe użycie opisywanych dyrektyw:

Minimum Block Size = 64512
Maximum Block Size = 64512

PODSUMOWANIE

Jeżeli nie ma specjalnego powodu do tego, aby używać ustawień do zapisu ze stałym rozmiarem bloku, zaleca się pracę Baculi z zapisem ze zmiennym rozmiarem bloku. Dodatkowo, w wypadku konieczności korzystania z urządzenia ze stałym block size, potrzeba dostosować plik konfiguracyjny daemona magazynowania do obsłużenia takiego zestawienia sprzętowego. W przeciwnym wypadku skutkotwać to może błędami zapisu, co w konsekwencji poprowadzi oznaczenia przez Baculę taśmy statusem Error.


Ta strona używa plików cookies (niezbędnych do prawidłowego działania oraz analitycznych). Odmów Wybierz ciasteczka Zezwól na wszystkie (więcej informacji)