Het onderwerp van dit artikel is het verbinden van externe apparaten met een Mac via de interfaces SAS, Fibre Channel (FC), eSATA. Laten we meteen duidelijk zijn: er is een gebruikelijke weg voor het oplossen van de toegang tot dergelijke apparaten: bouw een goedkope pc, steek er een HBA SAS of FC controllerkaart in (bijvoorbeeld een eenvoudige LSI-adapter), sluit je apparaten aan op die controller, installeer een Linux-systeem op de pc en werk vanaf de Mac via het netwerk. Maar dat is banaliteit en niet zo interessant. We kiezen voor de hardcore route en zullen onze apparaten aansluiten. direct op de Mac.
Wat hebben we hiervoor nodig:
– een behoorlijk bedrag aan geld om nieuwe hardware aan te schaffen, of een beetje geluk op eBay (waar je met een beetje moeite de benodigde hardware van vorige generaties kunt kopen voor wel 10 keer minder dan in de prijslijst);
– dit artikel.
Om met magnetische tape te werken (momenteel bijna overal vertegenwoordigd door het LTO-formaat), moet je beschikken over een tape-drive (streamer) of een LTO-tapebibliotheek. Dit is een vrij dure aanschaf (vanaf honderden duizenden roebels), maar redelijk geprijsd op de tweedehandsmarkt. Aangezien de generaties LTO ongeveer elke twee jaar veranderen en de compatibiliteit beperkt is tot twee generaties, is de tweedehandsmarkt voldoende verzadigd met werkende apparaten van vier jaar en ouder, dat wil zeggen van de vorige generatie en ouder. Als je een nieuw apparaat koopt voor commerciële doeleinden, dan begrijp je waarschijnlijk wel waarom je het nodig hebt. Als je het voor thuis en gezin wilt kopen, kun je deze optie overwegen als een manier om informatie te archiveren (aangezien de media zelf zeer goedkoop zijn per 1 gigabyte).
Vanaf generatie LTO-5 (en deels LTO-4) worden apparaten voor het werken met magnetische tape hardwarematig verbonden met de computer via de SAS of FC interface (er zijn meestal twee uitvoeringen van elk apparaat).
Aan de andere kant biedt Apple ons in onze Mac de USB-C interface (die werkt via de USB, Thunderbolt 3 of DisplayPort protocollen), soms de Ethernet interface, evenals de speciale Thunderbolt 3 – Thunderbolt 2 en Thunderbolt – FireWire 800 adapters.
Een uitzichtloze situatie? Niet helemaal. Gelukkig kan de Thunderbolt-bus werken in PCIe-modus en biedt het de mogelijkheid om PCIe-kaarten aan te sluiten zoals ze direct in de behuizing van de computer zouden zijn geïnstalleerd. Hierdoor zijn alle uitbreidingen van de hardwareconfiguratie van de Mac mogelijk, mits er een geschikte adapter en drivers zijn.
Een conceptueel eenvoudige manier om het probleem op te lossen is een externe behuizing voor PCIe-adapters met een Thunderbolt-interface (PCIe-kaartuitbreidingssysteem), waarin een SAS- of FC-controller (Host bus adapter, HBA) kan worden geïnstalleerd. Dergelijke behuizingen worden geproduceerd door en enkele anderen. Er is echter een nuance: niet elke controller is geschikt, alleen die met een driver voor macOS. Dergelijke kaarten zijn er niet veel, en de goedkoopste en populairste (zoals die van LSI) behoren daar niet toe. Gelukkig heeft Sonnet de moeite genomen om een van PCIe-kaarten met verschillende besturingssystemen via de Thunderbolt-interface samen te stellen.
Een andere oplossingsmethode is de aankoop van een kant-en-klare Thunderbolt-interface-converter – SAS of Thunderbolt – FC, die in wezen al een kant-en-klare reeks is van een behuizing en een controller. De meest bekende firma op dit gebied is , maar er zijn ook producten van andere bedrijven te vinden.
Laten we opmerken dat niet alle SAS- en FC-controllers zijn goedgekeurd volgens de LTO-norm, omdat dit op zich al geld kost. Sommige fabrikanten vermelden expliciet dat het gebruik van hun controllers met tape-opslag niet is voorzien.
Voor een vollediger beeld merken we op dat het bedrijf mLogic een , dat een IBM LTO-8-opslag in een externe behuizing vertegenwoordigt, heeft uitgebracht, waarin meteen een SAS naar Thunderbolt 3-converter is geïntegreerd. Dit is echter nog een exotischere zaak dan alles wat hierboven is beschreven, vooral in onze regio. Ik betwijfel of dit apparaat zelfs legaal naar Rusland kan worden geïmporteerd (LTO-opslag bevat cryptografische middelen, en fabrikanten zoals IBM en HP verkrijgen om deze reden een vergunning van de FSB voor de import van elk model).
Laten we nu een specifiek hardwarepakket als voorbeeld bekijken, dat de auteur heeft verworven na enkele succesvolle aankopen, maar het algemene principe moet voor alle opties behouden blijven.
Dus hebben we de volgende apparatuur om met tape te werken:
– Apple Mac mini 2018 met macOS 10.15 Catalina, uitgerust met USB-C poorten die Thunderbolt 3 ondersteunen;
– Apple Thunderbolt 3 / Thunderbolt 2 adapter;
– Apple Thunderbolt 2 kabel;
– ATTO ThunderLink SH 1068 interface converter (2*Thunderbolt / 2*SAS-2);
– SAS SFF-8088 – SFF-8088 kabel;
– LTO-5 tape drive IBM TS2350;
– LTO-5 cartridges, reinigingscartridge.
Laten we, zoals men zegt, met al deze rommel proberen op te stijgen.
We downloaden de laatste versie van de ThunderLink SH 1068 driver van de ATTO-website (blijkbaar is deze samengevoegd met de driver voor de SH 2068 en bevindt deze zich in de sectie 2068, wat alleen in het archief zelf wordt vermeld) en de ATTO configuratietool.

