AS/400 - 9404: Kopieren und Sichern von Festplatten mit 520Byte Sektorgröße unter Linux
In einem vorhergehendem Artikel habe ich bereits versucht, eine Festplatte aus der AS/400 auszulesen. Aufgrund der abweichenden Sektorgröße (520Byte anstatt 512Byte, die zusätzlichen 8 Bytes pro Sektor wurden für Fehlerkorrektur und Verwaltungsinformationen genutzt) lässt sich ein derartig formatierter Datenträger unter Linux nicht als gewöhnliches Blockdevice ansprechen. Nachdem mir das Thema nun doch keine Ruhe gelassen hat, habe ich noch ein wenig Recherche betrieben - und siehe da, es gibt doch eine Möglichkeit. Mit dem Paket sg3-utils erhält man eine sehr umfangreiche Werkzeugsammlung für die direkte Kommunikation mit SCSI Raw-Devices. Ein alter Desktop-Rechner in Kombination mit einem ADAPTEC AHA-2940 SCSI-Controller hat erfolgreich ein Image der bestehenden Festplatten ziehen können.
Hier der Ablauf:
Prüfen, ob die Festplatte als /dev/sg1 erkannt wird (sg0 ist bereits die im Rechner verbaute SSD):
toaol@test-deb:~$ sudo dmesg | grep sg
[ 1.293471] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
[ 26.146780] sd 1:0:0:0: Attached scsi generic sg0 type 0
[ 26.146947] sd 0:0:0:0: Attached scsi generic sg1 type 0
Die Werkzeugsammlung installieren:
sudo apt-get -y install sg3-utils
Kommunikation mit der Festplatte prüfen:
toaol@test-deb:~$ sudo sg_inq /dev/sg1
standard INQUIRY:
PQual=0 PDT=0 RMB=0 LU_CONG=0 hot_pluggable=0 version=0x00 [no conformance claimed]
[AERC=0] [TrmTsk=0] NormACA=0 HiSUP=0 Resp_data_format=0
SCCS=0 ACC=0 TPGS=0 3PC=0 Protect=0 [BQue=0]
EncServ=0 MultiP=0 [MChngr=0] [ACKREQQ=0] Addr16=0
[RelAdr=0] WBus16=0 Sync=0 [Linked=0] [TranDis=0] CmdQue=0
[SPI: Clocking=0x0 QAS=0 IUS=0]
length=136 (0x88) Peripheral device type: disk
Vendor identification: IBM
Product identification: 0671S15
Product revision level: 200
toaol@test-deb:~$ sudo sg_readcap /dev/sg1
Read Capacity results:
Last LBA=616391 (0x967c7), Number of logical blocks=616392
Logical block length=520 bytes
Hence:
Device size: 320523840 bytes, 305.7 MiB, 0.32 GB
sg_readcap liefert die Kapazitätsinformation, wie vermutet haben die Festplatten eine Speicherkapazität von 320MB
Image der kompletten Platte anlegen:
sudo sg_dd if=/dev/sg1 of=disk1.img bs=520 bpt=64
Eventuell müssen die bpt (Blocks per transfer) angepasst werden, hat aber bei mir so funktioniert.
Die Lesegeschwindigkeit halte ich für beeindruckend, eine komplette Festplatte lässt sich in unter 10 Minuten auslesen:
toaol@test-deb:~$ time sudo sg_dd if=/dev/sg1 of=AS400disk4.img bs=520 bpt=64
616392+0 records in
616392+0 records out
real 9m52.319s
user 0m0.009s
sys 0m0.030s
Weiter geht es mit den 3.5"-Platten, welche in einem anderen Einschub verbaut sind:
toaol@test-deb:~$ sudo sg_inq /dev/sg1
standard INQUIRY:
PQual=0 PDT=0 RMB=0 LU_CONG=0 hot_pluggable=0 version=0x02 [SCSI-2]
[AERC=0] [TrmTsk=0] NormACA=0 HiSUP=0 Resp_data_format=2
SCCS=0 ACC=0 TPGS=0 3PC=0 Protect=0 [BQue=0]
EncServ=0 MultiP=0 [MChngr=0] [ACKREQQ=0] Addr16=0
[RelAdr=0] WBus16=0 Sync=1 [Linked=1] [TranDis=0] CmdQue=1
[SPI: Clocking=0x0 QAS=0 IUS=0]
length=158 (0x9e) Peripheral device type: disk
Vendor identification: IBM
Product identification: 0663L12
Product revision level: s 62
toaol@test-deb:~$ sudo sg_readcap /dev/sg1
Read Capacity results:
Last LBA=1931264 (0x1d7800), Number of logical blocks=1931265
Logical block length=520 bytes
Hence:
Device size: 1004257800 bytes, 957.7 MiB, 1.00 GB
Ok, die Platten haben sogar eine Speicherkapazität von 1 GB. Sind aber auch neuer (da steht was von Copyright 1992). Wie sich die 5,25"-Platten (Typ 0671) automatsch hochfahren lassen, habe ich im oben verlinkten vorherigen Artikel schon beschrieben. Für die kleineren Platten (Typ 0663) muss ein Jumper gesetzt werden. Die entsprechenden Information dazu habe ich auf stason.org gefunden.
toaol@test-deb:~$ time sudo sg_dd if=/dev/sg1 of=AS400disk1_u.img bs=520 bpt=64
1931265+0 records in
1931265+0 records out
real 7m29.467s
user 0m0.009s
sys 0m0.031s
Zugegeben, von der Lesegeschwindigkeit bin ich absolut begeistert, die 2. Festplatte konnte ihren Inhalt in 07 Minuten und 54 Sekunden über die Schnittstelle jagen.
Bei der nächsten Festplatte kam es dann zu einer recht plötzlichen Wendung. Platte angesteckt, Test-Rechners eingeschaltet und FATZACK! Aus der Festplatte kam mir Rauch entgegen. Kurzfristig habe ich mich somit dazu entschlossen, das Netzkabel des PCs rauszureißen. Was zur Hölle? Also Fenster öffnen, damit sich der Gestank wieder halbwegs neutralisiert und mit der Festplatte ab in die Werkstatt. Relativ schnell bin ich auch fündig geworden, ein Tantal-Elektrolytkondensator hat sich demonstrativ verabschiedet. Beim Reinigen der Festplatte habe ich mir schon gedacht, dass diese Kondensatoren eigentlich auch zu tauschen wären. Wenn sich Tantal-Kondensatoren verabschieden, dann mit einem glatten Schlurzkuss. Ok, also bevor die nächsten Festplatten ausgelesen werden, tausche ich die Kondensatoren. Und selbst danach lasse ich die zuerst am Labornetzteil mit Strombegrenzung hochfahren, und nicht gleich direkt im PC.
Hier mal die aktuelle Bestellliste mit den benötigten Kondensatoren je Festplatte:
Kondensatoren Festplatte Typ 0671
Menge | Bezeichnung | Wert | Hersteller-Nr. | RS-Bestellnr. |
---|---|---|---|---|
3 | Tantal-Kondensator Kemet | 22µF 16VDC | T491C226K016AT | 648-0531 |
5 | Tantal-Kondensator Kemet | 22µF 25VDC | T491D226K025AT | 538-2638 |
1 | Tantal-Kondensator Kemet | 6,8µF 35VDC | T491D685K035AT | 648-0468 |
2 | Tantal-Kondensator Kemet | 6,8µF 16VDC | T491B685K016AT | 648-0569 |
1 | Elektrolytkondensator Nichicon | 100µF 16VDC | UPW1J330MED | 715-2549 |
2 | Elektrolytkondensator Nichicon | 470µF 16VDC | UBT1C471MPD8 | 762-1660 |
Einen Bestückungsaufdruck gibt es auf der Platine nicht, deshalb auch keine Bauteilbezeichnungen. Klar könnte man die Tantal-Kondensatoren auch zusammenfassen auf 22µF/25V und 6,8µF/35V. Für mich soll eine Reparatur jedoch immer so nahe wie möglich am Original sein. Deshalb verwende ich auch bewusst gleiche Kapazitäten mit unterschiedlicher Spannungsfestigkeit.
Auf jeden Fall habe ich jetzt erfolgreich eine Kopie einiger Festplatten erstellt, und sehe der zukünftigen Inbetriebnahme doch etwas entspannter entgegen.
Der Vollständigkeit halber wurde auch die Spannungen (12VDC/5VDC) an den Abwärtswandlern der einzelnen Festplatteneinschübe überprüft, alle Spannungen waren im Bereich von +180mV/-0mV. Restwelligkeit meist max. 50mVpp. Lediglich der Einschub mit den 3,5"-Festplatten hat auf der 12V-Rail 110mVpp Ripple. Dass das besser geht, beweisen die anderen Abwärtswandler. Die Bestellung wird also um 2x 3300µF/16V Elkos erweitert. Leider hat RS keine mechanisch identen Elkos von Nichicon im Sortiment, somit greife ich dieses mal auf Produkte von Panasonic zurück. Die wissen ja schließlich auch, wie man Kondensatoren baut.

Kommentar schreiben