Bandlaufwerk "HP ULTRIUM 5-SCSI", Probleme mit SCSI LOCATE(16)

dl1bff

Member
Feb 3, 2016
4
0
21
Hallo, guten Tag!

Ich bin ganz großer Fan von PBS und möchte nun mein externes
Standalone Bandlaufwerk "HP ULTRIUM 5-SCSI" (HP-Typ: EH958B)
mit PBS zum Laufen bringen.

Das Laufwerk wird erkannt und das Schreiben von Backups
funktioniert auch problemlos. Beim Restore tritt allerdings
ein Fehler auf, den ich mir noch nicht so richtig erklären
kann.

Testszenario: ich habe ein beschriebenes Band mit
ca. 100 GByte VM-Images. Nun möchte ich ein einzelnes
VM-Image vom Band holen. Dazu lösche ich ein VM-Image von der
lokalen Festplatte und versuche dann einen Restore vom Band.
Während des Restores wird versucht, das passende File auf
dem Band anzufahren, z.B. File Nummer 178. Intern wird
dann quasi der Befehl "pmt asf 178" an das Laufwerk geschickt.
Leider ist bei meinem Laufwerk immer das Resultat, dass
ein Filemark vorher positioniert wird, also in diesem Fall 177.
So sieht das dann im Restore-Log aus:

Code:
2021-06-10T21:53:36+02:00: found media label MD0001L5 (d5cfcd87-8576-4f4d-baa9-6feefaa60bda)
2021-06-10T21:53:36+02:00: was at file 2, moving to 178
2021-06-10T21:55:12+02:00: now at file 177
2021-06-10T21:55:12+02:00: TASK ERROR: could not restore snapshots to tmpdir: unexpected file type: [109, 49, 99, 109, 215, 2, 131, 191]

An Position 177 ist natürlich ein falscher File-Typ, das ganze bricht also ab.

Das scheint wirklich ein Problem mit dem SCSI-Befehl LOCATE(16) zu sein.
Ich habe das auch mit anderer Software getestet. Das Laufwerk
positioniert immer ein File vorher.

Mache ich da irgendwas falsch? Hat jemand auch so ein Laufwerk und kann
den Bug nachvollziehen?

Die Firmwareversion des Laufwerks ist jedenfalls die neueste (Z6ED), und
ich wusste mir jetzt nicht anders zu helfen, als einen Patch für PBS zu basteln.
Hier wird einfach nach dem LOCATE-Befehl nochmal geguckt, ob ich genau ein
File zurück liege und dann bewege ich das Band einfach ein File nach vorne:

Code:
diff --git a/src/api2/tape/restore.rs b/src/api2/tape/restore.rs
index 14e20ee4..d0640237 100644
--- a/src/api2/tape/restore.rs
+++ b/src/api2/tape/restore.rs
@@ -727,6 +727,12 @@ fn restore_snapshots_to_tmpdir(
             drive.move_to_file(*file_num)?;
             let current_file_number = drive.current_file_number()?;
             task_log!(worker, "now at file {}", current_file_number);
+
+            if current_file_number == (*file_num - 1) {
+                drive.move_to_file(*file_num + 1)?;
+                let current_file_number = drive.current_file_number()?;
+                task_log!(worker, "now at file {}", current_file_number);
+            }
         }
         let mut reader = drive.read_next_file()?;

@@ -806,6 +812,12 @@ fn restore_file_chunk_map(
             drive.move_to_file(*nr)?;
             let current_file_number = drive.current_file_number()?;
             task_log!(worker, "now at file {}", current_file_number);
+
+            if current_file_number == (*nr - 1) {
+                drive.move_to_file(*nr + 1)?;
+                let current_file_number = drive.current_file_number()?;
+                task_log!(worker, "now at file {}", current_file_number);
+            }
         }
         let mut reader = drive.read_next_file()?;
         let header: MediaContentHeader = unsafe { reader.read_le_value()? };

Das Ergebnis sieht dann so aus, es funktioniert prima:

Code:
2021-06-19T15:04:07+02:00: Phase 1: temporarily restore snapshots to temp dir
2021-06-19T15:04:08+02:00: found media label MD0001L5 (5b625b1c-a3ed-41ce-9651-2bb985471170)
2021-06-19T15:04:08+02:00: was at file 2, moving to 86
2021-06-19T15:05:29+02:00: now at file 85
2021-06-19T15:05:29+02:00: now at file 86
2021-06-19T15:05:29+02:00: File 86: snapshot archive local-data:vm/101/2021-04-01T22:30:02Z

Gibt es solche Probleme mit File Marks oder habe ich einfach nur ein kaputtes Gerät?

