Temaet for denne artikel er tilslutning af eksterne enheder til Mac'en via SAS, Fibre Channel (FC), eSATA. Lad os straks sige, at der er en sund mÄde at lÞse opgaven med adgang til sÄdanne enheder: sammensÊtte en billig PC, sÊtte et HBA SAS eller FC controllerkort i (for eksempel det enkleste LSI-adapter), tilslutte dine enheder til denne controller, installere et hvilket som helst Linux-system pÄ PC'en og arbejde med Mac'en over netvÊrket. Men det er banalt og ikke interessant. Vi vÊlger den hardcore vej og tilslutter vores enheder direkte til Mac'en.
Hvad har vi brug for:
â en rimelig sum penge til kĂžb af nyt udstyr, eller lidt held pĂ„ auktioner som eBay (hvor du, med lidt indsats, kan kĂžbe det nĂždvendige udstyr fra tidligere generationer op til 10 gange billigere end pĂ„ prislister);
â denne artikel.
For at arbejde med magnetiske bÄnd (som i Þjeblikket stort set er reprÊsenteret ved LTO-formatet) er det nÞdvendigt at have en bÄndoptager (streamer) eller en LTO-bÄndbibliotek. Dette er en ret dyr enhed ved fÞrste kÞb (fra hundrede tusinde rubler), men det er rimeligt prissat ved kÞb af brugt. Da generationer af LTO skifter omtrent hvert andet Är, og kompatibiliteten er begrÊnset til to generationer, er det sekundÊre marked tilstrÊkkeligt mÊttet med funktionelle enheder, der er fire Är gamle eller Êldre, dvs. fra den forrige generation og derover. Hvis du kÞber en ny enhed til kommercielle formÄl, ved du godt, hvorfor du har brug for den. Hvis du Þnsker at kÞbe til hjemmet og familien, kan du overveje denne mulighed som en mÄde at arkivere information pÄ (da selve medierne er meget billige pr. gigabyte).
Fra og med LTO-5 generationen (og delvist LTO-4) tilsluttes enheder til arbejde med magnetisk bÄnd fysisk til computeren via SAS eller FC interface (der findes normalt to varianter af hver enhed)
PĂ„ den anden side tilbyder Apple os venligt USB-C interface i vores Mac (som fungerer via USB, Thunderbolt 3 eller DisplayPort protokoller), nogle gange Ethernet interface samt specialdesignede Thunderbolt 3 â Thunderbolt 2 og Thunderbolt â FireWire 800-adaptere.
Er du i en blindgyde? Ikke helt. Heldigvis kan Thunderbolt-bussen fungere i PCIe-tilstand, hvilket giver mulighed for at tilslutte PCIe-kort, som om de var installeret direkte i computerens kabinet. Dette gÞr enhver hardwarekonfiguration af Mac muligt, sÄ lÊnge der er en passende adapter og drivere.
Det konceptuelt simpleste mÄde at lÞse problemet pÄ er en ekstern boks til PCIe-adaptere med Thunderbolt-interface (PCIe card expansion system), hvor man kan installere en SAS- eller FC-controller (Host bus adapter, HBA). For eksempel producerer firmaet og nogle andre. Her er der en nuance: ikke alle controllere passer til os, kun dem der har en driver til macOS. Der findes faktisk ikke mange sÄdanne kort, og de billigste og mest populÊre (for eksempel de samme LSI) er ikke blandt dem. Heldigvis har firmaet Sonnet besvÊret sig med at lave en over PCIe-kort med forskellige operativsystemer gennem Thunderbolt-interface.
En anden lÞsning er at kÞbe en fÊrdig Thunderbolt-SAS eller Thunderbolt-FC interface-konverter, som i bund og grund er en fÊrdig samling af en boks og controller. Den mest kendte i denne retning er firmaet , men der findes ogsÄ produkter fra andre firmaer.
Vi skal bemÊrke, at ikke alle SAS- og FC-controllere er certificeret til at overholde LTO-standarden, da dette i sig selv koster penge. Nogle producenter skriver direkte, at deres controllere ikke er beregnet til arbejde med bÄndlagringsenheder.
For at fuldende billedet skal vi nÊvne, at firmaet mLogic producerer , som er en IBM LTO-8-lagringsenhed i et eksternt kabinet, hvor der straks er integreret en SAS-til-Thunderbolt 3-konverter. Dette er imidlertid noget endnu mere eksotisk end det ovenstÄende, isÊr mÄlt pÄ vores hjemland. Jeg tvivler pÄ, at det er muligt at importere denne enhed lovligt til Rusland (LTO-lagringsenheder indeholder kryptografiske midler, og producenter som IBM og HP modtager af denne grund en tilladelse fra FSB til import af hver model).
DernÊst vil vi se pÄ et specifikt udstyrssÊt som et eksempel, som forfatteren er blevet ejer af som resultat af flere heldige kÞb, men det generelle princip bÞr gÊlde for alle varianter.
SÄ vi har fÞlgende udstyr til arbejde med bÄnd:
â Apple Mac mini 2018 med macOS 10.15 Catalina, der har USB-C porte med Thunderbolt 3 support;
â 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 bĂ„nddrev IBM TS2350;
â LTO-5 kassette, rengĂžringskassette.
Nu, som man siger, med alt det her, vil vi forsĂžge at flyve.
Vi downloader den nyeste version af ThunderLink SH 1068 driveren fra ATTOs hjemmeside (tilsyneladende er den kombineret med driveren til SH 2068 og findes under sektion 2068, hvilket kun stÄr skrevet i selve arkivet med driveren) samt konfigurationsvÊrktÞjet ATTO.

