Apple Mac und exotische Geräte. LTO, SAS, Fibre Channel, eSATA

In diesem Artikel geht es um den Anschluss externer Geräte an einen Mac über die Schnittstellen SAS, Fibre Channel (FC) und eSATA. Zunächst einmal sei gesagt, dass es einen vernünftigen Weg gibt, um auf solche Geräte zuzugreifen: Man könnte einen günstigen PC zusammenbauen, eine HBA SAS- oder FC-Controllerkarte (zum Beispiel einen einfachen LSI-Adapter) einstecken, die Geräte an diesen Controller anschließen, ein beliebiges Linux auf dem PC installieren und über das Netzwerk mit dem Mac arbeiten. Aber das ist banal und uninteressant. Wir wählen den Hardcore-Weg und schließen unsere Geräte an direkt an den Mac.

Was wir dafür benötigen:
– eine ansehnliche Summe Geld für den Kauf neuer Hardware oder etwas Glück bei Auktionen auf eBay (wo man mit ein wenig Mühe die benötigte Hardware der vorherigen Generationen zehnmal günstiger kaufen kann als im Preiskatalog);
– diesen Artikel.

Um mit Magnetbändern (derzeit fast ausschließlich im LTO-Format vertreten) zu arbeiten, benötigen Sie ein Bandlaufwerk (Streamer) oder eine LTO-Bibliothek. Dieses Gerät ist bei der Erstanschaffung recht kostspielig (ab mehreren Tausend Euro), jedoch zu einem vernünftigen Preis im gebrauchten Zustand erhältlich. Da sich die LTO-Generation etwa alle zwei Jahre ändert und die Kompatibilität auf zwei Generationen beschränkt ist, sind auf dem Sekundärmarkt zahlreiche funktionstüchtige Geräte von vor vier Jahren oder älter zu finden, also von der Generation davor und älter. Wenn Sie ein neues Gerät für kommerzielle Zwecke erwerben, wissen Sie sicherlich, wofür Sie es brauchen. Für den privaten Gebrauch sollten Sie diese Option in Betracht ziehen, um Informationen zu archivieren (da die Medien sehr günstig pro 1 Gigabyte sind).

Ab der LTO-Generation 5 (und teilweise auch LTO-4) werden Bandgeräte hardwareseitig über SAS- oder FC-Schnittstellen mit dem Computer verbunden (normalerweise gibt es zwei Ausführungen jedes Geräts).

Andererseits bietet Apple uns in unserem Mac ein USB-C-Interface (das nach den Protokollen USB, Thunderbolt 3 oder DisplayPort funktioniert), manchmal auch ein Ethernet-Interface sowie proprietäre Thunderbolt 3-Adapter – Thunderbolt 2 und Thunderbolt – FireWire 800.

Ein Ausweg? Nicht ganz. Glücklicherweise kann der Thunderbolt-Bus im PCIe-Modus arbeiten und ermöglicht die Verbindung von PCIe-Karten, als ob sie direkt im Gehäuse des Computers installiert wären. Dadurch sind alle Arten der Hardwareerweiterung deines Macs möglich, solange der entsprechende Adapter und die Treiber vorhanden sind.

Der konzeptionell einfachste Weg zur Lösung des Problems ist ein externes Gehäuse für PCIe-Adapter mit Thunderbolt-Interface (PCIe-Kartenerweiterungssystem), in das man einen Controller (Hostbusadapter, HBA) für SAS oder FC installieren kann. Zum Beispiel stellt die Firma Sonnet und einige andere solche Gehäuse her. Hier gibt es jedoch einen Haken: Nicht jeder Controller passt, sondern nur derjenige, der einen Treiber für macOS hat. Solche Karten sind insgesamt selten, und die billigsten und beliebtesten (wie die von LSI) gehören nicht dazu. Glücklicherweise hat die Firma Sonnet sich die Mühe gemacht, eine Kompatibilitätstabelle zu erstellen. PCIe-Karten mit verschiedenen Betriebssystemen über die Thunderbolt-Schnittstelle.

