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

Das Thema dieses Artikels ist der Anschluss externer Geräte an einen Mac über SAS-, Fibre Channel (FC)- und eSATA-Schnittstellen. Sagen wir gleich, dass es einen gesunden Menschenweg gibt, um das Problem des Zugriffs auf solche Geräte zu lösen: Bauen Sie einen billigen PC, schließen Sie eine HBA-SAS- oder FC-Controllerkarte (z. B. einen einfachen LSI-Adapter) an und verbinden Sie Ihre Geräte mit diesem Controller , beliebiges Linux auf dem PC installieren und vom Mac aus über das Netzwerk arbeiten. Aber das ist banal und uninteressant. Wir werden den Hardcore-Weg gehen und unsere Geräte verbinden direkt zum Mac.

Was wir dafür brauchen:
– ein ordentlicher Geldbetrag für den Kauf neuer Geräte oder viel Glück bei Auktionen bei eBay (wo Sie mit ein wenig Aufwand die benötigte Ausrüstung früherer Generationen zehnmal günstiger als den Listenpreis kaufen können);
- Dieser Artikel.

Um mit Magnetbändern zu arbeiten (heute fast überall im LTO-Format vertreten), benötigen Sie ein LTO-Bandlaufwerk (Streamer) oder eine Bandbibliothek. Dies ist ein ziemlich teures Gerät für den Erstkauf (ab Hunderttausenden Rubel), aber beim Gebrauchtkauf ist es eine angemessene Menge Geld wert. Da sich die LTO-Generation etwa alle zwei Jahre ändert und die Kompatibilität auf zwei Generationen beschränkt ist, ist der Sekundärmarkt ziemlich gesättigt mit funktionsfähigen Geräten, die vier Jahre oder älter sind, d. h. der vorletzten Generation und darüber hinaus. Wenn Sie für gewerbliche Zwecke ein neues Gerät kaufen, dann verstehen Sie selbst, warum Sie es brauchen. Wenn Sie für Ihr Zuhause und Ihre Familie kaufen möchten, können Sie diese Option als Möglichkeit zur Archivierung von Informationen in Betracht ziehen (da die Medien selbst pro 1 Gigabyte sehr günstig sind).

Ab der LTO-5-Generation (und teilweise LTO-4) werden Geräte für die Arbeit mit Magnetbändern hardwaremäßig über eine SAS- oder FC-Schnittstelle mit dem Computer verbunden (normalerweise gibt es zwei Versionen jedes Geräts).

Andererseits stellt uns Apple freundlicherweise eine USB-C-Schnittstelle in unserem Mac zur Verfügung (funktioniert mit den Protokollen USB, Thunderbolt 3 oder DisplayPort), manchmal eine Ethernet-Schnittstelle sowie proprietäres Thunderbolt 3 – Thunderbolt 2 und Thunderbolt – FireWire 800 Adapter.

Patt? Nicht wirklich. Glücklicherweise kann Thunderbolt im PCIe-Modus betrieben werden und ermöglicht den Anschluss von PCIe-Karten auf die gleiche Weise, als wären sie direkt im Computergehäuse installiert. Dadurch ist eine beliebige Erweiterung der Mac-Hardwarekonfiguration möglich, sofern ein entsprechender Adapter und Treiber vorhanden sind.

Konzeptionell ist die einfachste Lösung des Problems eine externe Box für PCIe-Adapter mit Thunderbolt-Schnittstelle (PCIe-Kartenerweiterungssystem), in die Sie einen SAS- oder FC-Host-Bus-Adapter (HBA) einbauen können. Solche Boxen werden beispielsweise von der Firma selbst hergestellt Sonett und einige andere. Hier gibt es eine Nuance: Nicht jeder Controller ist für uns geeignet, sondern nur einer, der über einen Treiber für macOS verfügt. Es gibt nur wenige solcher Boards, und die billigsten und beliebtesten (z. B. das gleiche LSI) sind in ihrer Anzahl nicht enthalten. Glücklicherweise hat sich Sonnet die Mühe gemacht, es zu kompilieren Kompatibilitätstabelle PCIe-Karten mit verschiedenen Betriebssystemen über Thunderbolt-Schnittstelle.