Driveren skal naturligvis installeres. FÞr sÄdanne handlinger anbefaler forfatteren altid at tage et snapshot af APFS filsystemet pÄ boot disken med fÞlgende kommando:
tmutil localsnapshoteller en sikkerhedskopiering af boot disken, hvis den bruger HFS+. Man ved aldrig. SĂ„ bliver det nemt at rense fra snapshotet.
Derefter vil en uerfaren, men omhyggelig og klog bruger uden tvivl lĂŠse ATTOs installationsvejledning af driveren grundigt og fĂžlge den. Resultatet â tada! â fĂ„r vi et operativsystem, der hĂŠnger under opstart. Her kan vi fĂ„ brug for snapshotet, hvorfra vi kan gendanne ved at starte Time Machine fra gendannelsespartitionen, eller fra den samme gendannelsespartition kan vi manuelt slette den problematiske kext fra kernel extensions mappen (forfatteren anbefaler generelt ikke at gĂžre det).
Hvorfor sker dette? Fordi Apple har sĂžrget for os. I de seneste versioner af macOS kan man ikke bare tage og indsĂŠtte tredjepartskode i opstartprocessen. Gode programmĂžrer fra Apple har blokeret denne destruktive adfĂŠrd. Mere prĂŠcist, de har blokeret det halvt, hvor driverens venten bliver injiceret, men selve driveren ikke, og derfor hĂŠnger alt simpelthen.
Hvad skal en kyndig bruger gĂžre fĂžr installationen af driveren? FĂžrst give kommandoen:
csrutil statusHvis vi fÄr fÞlgende svar:
System Integrity Protection status: enabled.
sĂ„ betyder det, at de gode programmĂžrer fra Apple tager sig af os, sĂ„ vi fĂ„r ikke noget til at fungere, fĂžr vi slukker deres fremragende beskyttelse. For at gĂžre dette genstarter vi i gendannelsespartition (âR), Ă„bner terminalen og giver kommandoen:
csrutil disableHereafter, we restart into the working system, and only then do we install the driver, as well as the ATTO configuration utility (in principle, the configuration utility is only needed for diagnostics and is not required for normal operation). Along the way, when prompted, we confirm the authorization for the ATTO company in the system settings. After installation, we can again restart into the recovery partition and issue a command
csrutil enableApple is taking care of us again.
Now we have a supported driver interface to external SAS devices (or FC if a FC converter were used). But how do we interact with the tape at the logical level?
As is known to an uninformed yet learned mind, any Unix-compatible system supports tape drives at the kernel and basic system utility level, primarily involving mt (tape management) and tar (an archiver with support for tape archives). However, what will a savvy mind clarify about this? Any Unix-compatible system, except for macOS.Apple has taken care of us by removing tape device support from its code.
But canât we restore this code by porting standard open-source Unix utilities to macOS? The good news is that Tolis has already done this (I wonât provide the link) in its Tolis Tape Tools product. The bad news is that the company values the use of its work at 399 USD. Opinions on this fact may vary, but personally, the author is not prepared to pay someone 400 bucks for code mostly written by entirely different people and available for public use since the 1970s, thus the author considers this matter closed. (By the way, thereâs an abandoned project on GitHub on the same topic).
Fortunately, there exists the corporation IBM, whose commercial appetites are of a completely different scale, and thus they do not manifest in every trifle. In particular, they have developed the LTFS tape file system with open source, distributed among other platforms including macOS.
Der er en nuance, der indebÊrer, at forskellige producenter af bÄndanlÊg udgiver deres egne versioner af LTFS, der understÞtter deres enheder. Da forfatteren bruger en IBM bÄndlagring, har han ogsÄ installeret LTFS fra IBM. For lagringsenheder fra andre virksomheder kan det vÊre nÞdvendigt at bruge deres egne LTFS-porte. Der findes en universel implementering, openLTFS, pÄ GitHub og Homebrew.
For os er det vigtigt, at LTFS bruger en partitioneringsfunktion til medier, og derfor kan det arbejde med enheder og kassetter, der starter fra LTO-5 generationen.
I vores tilfÊlde downloader vi IBM Spectrum Archive Single Drive Edition produktet fra IBMs hjemmeside til macOS, som netop inkluderer implementeringen af LTFS. Uden nogen problemer installerer vi produktet med dets egen installer. Undervejs installerer det ogsÄ FUSE-pakken, hvor vi i systemindstillingerne skal bekrÊfte autorisationen fra den kloge programmÞr ved navn Anatol Pomozov, hvis arbejde i denne sammenhÊng er afgÞrende for hele IBM. Respekt og anerkendelse til denne person.
Det er fornuftigt straks at skrive fĂžlgende linje i filen /Library/Frameworks/LTFS.framework/Versions/Current/etc/ltfs.conf.local:
option single-drive sync_type=time@1
som angiver, at bÄndet skal monteres som standard med en bufferudgivelse efter 1 minuts inaktivitet (standard er 5 minutter).