Eine weitere Lösung besteht darin, einen fertigen Thunderbolt-Schnittstellenkonverter – SAS oder Thunderbolt – FC zu erwerben, der im Wesentlichen ein bereits zusammengestelltes Produkt aus einem Gehäuse und einem Controller darstellt. Besonders bekannt in diesem Bereich ist die Firma ATTO, es gibt jedoch auch Produkte anderer Hersteller.

Es ist zu beachten, dass nicht alle SAS- und FC-Controller gemäß dem LTO-Standard zertifiziert sind, da dies zusätzliche Kosten verursacht. Einige Hersteller geben ausdrücklich an, dass ihre Controller nicht für den Einsatz mit Bandlaufwerken vorgesehen sind.

Um das Bild abzurunden, sei erwähnt, dass die Firma mLogic ein Gerätherstellt, das einen IBM LTO-8-Speicher in einem externen Gehäuse darstellt, in das sofort ein SAS-zu-Thunderbolt-3-Konverter integriert ist. Dies ist jedoch etwas noch Exotischeres als alles Vorherige, insbesondere in unseren Breiten. Ich bezweifle, dass dieses Gerät sogar legal nach Russland eingeführt werden kann (LTO-Laufwerke enthalten kryptografische Mittel, und Hersteller wie IBM und HP müssen aus diesem Grund für jedes Modell eine Genehmigung der FSB für den Import einholen).

Im Folgenden betrachten wir als Beispiel ein spezifisches Hardware-Setup, das der Autor durch mehrere erfolgreiche Käufe erworben hat. Das allgemeine Prinzip sollte jedoch für alle Varianten beibehalten werden.

Für die Arbeit mit dem Band haben wir folgende Ausrüstung:
– Apple Mac mini 2018 mit macOS 10.15 Catalina, ausgestattet mit USB-C-Ports, die Thunderbolt 3 unterstützen;
– Apple Thunderbolt 3 / Thunderbolt 2-Adapter;
– Apple Thunderbolt 2-Kabel;
– ATTO ThunderLink SH 1068 Interface-Konverter (2*Thunderbolt / 2*SAS-2);
– SAS-Kabel SFF-8088 – SFF-8088;
– LTO-5 IBM TS2350 Bandlaufwerk;
– LTO-5-Kassetten, einschließlich einer Reinigungskassette.

Jetzt, wie man so schön sagt, werden wir mit diesem ganzen Kram versuchen, abzuheben.

Laden Sie von der ATTO-Website die neueste Version des ThunderLink SH 1068-Treibers herunter (anscheinend ist dieser zur Vereinfachung mit dem SH 2068-Treiber kombiniert und befindet sich im Bereich 2068, wozu nur im Archiv mit dem Treiber geschrieben steht) sowie das Konfigurationstool von ATTO.

Apple Mac und exotische Geräte. LTO, SAS, Fibre Channel, eSATA

Der Treiber benötigt selbstverständlich eine Installation. Vor solchen Aktionen empfiehlt der Autor immer, einen Snapshot des APFS-Dateisystems des Startlaufwerks mit folgendem Befehl zu erstellen:

tmutil localsnapshot

oder ein Backup des Startlaufwerks, falls HFS+ vorhanden ist. Man weiß ja nie. Danach wird es einfach sein, aus dem Snapshot wiederherzustellen.

Ein unerfahrener, aber vorsichtiger und kluger Nutzer wird zweifellos dazu neigen, die ATTO-Anleitung zur Installation des Treibers sorgfältig zu lesen und entsprechend zu handeln. Das Ergebnis – tada! – ist ein Betriebssystem, das beim Booten hängen bleibt. Hier könnte uns der Snapshot helfen, von dem wir wiederherstellen können, indem wir die Time Machine aus dem Wiederherstellungsbereich aufrufen, oder wir können von demselben Wiederherstellungsbereich manuell den fehlerhaften kext aus dem Verzeichnis der Kernel-Erweiterungen löschen (der Autor empfiehlt dies im Allgemeinen nicht).