Eine andere Lösung besteht darin, einen fertigen Thunderbolt-SAS- oder Thunderbolt-FC-Schnittstellenkonverter zu kaufen, bei dem es sich tatsächlich um eine fertige Baugruppe aus einer Box und einem Controller handelt. Das bekannteste Unternehmen in dieser Gegend ATTO, es gibt aber auch Produkte anderer Firmen.

Beachten Sie, dass nicht alle SAS- und FC-Controller für die Einhaltung des LTO-Standards zertifiziert sind, da dies an sich schon Geld kostet. Einige Hersteller schreiben direkt, dass ihre Controller nicht für den Betrieb mit Bandlaufwerken ausgelegt sind.

Um das Bild zu vervollständigen, stellen wir fest, dass mLogic produziert устройствоDabei handelt es sich um ein IBM LTO-8-Laufwerk in einem externen Gehäuse, in das sofort ein SAS-zu-Thunderbolt-3-Konverter integriert ist. Dies ist jedoch eine noch exotischere Sache als alles oben Beschriebene, insbesondere nach den Maßstäben unserer Region. Ich bezweifle, dass dieses Gerät überhaupt legal nach Russland importiert werden kann (LTO-Laufwerke enthalten kryptografische Funktionen und Hersteller wie IBM und HP erhalten aus diesem Grund für jedes Modell eine FSB-Importerlaubnis).

Als nächstes betrachten wir als Beispiel eine bestimmte Ausrüstung, deren Eigentümer der Autor durch mehrere erfolgreiche Akquisitionen wurde, aber das allgemeine Prinzip sollte für alle Optionen beibehalten werden.

Für die Arbeit mit Klebeband verfügen wir also über folgendes Equipment:
– Apple Mac mini 2018-Computer mit macOS 10.15 Catalina, mit USB-C-Anschlüssen mit Thunderbolt 3-Unterstützung;
– Apple Thunderbolt 3 / Thunderbolt 2-Adapter;
– Apple Thunderbolt 2-Kabel;
– ATTO ThunderLink SH 1068 Schnittstellenkonverter (2*Thunderbolt / 2*SAS-2);
– SAS-Kabel SFF-8088 – SFF-8088;
– Bandlaufwerk LTO-5 IBM TS2350;
– LTO-5-Kassetten, Reinigungskassette.

Nun, wie man so schön sagt, mit all dem Zeug werden wir versuchen, durchzukommen.

Wir laden von der ATTO-Website die neueste Version des ThunderLink SH 1068-Treibers herunter (anscheinend ist er der Einfachheit halber mit dem SH 2068-Treiber kombiniert und befindet sich im Abschnitt 2068, der nur in das Archiv mit dem Treiber geschrieben wird) und die ATTO-Konfigurationsdienstprogramm.

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

Der Treiber muss natürlich installiert werden. Vor solchen Aktionen empfiehlt der Autor, mit dem Befehl immer einen Snapshot des APFS-Dateisystems der Bootplatte zu erstellen

tmutil localsnapshot

oder eine Sicherungskopie der Bootdiskette, wenn diese über HFS+ verfügt. Man weiß nie. Dann ist es einfach, vom Snapshot ein Rollback durchzuführen.

Als nächstes wird der unerfahrene, aber sorgfältig denkende Mensch zweifellos geneigt sein, die Installationsanweisungen für den ATTO-Treiber sorgfältig zu lesen und sie zu befolgen. Als Ergebnis – Tadam! – Wir erhalten ein Betriebssystem, das beim Laden hängen bleibt. Hier benötigen wir möglicherweise einen Snapshot, den wir wiederherstellen können, indem wir Time Machine von der Wiederherstellungspartition aus aufrufen, oder von derselben Wiederherstellungspartition aus können wir den fehlerhaften Kext manuell aus dem Kernel-Erweiterungsverzeichnis löschen (der Autor empfiehlt dies im Allgemeinen nicht).