De driver moet uiteraard geïnstalleerd worden. Voor dergelijke acties adviseert de auteur altijd een snapshot van het APFS-bestandssysteem van de opstartschijf te maken met het commando
tmutil localsnapshotof een back-up van de opstartschijf te maken, als deze HFS+ is. Je weet maar nooit. Daarna kan vanuit de snapshot eenvoudig worden teruggekeerd.
Vervolgens zal een onervaren, maar oplettende geest ongetwijfeld geneigd zijn om de ATTO-instructies voor het installeren van de driver zorgvuldig door te lezen en deze uit te voeren. Resultaat – tada! – een besturingssysteem dat vastloopt tijdens het opstarten. Hier kunnen we een snapshot goed gebruiken, waaruit we kunnen herstellen door Time Machine vanaf de herstelpartitie te starten, of vanuit dezelfde herstelpartitie kunnen we handmatig de problematische kext uit de kernel extensiemap verwijderen (de auteur raadt dit in het algemeen niet aan).
Waarom gebeurt dit? Omdat Apple voor ons heeft gezorgd. In de laatste versies van macOS kun je niet zomaar vreemde code in het opstartproces injecteren. Goede programmeurs van Apple hebben dergelijk destructief gedrag geblokkeerd. Trouwens, ze hebben het half geblokkeerd; wanneer de driver wacht, wordt hij wel geïnjecteerd, maar de driver zelf niet, zodat alles gewoon vastloopt.
Wat moet een ervaren geest doen voordat hij de driver installeert? In de eerste plaats het commando geven:
csrutil statusAls we als antwoord krijgen:
Status van System Integrity Protection: ingeschakeld.
betekent dit dat de goede programmeurs van Apple om ons geven, dus zal niets lukken totdat we hun geweldige bescherming uitschakelen. Hiervoor herstarten we naar de herstelpartitie (⌘R), openen we de terminal en geven we het commando:
csrutil disableDaarna herstarten we ons in het werkingssysteem en installeren we de driver, evenals het configuratiehulpprogramma ATTO (in principe is het configuratiehulpprogramma alleen nodig voor diagnose en is het niet vereist voor normaal gebruik). Tijdens het proces, wanneer gevraagd, bevestigen we de autorisatie van het bedrijf ATTO in de systeembestellingen. Na de installatie kunnen we opnieuw opstarten in de herstelpartitie en het commando geven
csrutil enableApple zorgt opnieuw voor ons.
Nu hebben we een ondersteunde driverinterface voor externe SAS-apparaten (of FC, als er een FC-converter was gebruikt). Maar hoe werken we op logisch niveau met tapes?
Zoals bekend aan een onervaren maar belezen geest, ondersteunt elk Unix-compatibel systeem tape-opslag op kernniveau en via essentiële systeemhulpmiddelen, waaronder mt (beheer van de tape-unit) en tar (een archiveringsprogramma dat ondersteuning biedt voor het werken met archieven op tape). Maar wat verduidelijkt een doorgewinterd intellect? Elk Unix-compatibel systeem, behalve macOS. Apple heeft voor ons gezorgd door de ondersteuning van tape-apparaten uit zijn code te verwijderen.
Maar is het dan niet mogelijk om deze code terug te brengen door standaard open-source Unix-hulpmiddelen naar macOS te porteren? Het goede nieuws is dat het bedrijf Tolis dit al heeft gedaan (de link naar hen geef ik niet) in hun product Tolis Tape Tools. Het slechte nieuws is dat het gebruik van hun resultaten wordt beoordeeld op 399 dollar. De meningen over dit feit kunnen verschillen, maar persoonlijk ben ik niet bereid om iemand 400 dollar te betalen voor code die grotendeels door andere mensen is geschreven en sinds de jaren '70 openbaar beschikbaar is, en daarom beschouw ik deze kwestie als afgesloten. (Overigens is er een verwaarloosd vrij project op GitHub over hetzelfde onderwerp).
Gelukkig bestaat er een bedrijf genaamd IBM, wiens commerciële verlangens van een heel andere omvang zijn en daarom niet in kleine zaken tot uiting komen. In het bijzonder heeft het een tape-bestandssysteem LTFS ontwikkeld met open source-code, dat ook voor macOS wordt verspreid.
Er is een nuance, namelijk dat verschillende fabrikanten van tape-apparaten hun eigen versies van LTFS uitbrengen, die compatibel zijn met hun apparaten. Aangezien de auteur een IBM tape drive gebruikt, heeft hij LTFS van IBM geïnstalleerd. Voor apparaten van andere fabrikanten zijn mogelijk hun eigen LTFS-implementaties nodig. Er is een universele openLTFS-implementatie beschikbaar op GitHub en Homebrew.
Voor ons is het belangrijk dat LTFS gebruikmaakt van de functie voor het partitioneren van media, waardoor het kan werken met apparaten en cartridges vanaf de LTO-5 generatie.
In ons geval downloaden we van de IBM-website het product IBM Spectrum Archive Single Drive Edition voor macOS, dat de LTFS-implementatie bevat. We installeren het probleemloos met de eigen installer. Tijdens het proces wordt ook het FUSE-pakket geïnstalleerd, waarbij in de systeeminstellingen toestemming moet worden gegeven voor de autorisatie van een slimme programmeur genaamd Anatol Pomozov, van wie in dit geval een hele IBM afhankelijk is. Respect en waardering voor deze persoon.
Het is raadzaam om alvast de regel in het bestand /Library/Frameworks/LTFS.framework/Versions/Current/etc/ltfs.conf.local te zetten:
option single-drive sync_type=time@1
wat de standaardmontage van de tape instelt met het wissen van de schrijfbuffer na 1 minuut inactiviteit (standaard is 5 minuten).