Endelig er alt klar til tilslutning. Vi forbinder kĂŠden: Mac â T3/T2-adapter â Thunderbolt-kabel â ATTO-konverter â SAS-kabel â bĂ„ndlagring (valget blandt flere porte pĂ„ Macen, konverteren og lagringsenheden er ikke vigtigt). Vi tĂŠnder for konverterens strĂžm. Vi tĂŠnder for strĂžmmen til bĂ„ndopbevareren. Vi venter pĂ„, at initializationen af lagringsenheden afsluttes, som angivet af dens indikator.
Vi giver kommandoen:
ltfs -o device_listHurra! Vi fÄr (i en typisk IBM diagnostisk stil):
307 LTFS14000I LTFS starter, LTFS version 2.4.2.0 (10418), logniveau 2.
307 LTFS14058I LTFS Format Specification version 2.4.0.
307 LTFS14104I Startet af «ltfs -o device_list».
307 LTFS14105I Denne binĂŠre fil er bygget til Mac OS X.
307 LTFS14106I GCC version er 4.2.1 Kompatibel Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
307 LTFS17087I Kernelversion: Darwin Kernel Version 19.4.0: Ons Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
307 LTFS17085I Plugin: IndlÊser «iokit» tape backend.
BÄndenhedslisten:
Enhedsnavn = 0, LeverandĂžr ID = IBM, Produkt ID = ULT3580-TD5, Serienummer = **********, Produktnavn =[ULT3580-TD5].
Vi indsÊtter kassetten, venter pÄ indlÊsningen, og formaterer:
mkltfs -d 0 -nTest -r "size=10M/name=.DS_Store"Her angiver parameteren -d nummeret pÄ enheden (altid nul, hvis der kun er én, men den kan ikke udelades i denne kommando), -n er navnet pÄ bÄndet (det er valgfrit at angive), og parameteren -r krÊver, at indholdet af .DS_Store-filer, der ikke overstiger 10 megabyte, placeres i indeksdelen (dvs. til kataloger) af bÄndet i stedet for datadelen.
Et mystisk liv begynder i bÄndenheden. Vi venter et par minutter og fÄr svar:
LTFS15000I Starter mkltfs, LTFS version 2.4.2.0 (10418), logniveau 2.
LTFS15041I Lancering af «mkltfs -d 0 -nTest -r size=10M/name=.DS_Store».
LTFS15042I Denne binĂŠre fil er bygget til Mac OS X.
LTFS15043I GCC-version er 4.2.1 Kompatibel med Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
LTFS17087I Kerneversion: Darwin Kerneversion 19.4.0: Ons Marts 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
LTFS15003I Formaterer enhed â0â.
LTFS15004I LTFS volumes blokstĂžrrelse: 524288.
LTFS15005I Indeks partitions placering politik: size=10M/name=.DS_Store.LTFS11337I Opdater indeks-snavset flag (1) â NO_BARCODE (0x0x1021081e0).
LTFS17085I Plugin: IndlÊser «iokit» bÄnd backend.
LTFS30810I Ă bner en enhed gennem iokit-driver (0).
LTFS30814I LeverandĂžr ID er IBM.
LTFS30815I Produkt ID er âULT3580-TD5 â.
LTFS30816I Firmware revision er H976.
LTFS30817I Drevets serienummer er **********.
LTFS17160I Maksimal enhedsblokstĂžrrelse er 1048576.
LTFS11330I IndlĂŠser patron.
LTFS30854I Logisk blokbeskyttelse er deaktiveret.
LTFS11332I IndlĂŠsning var succesfuld.
LTFS17157I Ăndrer drevindstillingen til skriv-hvor-som-helst tilstand.
LTFS15049I Kontrollerer mediet (montering).
LTFS30854I Logisk blokbeskyttelse er deaktiveret.
LTFS15010I Opretter datapartition b pÄ SCSI-partition 1.
LTFS15011I Opretter indekspartition a pÄ SCSI-partition 0.
LTFS17165I Nulstiller mediets kapacitetsproportion.
LTFS11097I Partitionerer mediet.
LTFS11100I Skriver mĂŠrke til partition b.
LTFS11278I Skriver indeks til partition b.
LTFS30808I READ_ATTR (0x8c) returnerer -20501.
LTFS30865I READ_ATTR returnerer Ugyldigt felt i CDB (-20501) 0.
LTFS30836I Kan ikke lĂŠse attribut (-20501).
LTFS11336I Attributten findes ikke. Ignorer den forventede fejl.
LTFS17235I Skriver indeks af NO_BARCODE til b (Ă rsag: Format, 0 filer) **********.
LTFS17236I Skrev indeks af NO_BARCODE (b, **********).
LTFS11337I Opdater indeks-snavset flag (0) â NO_BARCODE (0x0x1021081e0).
LTFS11100I Skriver mĂŠrke til partition a.
LTFS11278I Skriver indeks til partition a.
LTFS30808I READ_ATTR (0x8c) returnerer -20501.
LTFS30865I READ_ATTR returnerer Ugyldigt felt i CDB (-20501) 0.
LTFS30836I Kan ikke lĂŠse attribut (-20501).
LTFS11336I Attributten findes ikke. Ignorer den forventede fejl.
LTFS17235I Skriver indeks af NO_BARCODE til a (Ă rsag: Format, 0 filer) 9068025555.
LTFS17236I Skrev indeks af NO_BARCODE (a, **********).
LTFS15013I Volume UUID er: 3802a70d-bd9f-47a6-a999-eb74ffa67fc1.LTFS15019I Volumenkapacitet er 1425 GB.
LTFS30854I Logisk blokbeskyttelse er deaktiveret.
LTFS15024I Mediumet er blevet formateret erfolgreich.
Monterer det formaterede bÄnd:
sudo mkdir /Volumes/LTFS
sudo chmod 777 /Volumes/LTFS/
sudo ltfs /Volumes/LTFSModtager yderligere et par minutters drift fra enheden, diagnose:
307 LTFS14000I LTFS starter, LTFS version 2.4.2.0 (10418), logniveau 2.
307 LTFS14058I LTFS Format Specification version 2.4.0.
307 LTFS14104I Lancering af «ltfs /Volumes/LTFS/».
307 LTFS14105I Denne binĂŠre fil er bygget til Mac OS X.
307 LTFS14106I GCC version er 4.2.1 Kompatibel Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
307 LTFS17087I Kernelversion: Darwin Kernel Version 19.4.0: Ons Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
307 LTFS14063I Synkroniseringstype er «tid», synkroniseringstid er 60 sek.
307 LTFS17085I Plugin: IndlÊser «iokit» tape backend.
307 LTFS17085I Plugin: IndlÊser «unified» iosched backend.
307 LTFS14095I SÊtter bÄndenhedens skriv-hvor-som-helst tilstand for at undgÄ udskydelse af patronen.
307 LTFS30810I Ă bner en enhed gennem iokit-driver (0).
307 LTFS30814I LeverandĂžr ID er IBM.
307 LTFS30815I Produkt ID er âULT3580-TD5 â.
307 LTFS30816I Firmware revision er H976.
307 LTFS30817I Drevets serienummer er **********.
307 LTFS17160I Maksimal enhedsblokstĂžrrelse er 1048576.
307 LTFS11330I IndlĂŠser patron.
307 LTFS30854I Logisk blokbeskyttelse er deaktiveret.
307 LTFS11332I IndlĂŠsning var succesfuld.
307 LTFS17157I Ăndrer drevindstillingen til skriv-hvor-som-helst tilstand.
307 LTFS11005I Monter volumen.
307 LTFS30854I Logisk blokbeskyttelse er deaktiveret.
307 LTFS17227I BÄndattribut: LeverandÞr = IBM.
307 LTFS17227I BÄndattribut: Applikationsnavn = LTFS.
307 LTFS17227I BÄndattribut: Applikationsversion = 2.4.2.0.
307 LTFS17227I BÄndattribut: Mediumetiket =.
307 LTFS17228I BÄndattribut: Tekstlokaliserings-ID = 0x81.
307 LTFS17227I BÄndattribut: Stregkode =.
307 LTFS17227I BÄndattribut: Applikationsformatversion = 2.4.0.
307 LTFS17228I BÄndattribut: VolumenlÄsningsstatus = 0x00.
307 LTFS17227I BÄndattribut: Mediepuljenavn =.
307 LTFS14111I Initial opsĂŠtning gennemfĂžrt med succes.
307 LTFS14112I UdfĂžr 'mount' kommandoen for at kontrollere resultatet af den endelige opsĂŠtning.
307 LTFS14113I Specificeret monteringspunkt listes, hvis det lykkes.
Og her er vores bÄnd pÄ skrivebordet, kaldet Test(ltfs)! Det navnlÞse bÄnd vil fÄ navnet OSXFUSE Volume 0 (ltfs).
Nu kan vi arbejde med det.

Det er faktisk vigtigt at huske, at det er bedst ikke at overbruge visning af indholdet af bÄndmapper i Finder, da det er en utrolig ressourcekrÊvende operation for LTFS; det er bedre at arbejde med terminalkommandoer, eller blot overfÞre den sikkerhedskopieres mappe direkte til bÄndet, som vist i ovenstÄende vindue.
Der findes faktisk et specielt IBM-vÊrktÞj ved navn ltfs_copy og dets kloner, designet til mere effektiv kopiering mellem bÄnd og disk, men forfatteren har endnu ikke haft held til at finde dem tilgÊngelige ved en hurtig sÞgning.
For at afmontere bÄndet kan man bruge kommandoen:
umount /Volumes/LTFSeller blot smide det i papirkurven.
Der findes i Þvrigt nogle grafiske brugerflader til macOS for at lette disse handlinger, men efter sÄdanne bÞvlede processer, hvorfor skulle vi frygte at indtaste et par linjer i terminalen?
Som en sideeffekt fÄr vi mulighed for at tilslutte eksterne eSATA-diske via SAS/4*eSATA-kabel.

Kilde: habr.com