Warum passiert das? Weil Apple sich um uns gekümmert hat. In neueren Versionen von macOS können Sie nicht einfach Fremdcode in den Startvorgang einschleusen. Die guten Apple-Programmierer haben dieses destruktive Verhalten blockiert. Genauer gesagt, sie haben es auf halbem Weg blockiert, wenn die Erwartungen des Fahrers umgesetzt werden, der Fahrer selbst jedoch nicht, sodass alles einfach einfriert.

Was sollte ein erfahrener Geist tun, bevor er einen Treiber installiert? Geben Sie zunächst den Befehl ein:

csrutil status

Wenn wir als Antwort darauf erhalten:

Status des Systemintegritätsschutzes: aktiviert.

Dann bedeutet das, dass die guten Apple-Programmierer sich um uns kümmern, sodass für uns nichts klappen wird, bis wir ihren wunderbaren Schutz deaktivieren. Starten Sie dazu auf der Wiederherstellungspartition (⌘R) neu, rufen Sie das Terminal auf und geben Sie den Befehl ein:

csrutil disable

Danach starten wir das funktionierende System neu und installieren erst dann den Treiber und gleichzeitig das ATTO-Konfigurationsdienstprogramm (im Prinzip wird das Konfigurationsdienstprogramm nur für die Diagnose benötigt und ist im normalen Betrieb nicht erforderlich). Nebenbei bestätigen wir auf Nachfrage die ATTO-Berechtigung in den Systemeinstellungen. Nach der Installation können Sie erneut in die Wiederherstellungspartition starten und den Befehl eingeben

csrutil enable

Apple kümmert sich wieder um uns.

Jetzt haben wir eine treiberunterstützte Schnittstelle zu externen SAS-Geräten (oder FC, wenn ein FC-Konverter verwendet wurde). Aber wie arbeitet man mit Band auf der logischen Ebene?

Wie der unerfahrene, aber gebildete Geist weiß, unterstützt jedes Unix-kompatible System Bandlaufwerke auf der Ebene des Kernels und grundlegende Systemdienstprogramme, zu denen in erster Linie mt (Bandverwaltung) und tar (Archiver, der die Arbeit mit Archiven auf Band unterstützt) gehören. Doch was kann ein gebildeter Geist dazu sagen? Jedes Unix-kompatible System, außer macOS. Apple hat sich um uns gekümmert, indem es die Unterstützung für Bandgeräte aus seinem Code entfernt hat.

Aber ist es wirklich unmöglich, diesen Code durch die Portierung standardmäßiger Open-Source-Unix-Dienstprogramme auf macOS zurückzugeben? Die gute Nachricht ist, dass Tolis (auf das ich nicht verlinke) dies bereits in seinem Produkt Tolis Tape Tools getan hat. Die schlechte Nachricht ist, dass das genannte Unternehmen 399 US-Dollar kostet, um die Ergebnisse seiner Arbeit zu nutzen. Die Schätzungen dieser Tatsache können variieren, aber der Autor persönlich ist nicht bereit, jemandem 400 Dollar für einen Code zu zahlen, der größtenteils von ganz anderen Leuten geschrieben wurde und seit den 1970er Jahren offen im Einsatz ist, und deshalb stellt sich der Autor diese Frage für sich hält es für geschlossen. (Übrigens gibt es auf Github ein kostenloses Projekt, das in einem vagen Zustand aufgegeben wurde IOSCSITape zum gleichen Thema).

Glücklicherweise gibt es auf der Welt den IBM-Konzern, dessen kommerzieller Appetit in einem ganz anderen Ausmaß liegt und sich daher nicht in jeder Kleinigkeit manifestiert. Insbesondere wurde das Open-Source-Banddateisystem LTFS entwickelt, das auch für macOS vertrieben wird.