Warum passiert das? Weil uns Apple geholfen hat. In den neuesten Versionen von macOS kann man nicht einfach fremden Code in den Bootprozess einfügen. Die klugen Programmierer von Apple haben solches destruktives Verhalten blockiert. Genauer gesagt, sie haben es zur Hälfte blockiert, wenn das Warten auf den Treiber eingreift, der Treiber selbst jedoch nicht, weshalb alles einfach einfriert.

Was sollte ein erfahrener Nutzer vor der Installation des Treibers tun? Zuerst den Befehl geben:

csrutil status

Wenn wir darauf die folgende Antwort erhalten:

Der Status des Systemintegritätsschutzes: aktiviert.

führt das dazu, dass die engagierten Programmierer von Apple sich um uns kümmern. Daher wird nichts funktionieren, solange wir ihren tollen Schutz nicht deaktivieren. Dafür starten wir im Wiederherstellungsmodus (⌘R), öffnen das Terminal und geben den Befehl ein:

csrutil disable

Anschließend starten wir im normalen System neu und installieren dann den Treiber sowie das ATTO-Konfigurationstool (das Konfigurationstool ist eigentlich nur für Diagnosen erforderlich und nicht notwendig für den normalen Betrieb). Dabei bestätigen wir, wenn nötig, in den Systemeinstellungen die Autorisierung von ATTO. Nach der Installation können wir erneut im Wiederherstellungsmodus starten und den Befehl eingeben:

csrutil enable

Apple kümmert sich wieder um uns.

Nun haben wir dank des Treibers eine unterstützte Schnittstelle zu externen SAS-Geräten (oder FC, falls ein FC-Converter verwendet worden wäre). Aber wie arbeitet man auf logischer Ebene mit dem Tape?

Wie allgemein bekannt ist, unterstützt jedes Unix-kompatible System im Kern und in den grundlegenden Systemdienstprogrammen Bandlaufwerke, zu denen vor allem mt (Bandlaufwerk-Management) und tar (ein Archivierungsprogramm, das die Arbeit mit Bandarchiven unterstützt) gehören. Doch was wird ein erfahrener Nutzer dazu sagen? Jedes Unix-kompatible System, außer macOS. Apple hat uns, um genau zu sein, die Unterstützung von Bandlaufwerken aus ihrem Code entfernt.

Aber kann man diesen Code nicht zurückbringen, indem man die Standard-Open-Source-Utilities von Unix auf macOS portiert? Die gute Nachricht ist, dass dies bereits von der Firma Tolis in ihrem Produkt Tolis Tape Tools gemacht wurde (auf deren Website verlinke ich nicht). Die schlechte Nachricht ist, dass die Firma die Nutzung ihrer Ergebnisse mit 399 US-Dollar bewertet. Die Meinungen zu diesem Fakt können unterschiedlich sein, aber ich persönlich bin nicht bereit, jemandem 400 Dollar für einen Code zu zahlen, der größtenteils von ganz anderen Personen geschrieben wurde und seit den 1970er Jahren öffentlich zugänglich ist. Daher betrachte ich diese Angelegenheit für mich als abgeschlossen. (Übrigens gibt es auf GitHub ein verwahrlostes Projekt zu diesem Thema. IOSCSITape .)

Glücklicherweise gibt es auf der Welt die IBM, deren kommerzielle Ambitionen ganz andere Dimensionen haben und sich daher nicht in Kleinigkeiten manifestieren. Insbesondere hat sie ein bandbasiertes Dateisystem namens LTFS mit öffentlichem Quellcode entwickelt, das auch für macOS verfügbar ist.

Es gibt einen Punkt zu beachten: Verschiedene Hersteller von Bandlaufwerken bringen ihre eigenen Versionen von LTFS heraus, die nur für ihre Geräte unterstützt werden. Da der Autor ein IBM-Bandlaufwerk verwendet, hat er auch LTFS von IBM installiert. Für Geräte anderer Hersteller sind möglicherweise deren eigene LTFS-Ports erforderlich. Es gibt jedoch eine universelle Implementierung von openLTFS auf GitHub und Homebrew.