Als alles klaar is voor verbinding, sluiten we de keten aan: Mac – T3/T2-adapter – Thunderbolt-kabel – ATTO-converter – SAS-kabel – tape drive (keuze uit verschillende poorten op de Mac, converter en drive is niet belangrijk). We schakelen de voeding van de converter in. We schakelen de voeding van de tape drive in. We wachten tot de initialisatie van de drive is voltooid volgens de indicatie.
We geven de volgende opdracht:
ltfs -o device_listHoera! We krijgen (op de gebruikelijke diagnostische manier van IBM):
307 LTFS14000I LTFS start, LTFS versie 2.4.2.0 (10418), loglevel 2.
307 LTFS14058I LTFS Format Specificatie versie 2.4.0.
307 LTFS14104I Gelaunched door «ltfs -o device_list».
307 LTFS14105I Dit binaire bestand is gebouwd voor Mac OS X.
307 LTFS14106I GCC versie is 4.2.1 Compatibel met Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
307 LTFS17087I Kernelversie: Darwin Kernel Versie 19.4.0: Wo Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
307 LTFS17085I Plugin: Laden van «iokit» tape backend.
Tape-apparatenlijst:
Apparaatnaam = 0, Vendor ID = IBM, Product ID = ULT3580-TD5, Serienummer = **********, Productnaam = [ULT3580-TD5].
We plaatsen de cartridge, wachten op de laadtijd en formatteren:
mkltfs -d 0 -nTest -r "size=10M/name=.DS_Store"Hier geeft de parameter -d het schijfnummer aan (altijd nul als het de enige is, maar kan niet weggelaten worden in dit commando), -n is de naam van de tape (kan weggelaten worden), en de parameter -r vereist dat de inhoud van .DS_Store-bestanden, die niet groter zijn dan 10 megabyte, in het indexgedeelte (dat wil zeggen bedoeld voor catalogi) van de tape wordt geplaatst in plaats van in het datagedeelte.
Er begon een mysterieuze levensstijl in de bandopslag. We wachten een paar minuten en krijgen als reactie:
LTFS15000I Starten mkltfs, LTFS versie 2.4.2.0 (10418), logniveau 2.
LTFS15041I Gelanceerd door «mkltfs -d 0 -nTest -r size=10M/name=.DS_Store».
LTFS15042I Dit binaire bestand is gemaakt voor Mac OS X.
LTFS15043I GCC versie is 4.2.1 Compatibel met Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
LTFS17087I Kernelversie: Darwin Kernel Versie 19.4.0: Wo Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
LTFS15003I Formatteren van het apparaat ‘0’.
LTFS15004I LTFS volume blokgrootte: 524288.
LTFS15005I Index-partitie plaatsingsbeleid: size=10M/name=.DS_Store.LTFS11337I Bijwerken index-vuilvlag (1) — NO_BARCODE (0x0x1021081e0).
LTFS17085I Plugin: Laad «iokit» tape backend.
LTFS30810I Een apparaat openen via iokit-stuurprogramma (0).
LTFS30814I Leverancier ID is IBM.
LTFS30815I Product ID is ‘ULT3580-TD5 ‘.
LTFS30816I Firmwareversie is H976.
LTFS30817I Schijfserienummer is **********.
LTFS17160I Maximale blokgrootte van het apparaat is 1048576.
LTFS11330I Laadcartridge.
LTFS30854I Logische blokbeveiliging is uitgeschakeld.
LTFS11332I Laden succesvol.
LTFS17157I De schrijfinstelling van de schijf wijzigen naar schrijf-waar-dan-ook modus.
LTFS15049I Controleer de medium (mount).
LTFS30854I Logische blokbeveiliging is uitgeschakeld.
LTFS15010I Maak gegevenspartitie b aan op SCSI-partitie 1.
LTFS15011I Maak indexpartitie a aan op SCSI-partitie 0.
LTFS17165I De capaciteitverhouding van het medium resetten.
LTFS11097I Partitioneren van het medium.
LTFS11100I Label schrijven naar partitie b.
LTFS11278I Index schrijven naar partitie b.
LTFS30808I READ_ATTR (0x8c) retourneert -20501.
LTFS30865I READ_ATTR retourneert Ongeldig Veld in CDB (-20501) 0.
LTFS30836I Kan attribuut niet lezen (-20501).
LTFS11336I Het attribuut bestaat niet. Negeer de verwachte fout.
LTFS17235I Index van NO_BARCODE naar b schrijven (Reden: Formaat, 0 bestanden) **********.
LTFS17236I Index van NO_BARCODE geschreven (b, **********).
LTFS11337I Bijwerken index-vuilvlag (0) — NO_BARCODE (0x0x1021081e0).
LTFS11100I Label schrijven naar partitie a.
LTFS11278I Index schrijven naar partitie a.
LTFS30808I READ_ATTR (0x8c) retourneert -20501.
LTFS30865I READ_ATTR retourneert Ongeldig Veld in CDB (-20501) 0.
LTFS30836I Kan attribuut niet lezen (-20501).
LTFS11336I Het attribuut bestaat niet. Negeer de verwachte fout.
LTFS17235I Index van NO_BARCODE naar a schrijven (Reden: Formaat, 0 bestanden) 9068025555.
LTFS17236I Index van NO_BARCODE geschreven (a, **********).
LTFS15013I Volume UUID is: 3802a70d-bd9f-47a6-a999-eb74ffa67fc1.LTFS15019I Volume capaciteit is 1425 GB.
LTFS30854I Logische blokbeveiliging is uitgeschakeld.
LTFS15024I Medium succesvol geformatteerd.
We monteren de geformatteerde tape:
sudo mkdir /Volumes/LTFS
sudo chmod 777 /Volumes/LTFS/
sudo ltfs /Volumes/LTFSWe krijgen weer een paar minuten van de opslag, diagnose:
307 LTFS14000I LTFS start, LTFS versie 2.4.2.0 (10418), loglevel 2.
307 LTFS14058I LTFS Format Specificatie versie 2.4.0.
307 LTFS14104I Gelanceerd door «ltfs /Volumes/LTFS/».
307 LTFS14105I Dit binaire bestand is gebouwd voor Mac OS X.
307 LTFS14106I GCC versie is 4.2.1 Compatibel met Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
307 LTFS17087I Kernelversie: Darwin Kernel Versie 19.4.0: Wo Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
307 LTFS14063I Sync-type is «tijd», Sync-tijd is 60 sec.
307 LTFS17085I Plugin: Laden van «iokit» tape backend.
307 LTFS17085I Plugin: Laad «unified» iosched backend.
307 LTFS14095I Stel de tape-apparaat schrijfen-waar-dan-ook modus in om cartridge-ejectie te voorkomen.
307 LTFS30810I Een apparaat openen via iokit-stuurprogramma (0).
307 LTFS30814I Leverancier ID is IBM.
307 LTFS30815I Product ID is ‘ULT3580-TD5 ‘.
307 LTFS30816I Firmwareversie is H976.
307 LTFS30817I Schijfserienummer is **********.
307 LTFS17160I Maximale blokgrootte van het apparaat is 1048576.
307 LTFS11330I Laadcartridge.
307 LTFS30854I Logische blokbeveiliging is uitgeschakeld.
307 LTFS11332I Laden succesvol.
307 LTFS17157I De schrijfinstelling van de schijf wijzigen naar schrijf-waar-dan-ook modus.
307 LTFS11005I Volume wordt gemonteerd.
307 LTFS30854I Logische blokbeveiliging is uitgeschakeld.
307 LTFS17227I Tape-attribuut: Leverancier = IBM.
307 LTFS17227I Tape-attribuut: Applicatienaam = LTFS.
307 LTFS17227I Tape-attribuut: Applicatieversie = 2.4.2.0.
307 LTFS17227I Tape-attribuut: Mediumlabel =.
307 LTFS17228I Tape-attribuut: Tekstlokalisatie-ID = 0x81.
307 LTFS17227I Tape-attribuut: Barcode =.
307 LTFS17227I Tape-attribuut: Applicatieformaatversie = 2.4.0.
307 LTFS17228I Tape-attribuut: Volume vergrendelstatus = 0x00.
307 LTFS17227I Tape-attribuut: Naam mediagroep =.
307 LTFS14111I Initiële setup succesvol voltooid.
307 LTFS14112I Voer het commando 'mount' uit om het resultaat van de definitieve setup te controleren.
307 LTFS14113I Gespecificeerd mountpunt wordt vermeld als het is gelukt.
En daar is onze tape op het bureaublad, met de naam Test(ltfs)! De naamloze tape krijgt de naam OSXFUSE Volume 0 (ltfs).
Nu kan er mee gewerkt worden.

Het is eigenlijk goed om te bedenken dat het beter is om niet te veel door de inhoud van de mappen op de tape te bladeren in Finder, omdat dit een ongelooflijk kostbare operatie voor LTFS is. Het is beter om met terminalcommando's te werken of gewoon de te back-uppen map als geheel naar de tape te verplaatsen, zoals hierboven weergegeven.
Er bestaat trouwens een speciaal geschreven IBM-hulpprogramma ltfs_copy en zijn kloons, bedoeld voor efficiënter kopiëren tussen tape en schijf, maar tot nu toe is het de auteur niet gelukt deze openlijk te vinden bij een oppervlakkige zoekopdracht.
Om de tape te ontkoppelen, kunt u het commando gebruiken:
umount /Volumes/LTFSof gewoon naar de prullenbak slepen.
Er zijn trouwens grafische interfaces voor macOS voor het vergemakkelijken van deze acties, maar na zulke fratsen zouden we niet bang moeten zijn om een paar regels in de terminal in te voeren?
Als neveneffect krijgen we de mogelijkheid om externe eSATA-schijven aan te sluiten via de SAS/4*eSATA-kabel.

Bron: habr.com