Der Nachteil hierbei ist, dass verschiedene Hersteller von Bandgeräten ihre eigenen Versionen von LTFS veröffentlichen, um ihre Geräte zu unterstützen. Da der Autor ein IBM-Bandlaufwerk verwendet, installierte er LTFS von IBM. Für Laufwerke von Drittanbietern sind möglicherweise eigene LTFS-Ports erforderlich. Und es gibt eine universelle Implementierung von openLTFS auf Github und Homebrew.

Für uns ist es wichtig, dass LTFS die Medienpartitionierungsfunktion nutzt und daher mit Geräten und Kassetten ab der LTO-5-Generation arbeiten kann.

In unserem Fall laden wir also die IBM Spectrum Archive Single Drive Edition für macOS von der IBM-Website herunter, die die LTFS-Implementierung enthält. Ohne Abenteuer installieren wir das Produkt mit einem eigenen Installer. Nebenbei installiert er auch das FUSE-Paket und muss in den Systemeinstellungen die Autorisierung eines intelligenten Programmierers namens Anatol Pomozov bestätigen, von dem in diesem Fall die gesamte IBM abhängt. Respekt und Respekt vor diesem Mann.

Es empfiehlt sich, die Zeile gleich in die Datei /Library/Frameworks/LTFS.framework/Versions/Current/etc/ltfs.conf.local zu schreiben:

Option Single-Drive sync_type=time@1

Dies gibt an, dass das Band standardmäßig gemountet ist und der Aufnahmepuffer nach 1 Minute Inaktivität zurückgesetzt wird (Standard ist 5 Minuten).

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

Endlich ist alles bereit zum Anschließen. Wir verbinden die Kette: Mac – T3/T2-Adapter – Thunderbolt-Kabel – ATTO-Konverter – SAS-Kabel – Bandlaufwerk (die Auswahl mehrerer Ports am Mac, Konverter und Laufwerk ist nicht wichtig). Schalten Sie den Konverter ein. Schalten Sie das Bandlaufwerk ein. Wir warten darauf, dass das Laufwerk die Initialisierung entsprechend seiner Anzeige abschließt.

Wir geben den Befehl:

ltfs -o device_list

Hurra! Wir erhalten (in der üblichen IBM-Diagnosemethode):

307 LTFS14000I LTFS startet, LTFS-Version 2.4.2.0 (10418), Protokollebene 2.
307 LTFS14058I LTFS-Formatspezifikation Version 2.4.0.
307 LTFS14104I Gestartet durch „ltfs -o device_list“.
307 LTFS14105I Diese Binärdatei wurde für Mac OS X erstellt.
307 LTFS14106I GCC-Version ist 4.2.1 kompatibel mit Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
307 LTFS17087I Kernel-Version: Darwin-Kernel-Version 19.4.0: Mittwoch, 4. März, 22:28:40 Uhr PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
307 LTFS17085I Plugin: „Iokit“-Band-Backend wird geladen.
Liste der Bandgeräte:.
Gerätename = 0, Hersteller-ID = IBM, Produkt-ID = ULT3580-TD5, Seriennummer = **********, Produktname = [ULT3580-TD5].

Legen Sie die Kassette ein, warten Sie, bis sie geladen und formatiert ist:

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

Hier gibt der Parameter -d die Laufwerksnummer an (immer Null, wenn es die einzige ist, kann aber in diesem Befehl nicht weggelassen werden), -n ist der Bandname (Sie können ihn weglassen) und der Parameter -r erfordert die Platzierung des Inhalts von .DS_Store-Dateien, die die Größe von 10 Megabyte nicht überschreiten, im Indexabschnitt (d. h. für Verzeichnisse) des Bandes anstelle des Datenabschnitts.

Im Bandlaufwerk begann ein mysteriöses Leben. Wir warten ein paar Minuten und erhalten folgende Antwort:

LTFS15000I Startet mkltfs, LTFS-Version 2.4.2.0 (10418), Protokollebene 2.
LTFS15041I Gestartet durch „mkltfs -d 0 -nTest -r size=10M/name=.DS_Store“.
LTFS15042I Diese Binärdatei wurde 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: Mittwoch, 4. März, 22:28:40 Uhr PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
LTFS15003I Formatierungsgerät „0“.
LTFS15004I LTFS-Volume-Blockgröße: 524288.
LTFS15005I Indexpartitionsplatzierungsrichtlinie: size=10M/name=.DS_Store.

LTFS11337I Index-Dirty-Flag aktualisieren (1) – NO_BARCODE (0x0x1021081e0).
LTFS17085I-Plugin: „Iokit“-Band-Backend wird geladen.
LTFS30810I Öffnen eines Geräts über den iokit-Treiber (0).
LTFS30814I Anbieter-ID ist IBM.
LTFS30815I Produkt-ID ist „ULT3580-TD5“.
LTFS30816I Firmware-Revision ist H976.
LTFS30817I Die Seriennummer des Laufwerks ist **********.
LTFS17160I Die maximale Geräteblockgröße beträgt 1048576.
LTFS11330I Kartusche wird geladen.
LTFS30854I Der logische Blockschutz ist deaktiviert.
LTFS11332I Laden erfolgreich.
LTFS17157I Ändern der Laufwerkseinstellung in den Write-Anywhere-Modus.
LTFS15049I Überprüfen des Mediums (Mount).
LTFS30854I Der logische Blockschutz ist deaktiviert.
LTFS15010I Datenpartition b auf SCSI-Partition 1 wird erstellt.
LTFS15011I Indexpartition a auf SCSI-Partition 0 wird erstellt.
LTFS17165I Zurücksetzen des Kapazitätsanteils des Mediums.
LTFS11097I Partitionierung des Mediums.
LTFS11100I Label wird in Partition geschrieben. b.
LTFS11278I Index wird in Partition b geschrieben.
LTFS30808I READ_ATTR (0x8c) gibt -20501 zurück.
LTFS30865I READ_ATTR gibt ein ungültiges Feld in CDB (-20501) 0 zurück.
LTFS30836I Attribut kann nicht gelesen werden (-20501).
LTFS11336I Das Attribut ist nicht vorhanden. Ignorieren Sie den erwarteten Fehler.
LTFS17235I Index von NO_BARCODE wird in b geschrieben (Grund: Format, 0 Dateien) **********.
LTFS17236I Index von NO_BARCODE geschrieben (b, **********).
LTFS11337I Index-Dirty-Flag aktualisieren (0) – NO_BARCODE (0x0x1021081e0).
LTFS11100I Beschriftung wird in Partition a geschrieben.
LTFS11278I Index wird in Partition a geschrieben.
LTFS30808I READ_ATTR (0x8c) gibt -20501 zurück.
LTFS30865I READ_ATTR gibt ein ungültiges Feld in CDB (-20501) 0 zurück.
LTFS30836I Attribut kann nicht gelesen werden (-20501).
LTFS11336I Das Attribut ist nicht vorhanden. Ignorieren Sie den erwarteten Fehler.
LTFS17235I Schreibe den Index von NO_BARCODE in (Grund: Format, 0 Dateien) 9068025555.
LTFS17236I Index von NO_BARCODE geschrieben (a, **********).
LTFS15013I Volume UUID is: 3802a70d-bd9f-47a6-a999-eb74ffa67fc1.

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

Montieren Sie das formatierte Band:

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

Wir erhalten noch ein paar Minuten Laufwerksbetrieb und Diagnose:

307 LTFS14000I LTFS startet, LTFS-Version 2.4.2.0 (10418), Protokollebene 2.
307 LTFS14058I LTFS-Formatspezifikation Version 2.4.0.
307 LTFS14104I Gestartet von „ltfs /Volumes/LTFS/“.
307 LTFS14105I Diese Binärdatei wurde für Mac OS X erstellt.
307 LTFS14106I GCC-Version ist 4.2.1 kompatibel mit Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
307 LTFS17087I Kernel-Version: Darwin-Kernel-Version 19.4.0: Mittwoch, 4. März, 22:28:40 Uhr PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
307 LTFS14063I Der Synchronisierungstyp ist „Zeit“, die Synchronisierungszeit beträgt 60 Sekunden.
307 LTFS17085I Plugin: „Iokit“-Band-Backend wird geladen.
307 LTFS17085I Plugin: „Unified“ iosched Backend wird geladen.
307 LTFS14095I Stellen Sie den Schreibmodus des Bandgeräts ein, um das Auswerfen der Kassette zu verhindern.
307 LTFS30810I Öffnen eines Geräts über den iokit-Treiber (0).
307 LTFS30814I Anbieter-ID ist IBM.
307 LTFS30815I Produkt-ID ist „ULT3580-TD5“.
307 LTFS30816I Firmware-Revision ist H976.
307 LTFS30817I Die Seriennummer des Laufwerks ist **********.
307 LTFS17160I Die maximale Geräteblockgröße beträgt 1048576.
307 LTFS11330I Patrone wird geladen.
307 LTFS30854I Der logische Blockschutz ist deaktiviert.
307 LTFS11332I Laden erfolgreich.
307 LTFS17157I Ändern der Laufwerkseinstellung in den Write-Anywhere-Modus.
307 LTFS11005I Das Volume wird gemountet.
307 LTFS30854I Der logische Blockschutz ist deaktiviert.
307 LTFS17227I Bandattribut: Anbieter = IBM.
307 LTFS17227I Bandattribut: Anwendungsname = LTFS.
307 LTFS17227I Bandattribut: Anwendungsversion = 2.4.2.0.
307 LTFS17227I Bandattribut: Medium Label =.
307 LTFS17228I Bandattribut: Textlokalisierungs-ID = 0x81.
307 LTFS17227I Bandattribut: Barcode =.
307 LTFS17227I Bandattribut: Anwendungsformatversion = 2.4.0.
307 LTFS17228I Bandattribut: Volume-Sperrstatus = 0x00.
307 LTFS17227I Bandattribut: Medienpoolname =.
307 LTFS14111I Ersteinrichtung erfolgreich abgeschlossen.
307 LTFS14112I Rufen Sie den Befehl „mount“ auf, um das Ergebnis der endgültigen Einrichtung zu überprüfen.
307 LTFS14113I Der angegebene Bereitstellungspunkt wird aufgelistet, wenn dies erfolgreich war.

Und hier ist es, unser Menüband auf dem Desktop mit dem Namen Test(ltfs)! Das unbenannte Band erhält den Namen OSXFUSE Volume 0 (ltfs).

Jetzt können Sie damit arbeiten.

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

Im Allgemeinen müssen Sie bedenken, dass es ratsam ist, die Anzeige des Inhalts von Bandverzeichnissen in den Finder-Fenstern nicht zu oft zu verwenden, da dies für LTFS ein unglaublich kostspieliger Vorgang ist. Es ist jedoch besser, mit Terminalbefehlen zu arbeiten oder einfach zurückzusetzen Kopieren Sie das Backup-Verzeichnis in großen Mengen auf das Band, wie im Fenster oben gezeigt.

Übrigens gibt es ein speziell geschriebenes IBM-Dienstprogramm ltfs_copy und seine Klone, die für ein effizienteres Kopieren zwischen Band und Festplatte konzipiert sind, aber bisher konnte der Autor sie mit einer oberflächlichen Suche nicht im öffentlichen Bereich finden.

Sie können das Band mit dem folgenden Befehl aushängen:

umount /Volumes/LTFS

oder werfen Sie es einfach in den Müll.

Tatsächlich gibt es in der Natur eine Art grafische Shell für macOS, die diese Aktionen erleichtert, aber sollten wir nach solchen Perversionen Angst haben, ein paar Zeilen in das Terminal einzugeben?

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

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

Source: habr.com

Kommentar hinzufügen