Für uns ist wichtig, dass LTFS die Funktion der Partitionierung des Mediums verwendet und daher mit Geräten und Patronen ab der LTO-5-Generation arbeiten kann.

In unserem Fall laden wir von der IBM-Website das Produkt IBM Spectrum Archive Single Drive Edition für macOS herunter, das die Implementierung von LTFS enthält. Die Installation erfolgt problemlos über den eigenen Installer. Währenddessen wird auch das FUSE-Paket installiert, und in den Systemeinstellungen müssen wir die Autorisierung eines klugen Programmierers namens Anatol Pomozov bestätigen, von der in diesem Fall das gesamte IBM abhängt. Respekt und Anerkennung für diese Person.

Es ist sinnvoll, sofort in der Datei /Library/Frameworks/LTFS.framework/Versions/Current/etc/ltfs.conf.local die Zeile hinzuzufügen:

option single-drive sync_type=time@1

Standardmäßig wird die Bandbefestigung mit einem Schreibcache-Reset nach 1 Minute Inaktivität (standardmäßig 5 Minuten) eingerichtet.

Apple Mac und exotische Geräte. LTO, SAS, Fibre Channel, eSATA

Jetzt ist alles bereit zum Anschließen. Verbinden Sie die Kette: Mac – T3/T2-Adapter – Thunderbolt-Kabel – ATTO-Konverter – SAS-Kabel – Bandlaufwerk (die Wahl der Anschlüsse am Mac, Konverter und Laufwerk ist nicht entscheidend). Schalten Sie die Stromversorgung des Konverters ein. Schalten Sie die Stromversorgung des Bandlaufwerks ein. Warten Sie, bis die Initialisierung des Laufwerks gemäß seiner Anzeige abgeschlossen ist.

Geben Sie den Befehl ein:

ltfs -o device_list

Hurra! Wir erhalten (in der üblichen diagnostischen Art von IBM):

307 LTFS14000I LTFS startet, LTFS-Version 2.4.2.0 (10418), Protokollebene 2.
307 LTFS14058I LTFS-Format Spezifikation Version 2.4.0.
307 LTFS14104I gestartet durch «ltfs -o device_list».
307 LTFS14105I Diese Binärdatei ist für Mac OS X gebaut.
307 LTFS14106I GCC-Version ist 4.2.1 Kompatibles Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
307 LTFS17087I Kernel-Version: Darwin Kernel Version 19.4.0: Mittwoch, 4. März 2020, 22:28:40 PST; root:xnu-6153.101.6~15/RELEASE_X86_64.
307 LTFS17085I Plugin: Lade «iokit» Band-Backend.
Bandgerätes Liste:
Gerätename = 0, Anbieter-ID = IBM, Produkt-ID = ULT3580-TD5, Seriennummer = **********, Produktname =[ULT3580-TD5].

Setzen Sie die Kassette ein, warten Sie, bis sie geladen ist, und formatieren Sie:

mkltfs -d 0 -nTest -r "size=10M/name=.DS_Store"

Hier gibt der Parameter -d die Nummer des Speichermediums an (immer null, wenn es nur eines gibt, aber in diesem Befehl darf er nicht weggelassen werden), -n ist der Name des Bandes (kann weggelassen werden), und der Parameter -r verlangt, dass der Inhalt von .DS_Store-Dateien, die nicht größer als 10 Megabyte sind, im Indexbereich (d.h. für Verzeichnisse vorgesehen) des Bandes statt im Datenbereich platziert wird.

Ein mysteriöses Leben im Bandlaufwerk hat begonnen. Wir warten ein paar Minuten und erhalten folgende Antwort:

LTFS15000I Starte mkltfs, LTFS Version 2.4.2.0 (10418), Protokollniveau 2.
LTFS15041I Gestartet durch «mkltfs -d 0 -nTest -r size=10M/name=.DS_Store».
LTFS15042I Diese Binary ist für Mac OS X erstellt.
LTFS15043I GCC-Version ist 4.2.1, kompatibel mit Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
LTFS17087I Kernel-Version: Darwin Kernel Version 19.4.0: Mi mär 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
LTFS15003I Formatiere Gerät ‘0’.
LTFS15004I LTFS-Volumenblockgröße: 524288.
LTFS15005I Indexpartition Platzierungspolitik: size=10M/name=.DS_Store.