Bis denn,
Michael
 
Ah, ich hab gerade gesehen, dass jemand im englisch-sprachigen Forum am Freitag etwas ähnliches gepostet hat.
Scheint wohl am Drive-Typ zu liegen.

Bis denn,
Michael
 
ja, scheint so als würden hp laufwerke beim locate kommando genau um eins versetzt sein... ich schick heute später noch einen patch der das erkennt und ausgleicht
 
Hallo Dominik!
Danke für die beiden Patches. Funktioniert! Sieht so aus im Log:

Code:
2021-06-21T20:01:20+02:00: Phase 1: temporarily restore snapshots to temp dir
2021-06-21T20:02:18+02:00: found media label MD0001L5 (5b625b1c-a3ed-41ce-9651-2bb985471170)
2021-06-21T20:02:18+02:00: was at file 2, moving to 96
2021-06-21T20:03:39+02:00: now at file 95
2021-06-21T20:03:39+02:00: landed on wrong file, adding offset and try again
2021-06-21T20:03:41+02:00: now at file 95
2021-06-21T20:03:41+02:00: File 96: snapshot archive local-data:vm/102/2021-05-01T22:30:02Z
2021-06-21T20:03:41+02:00: was at file 97, moving to 98
2021-06-21T20:03:43+02:00: now at file 98
2021-06-21T20:03:43+02:00: File 98: snapshot archive local-data:vm/102/2021-05-08T22:30:02Z
2021-06-21T20:03:43+02:00: was at file 99, moving to 105
2021-06-21T20:03:56+02:00: now at file 105
2021-06-21T20:03:56+02:00: File 105: snapshot archive local-data:vm/102/2021-05-30T22:30:02Z

Einen Hinweis habe ich noch: das HP ULTRIUM 5 Laufwerk ist beim LOCATE leider
manchmal sehr langsam, so dass ich schon mehrfach in den SCSI-Timeout von
120 Sekunden gelaufen bin. Vielleicht lässt sich der Timeout nur für den LOCATE-Befehl
erhöhen? Ich hatte bei mir schon einmal 3 Minuten Ausführungszeit, also
wahrscheinlich wären 4 Minuten Timeout ausreichend.

Danke schonmal!

Bis denn,
Michael
 
Danke für die beiden Patches. Funktioniert! Sieht so aus im Log:
danke fürs testen, sehe grad dass da noch ein kleiner bug ist (zeigt das falsche file an nach dem korrigieren)

Einen Hinweis habe ich noch: das HP ULTRIUM 5 Laufwerk ist beim LOCATE leider
manchmal sehr langsam, so dass ich schon mehrfach in den SCSI-Timeout von
120 Sekunden gelaufen bin. Vielleicht lässt sich der Timeout nur für den LOCATE-Befehl
erhöhen? Ich hatte bei mir schon einmal 3 Minuten Ausführungszeit, also
wahrscheinlich wären 4 Minuten Timeout ausreichend.
mhmm... normalerweise sollte ein locate nicht länger dauern als einmal komplett übers tape fahren (max ~100s).
das sollte eig. nur passieren wenn fehler am tape sind.

auf der anderen seite wird von hp für lto-8 empfohlen ein timeout von 49(!) minuten zu verwenden...
https://support.hpe.com/hpesc/public/docDisplay?docId=a00041061en_us&docLocale=en_US
 
Ich hab gestern Abend mal versucht, das etwas zu recherchieren. In einem ähnlichen Dokument von HP für LTO-6 wird 20 Minuten empfohlen.
Das kann aber durchaus sein. Die Position des File Marks kann ja nicht in einem Durchlauf des Bands gefunden werden. Bei einem LTO-5 Band gibt es ja 80 parallele Spuren, von denen beim Lesen immer nur eine gleichzeitig durchsucht werden kann. Ich nehme an, dass das Laufwerk eine Art "binäre Suche" auf dem Band macht. Je nach Menge der Daten auf dem Band kann das eben relativ lange dauern. Deswegen ist der empfohlene Timeout-Wert für LTO-8 auch nochmal deutlich höher...

Man kann die empfohlenen Timeout-Werte wohl auch direkt aus dem Laufwerk auslesen. Dazu kann ich am Wochenende mal die Werte von meinem LTO-5-Laufwerk ermitteln. Diese Info-Funktion gibt es aber wohl erst ab LTO-5. Wenn LTO-4 von PBS unterstützt werden soll, wird aber trotzdem ein sinnvoller fester Timeout-Wert benötigt. Ich werde am Wochenende mal suchen, ob es für LTO-4 irgendwelche Empfehlungen gibt.

Bis denn,
Michael
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!