Ansteuerung der Timberwolf per Software
Funktionstest des Roboterarms und der Bandlaufwerke unter FreeBSD
05.07.2010
Nun geht ans Eingemachte: Die Ansteuerung des Monsters. Der Timberwolf verwendet High-Voltage-Differential (HVD) SCSI - eine Abart des "normalen" SCSI das elektrisch inkompatibel ist. Vorteil dieses Systems - extrem lange Kabel (bis 25 m). Nachteil, man benötigt einen speziellen SCSI-Controller.
Also bei Ebay einen Symbios Logic SYM22802 2Kanal HVD- Controller für günstige (12 Euro) Geld ergattert und schon kanns losgehen. Der Controller ist in einem alten PIII 866 verbaut der unter FreeBSD läuft. Nach dem Bootup erst mal schauen wass sich alles so am SCSI-Bus tummelt mit :
nanako# camcontrol devlist <QUANTUM DLT7000 2565> at scbus0 target 0 lun 0 (sa0,pass0) <QUANTUM DLT7000 2565> at scbus0 target 1 lun 0 (sa1,pass1) <QUANTUM DLT7000 2565> at scbus0 target 2 lun 0 (sa2,pass2) <QUANTUM DLT7000 2565> at scbus0 target 3 lun 0 (sa3,pass3) <STK 9740 1952> at scbus0 target 6 lun 0 (ch0,pass4)
Hippie - alle 4 Laufwerke werden erkannt und der Robby ist auch da. camcontrol kennt neben devlist auch die Optionen reset rescan.
Der Robby selbst wird mit einem Programm Namens mtx angsprochen, das speziell für diverse Autochanger, Tapelibrarys etc geschrieben wurde. Um z.b mal nachzuschauen was sich gerade so in der 9740 befindet verwendet man:
nanako# mtx -f /dev/pass4 nobarcode status
Das liefert dann den Status des gesamten Band Archivs
Wen man jetzt nun ein Band aus Slot 1 nach Laufwerk 0 laden möchte so geht das mit dem Kommando
nanako# mtx -f /dev/pass4 load 1 0 Loading media from Storage Element 1 into drive 0...done
und eine Abfrage des Status ergibt :
Storage Changer /dev/pass4:4 Drives, 508 Slots ( 14 Import/Export )
Data Transfer Element 0:Full (Storage Element 1 Loaded)
Data Transfer Element 1:Empty
Data Transfer Element 2:Empty
Data Transfer Element 3:Empty
Storage Element 1:Empty
Storage Element 2:Full
Storage Element 3:Empty
..........Das Ding aus dem Laufwerk bekommen ist da schon schwieriger. Zuerst muss man das Laufwerk offline geschaltet werden, bevor der Greifarm das Ding wieder in seinen Slot packen kann.
nanako# mt -f /dev/sa0 offline nanako# mtx -f /dev/pass4 unload 1 0 Unloading drive 0 into Storage Element 1...done
Interesanterweise sprechen wir für das offline-Kommand das Bandlaufwerk mit /dev/sa0 an. Meine Versuche /dev/pass0 zu verwenden werden mit einer Fehlermeldung quittiert.
21.07.2010
Jetzt wirds ernst. Wir testen die Bandlaufwerke. Dazu verwenden wir das bei bacula mitgelieferte Programm btape. btape benötigt eine Konfigurationdatei um das Bandlaufwerk anzusprechen.
Ich verwende nachfolgender dlt.conf die unter /usr/local/etc/ liegt. Die dlt.conf ist eigentlich eine Device-Konfiguration wie sie in der Bacula Storage Daemon verwendet. Sie muss später in /usr/local/etc/bacula-sd.conf integriert werden.
Nachdem man btape gestartet hat erscheint ein Prompt (*) und man gibt test ein.
nanako# btape -c dlt.conf /dev/sa0 Tape block granularity is 1024 bytes. btape: butil.c:285 Using device: "/dev/sa0" for writing. btape: btape.c:476 open device "DLT" (/dev/sa0): OK * * * *test
Das ganze ist hier nachzulesen: http://www.freebsddiary.org/digital-tl891.php
So konfiguriert meldet btape folgende erfolgreiche btape Meldung.
So jetzt das ganze auch für das zweite Laufwerk.... aber aber ich bekomme folgende Meldung:
nanako# mtx -f /dev/pass4 load 495 1 Loading media from Storage Element 495 into drive 1...mtx: Request Sense: Long Report=yes mtx: Request Sense: Valid Residual=no mtx: Request Sense: Error Code=70 (Current) mtx: Request Sense: Sense Key=Hardware Error mtx: Request Sense: FileMark=no mtx: Request Sense: EOM=no mtx: Request Sense: ILI=no mtx: Request Sense: Additional Sense Code = 40 mtx: Request Sense: Additional Sense Qualifier = 02 mtx: Request Sense: BPV=no mtx: Request Sense: Error in CDB=no mtx: Request Sense: SKSV=no MOVE MEDIUM from Element Address 1010 to 1031 Failed
Das Band lässt sich nicht einlegen ! Ich öffne das Bandarchiv mechanisch mit einem Imbusschlüssel um die Laufwerke zu überprüfen. Tasächlich lässt sich in die Laufwerke /dev/sa1 und /dev/sa2 auch per Hand kein Band einlegen. Es scheint eine Art mechanische Sperre aktiv zu sein.Die Laufwerke haben auf der rechten Seite eine Art mechanischer Schieber. Wenn man den zweimal reindrückt, deaktiviert sich die Sperre und man kann jetz sogar per Hand wieder ein Band einlegen.
Und nun weiter im Text. Beim Laufwerk /dev/sa2 haben wir dann den ersten Fehler: DLT-2 Test Ich starte den Test ein zweites Mal und diesmal klappts ! Vieleicht Staub oder Dreck im Laufwerk oder dem Tape. DLT-2 Test 2.Versuch
Nun die Bänder und die Laufwerke sind getestet - nun können wir mit der Konfiguration von Bacula beginnen.
23.07.2010
Test des Roboterarms unter Bacula mit btape
btape kann überprüfen ob das mtx Kommando richtig konfiguriert ist, indem es einen Autochanger Test durchführt. Der bringt mit nachfolgender dlt2.conf folgende Fehlermeldung :
nanako# btape -c dlt2.conf /dev/sa0 Tape block granularity is 1024 bytes. btape: butil.c:285 Using device: "/dev/sa0" for writing. 23-Jul 14:48 btape JobId 0: 3301 Issuing autochanger "loaded? drive 0" command. 23-Jul 14:48 btape JobId 0: 3302 Autochanger "loaded? drive 0", result is Slot 1. btape: btape.c:476 open device "DLT-0" (/dev/sa0): OK *auto Ah, I see you have an autochanger configured. To test the autochanger you must have a blank tape that I can write on in Slot 1. Do you wish to continue with the Autochanger test? (y/n): y === Autochanger test === 3301 Issuing autochanger "loaded" command. Slot 1 loaded. I am going to unload it. 3302 Issuing autochanger "unload 1 0" command. unload status=Bad 268435457 3992 Bad autochanger command: /usr/local/share/bacula/mtx-changer /dev/pass4 unload 1 /dev/sa0 0 3992 result="Unloading drive 0 into Storage Element 1...Drive needs offline before move ": ERR=Child exited with code 1 3303 Issuing autochanger "load 1 0" command. 3993 Bad autochanger command: /usr/local/share/bacula/mtx-changer /dev/pass4 load 1 /dev/sa0 0 3993 result="Drive 0 Full (Storage Element 1 loaded) ": ERR=Child exited with code 1 You must correct this error or the Autochanger will not work. *quit
Die Fehlermeldung besagt das vor dem Auswurf des Bandes das Laufwerk offline sein muss. Dafür gibt es in der /usr/local/share/bacula/mtx-changer.conf eine Variable die auf den Wert 1 zu stellen ist.
# Set to 1 if you want to do offline before unload offline=1
und nun klappts auch mit dem Autochanger:
nanako# btape -c dlt2.conf /dev/sa0 Tape block granularity is 1024 bytes. btape: butil.c:285 Using device: "/dev/sa0" for writing. 23-Jul 17:10 btape JobId 0: 3301 Issuing autochanger "loaded? drive 0" command. 23-Jul 17:10 btape JobId 0: 3302 Autochanger "loaded? drive 0", result is Slot 1. btape: btape.c:476 open device "DLT-0" (/dev/sa0): OK *auto Ah, I see you have an autochanger configured. To test the autochanger you must have a blank tape that I can write on in Slot 1. Do you wish to continue with the Autochanger test? (y/n): y === Autochanger test === 3301 Issuing autochanger "loaded" command. Slot 1 loaded. I am going to unload it. 3302 Issuing autochanger "unload 1 0" command. unload status=OK 0 3303 Issuing autochanger "load 1 0" command. 3303 Autochanger "load 1 0" status is OK. btape: btape.c:476 open device "DLT-0" (/dev/sa0): OK btape: btape.c:1562 Rewound "DLT-0" (/dev/sa0) btape: btape.c:1569 Wrote EOF to "DLT-0" (/dev/sa0) The test autochanger worked!! *