LTFS11337I Aktualisiere Index-dirty Flagge (1) — NO_BARCODE (0x0x1021081e0).
LTFS17085I Plugin: Lade «iokit» Band-Backend.
LTFS30810I Öffne ein Gerät über den iokit-Treiber (0).
LTFS30814I Hersteller-ID ist IBM.
LTFS30815I Produkt-ID ist ‘ULT3580-TD5 ‘.
LTFS30816I Firmware-Version ist H976.
LTFS30817I Laufwerksseriennummer ist **********.
LTFS17160I Maximale Geräteblockgröße beträgt 1048576.
LTFS11330I Lade Kassette.
LTFS30854I Logischer Blockschutz ist deaktiviert.
LTFS11332I Erfolgreich geladen.
LTFS17157I Ändere die Laufwerkeinstellung auf Schreib-überall-Modus.
LTFS15049I Überprüfe das Medium (Mount).
LTFS30854I Logischer Blockschutz ist deaktiviert.
LTFS15010I Erstelle Datenpartition b auf SCSI-Partition 1.
LTFS15011I Erstelle Indexpartition a auf SCSI-Partition 0.
LTFS17165I Setze die Kapazitätsproportion des Mediums zurück.
LTFS11097I Partitioniere das Medium.
LTFS11100I Schreibe Label in Partition b.
LTFS11278I Schreibe Index in Partition b.
LTFS30808I READ_ATTR (0x8c) gibt -20501 zurück.
LTFS30865I READ_ATTR gibt ungültiges Feld in CDB (-20501) 0 zurück.
LTFS30836I Kann Attribut nicht lesen (-20501).
LTFS11336I Das Attribut existiert nicht. Ignoriere den erwarteten Fehler.
LTFS17235I Schreibe Index von NO_BARCODE in b (Grund: Format, 0 Dateien) **********.
LTFS17236I Index von NO_BARCODE wurde geschrieben (b, **********).
LTFS11337I Aktualisiere Index-schmutzig Flag (0) — NO_BARCODE (0x0x1021081e0).
LTFS11100I Schreibe Label in Partition a.
LTFS11278I Schreibe Index in Partition a.
LTFS30808I READ_ATTR (0x8c) gibt -20501 zurück.
LTFS30865I READ_ATTR gibt ungültiges Feld in CDB (-20501) 0 zurück.
LTFS30836I Kann Attribut nicht lesen (-20501).
LTFS11336I Das Attribut existiert nicht. Ignoriere den erwarteten Fehler.
LTFS17235I Schreibe Index von NO_BARCODE in a (Grund: Format, 0 Dateien) 9068025555.
LTFS17236I Index von NO_BARCODE wurde geschrieben (a, **********).
LTFS15013I Volume UUID ist: 3802a70d-bd9f-47a6-a999-eb74ffa67fc1.

LTFS15019I Volumenkapazität beträgt 1425 GB.
LTFS30854I Logischer Blockschutz ist deaktiviert.
LTFS15024I Medium erfolgreich formatiert.

Wir montieren das formatierte Band:

sudo mkdir /Volumes/LTFS
sudo chmod 777 /Volumes/LTFS/
sudo ltfs /Volumes/LTFS

Wir erhalten noch ein paar Minuten Laufzeit des Speichermediums, Diagnose:

307 LTFS14000I LTFS startet, LTFS-Version 2.4.2.0 (10418), Protokollebene 2.
307 LTFS14058I LTFS-Format Spezifikation Version 2.4.0.
307 LTFS14104I Gestartet durch «ltfs /Volumes/LTFS/».
307 LTFS14105I Diese Binärdatei ist für Mac OS X gebaut.
307 LTFS14106I GCC-Version ist 4.2.1 Kompatibles Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
307 LTFS17087I Kernel-Version: Darwin Kernel Version 19.4.0: Mittwoch, 4. März 2020, 22:28:40 PST; root:xnu-6153.101.6~15/RELEASE_X86_64.
307 LTFS14063I Synchronisierungstyp ist «Zeit», Synchronisierungszeit beträgt 60 Sekunden.
307 LTFS17085I Plugin: Lade «iokit» Band-Backend.
307 LTFS17085I Plugin: Lade «unified» iosched Backend.
307 LTFS14095I Setze den Schreibmodus für das Bandgerät auf Überall, um das Auswerfen der Kassette zu vermeiden.
307 LTFS30810I Öffne ein Gerät über den iokit-Treiber (0).
307 LTFS30814I Anbieter-ID ist IBM.
307 LTFS30815I Produkt-ID ist ‘ULT3580-TD5 ‘.
307 LTFS30816I Firmware-Version ist H976.
307 LTFS30817I Die Seriennummer des Laufwerks ist **********.
307 LTFS17160I Maximale Geräteblockgröße beträgt 1048576.
307 LTFS11330I Lade Kassette.
307 LTFS30854I Logischer Blockschutz ist deaktiviert.
307 LTFS11332I Laden erfolgreich.
307 LTFS17157I Ändern der Laufwerkeinstellung in den Schreib-Modus.
307 LTFS11005I Mounten des Volumes.
307 LTFS30854I Logischer Blockschutz ist deaktiviert.
307 LTFS17227I Tape-Attribut: Anbieter = IBM.
307 LTFS17227I Tape-Attribut: Anwendungsname = LTFS.
307 LTFS17227I Tape-Attribut: Anwendungsversionsnummer = 2.4.2.0.
307 LTFS17227I Tape-Attribut: Medium-Label =.
307 LTFS17228I Tape-Attribut: Textlokalisierungs-ID = 0x81.
307 LTFS17227I Tape-Attribut: Barcode =.
307 LTFS17227I Tape-Attribut: Anwendungsformatversion = 2.4.0.
307 LTFS17228I Tape-Attribut: Volumensperrstatus = 0x00.
307 LTFS17227I Tape-Attribut: Medienpoolname =.
307 LTFS14111I Erstkonfiguration erfolgreich abgeschlossen.
307 LTFS14112I Führen Sie den Befehl ‚mount‘ aus, um das Ergebnis der endgültigen Konfiguration zu überprüfen.
307 LTFS14113I Der angegebene Einhängepunkt wird aufgelistet, wenn die Erfolgsmeldung erfolgreich war.

Und da ist sie, unser Band auf dem Desktop, mit dem Namen Test(ltfs)! Das namenlose Band erhält den Namen OSXFUSE Volume 0 (ltfs).

Jetzt kann man damit arbeiten.

Apple Mac und exotische Geräte. LTO, SAS, Fibre Channel, eSATA

Es ist jedoch zu beachten, dass man den Inhalt der Bandverzeichnisse in den Finderfenstern nicht übermäßig nutzen sollte, da dies eine äußerst ressourcenintensive Operation für LTFS ist. Es ist besser, stattdessen die Terminalbefehle zu verwenden oder einfach den zu sichernden Katalog gesammelt auf das Band zu übertragen, wie im obigen Fenster gezeigt.

Übrigens gibt es ein speziell von IBM entwickeltes Tool ltfs_copy und seine Klone, die für effizienteres Kopieren zwischen Band und Festplatte gedacht sind, aber der Autor konnte sie bei einer oberflächlichen Suche bisher nicht in öffentlichem Zugriff finden.

Um das Band auszuhängen, verwenden Sie den Befehl:

umount /Volumes/LTFS

oder werfen Sie es einfach in den Papierkorb.

Tatsächlich gibt es grafische Oberflächen für macOS, die diese Aktionen erleichtern, aber nach all diesen Absurditäten sollten wir keine Angst haben, ein paar Zeilen im Terminal einzugeben.

Als Nebeneffekt erhalten wir die Möglichkeit, über ein SAS/4*eSATA-Kabel externe eSATA-Festplatten anzuschließen.

Apple Mac und exotische Geräte. LTO, SAS, Fibre Channel, eSATA

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster