Il tema di questo articolo è la connessione a dispositivi esterni a un Mac tramite interfacce SAS, Fibre Channel (FC), eSATA. Prima di tutto, vale la pena sottolineare che per accedere a tali dispositivi c'è una soluzione semplice: assemblare un PC economico, installarvi una scheda di controllo HBA SAS o FC (ad esempio, un semplice adattatore LSI), collegare i propri dispositivi a questo controller, installare un sistema Linux sul PC e lavorare con il Mac attraverso la rete. Tuttavia, questa è una soluzione banale e poco interessante. Noi seguiremo un approccio più audace e collegheremo direttamente i nostri dispositivi direttamente al Mac.
Cosa ci servirà per questo:
– una somma di denaro considerevole per l'acquisto di nuova attrezzatura, oppure un po' di fortuna negli acquisti su eBay (dove, con un po' di impegno, è possibile acquistare attrezzature di generazioni precedenti a un decimo del prezzo di listino);
– questo articolo.
Per lavorare con le cassette magnetiche (attualmente quasi universalmente rappresentate dal formato LTO), è necessario avere un'unità a nastro (tape drive) o una libreria a nastro di standard LTO. Si tratta di un dispositivo piuttosto costoso all'acquisto iniziale (a partire da centinaia di migliaia di rubli), ma ragionevole se acquistato usato. Poiché le generazioni LTO cambiano circa ogni due anni e la compatibilità è limitata a due generazioni, il mercato secondario è sufficientemente saturato di dispositivi funzionanti di quattro o più anni, ovvero delle generazioni precedenti. Se acquisti un nuovo dispositivo per scopi commerciali, sai bene a cosa ti serve. Se desideri comprarne uno per casa e famiglia, puoi considerare questa opzione come un modo per archiviare informazioni (dato che i supporti stessi sono molto economici per 1 gigabyte).
A partire dalla generazione LTO-5 (e in parte LTO-4), i dispositivi per lavorare con le cassette magnetiche si collegano fisicamente al computer tramite l'interfaccia SAS o FC (di solito esistono due varianti di ciascun dispositivo).
D'altra parte, Apple ci offre gentilmente nel nostro Mac un'interfaccia USB-C (funzionante con i protocolli USB, Thunderbolt 3 e DisplayPort), occasionalmente un'interfaccia Ethernet, e anche gli adattatori proprietari Thunderbolt 3 – Thunderbolt 2 e Thunderbolt – FireWire 800.
Situazione senza uscita? Non proprio. Fortunatamente, il bus Thunderbolt può funzionare in modalità PCIe e fornire la possibilità di collegare schede PCIe proprio come se fossero installate all'interno del case del computer. Ciò consente qualsiasi espansione della configurazione hardware del Mac, a patto di avere l'adattatore e i driver corretti.
Il modo concettualmente più semplice per affrontare il problema è un box esterno per adattatori PCIe con interfaccia Thunderbolt (sistema di espansione schede PCIe), nel quale è possibile installare un controller (Host bus adapter, HBA) SAS o FC. Ad esempio, tali box sono prodotti dall'azienda e da alcune altre. Qui c'è un aspetto da considerare: non ogni controller è adatto, ma solo quelli che hanno un driver per macOS. Ci sono davvero poche schede di questo tipo, e le più economiche e popolari (come le stesse LSI) non rientrano nel loro numero. Fortunatamente, l'azienda Sonnet si è presa la briga di compilare schede PCIe con vari sistemi operativi tramite interfaccia Thunderbolt.
Un'altra soluzione è l'acquisto di un convertitore di interfaccia Thunderbolt – SAS o Thunderbolt – FC, che, in sostanza, è già un'assemblaggio pronto di un box e un controller. L'azienda più nota in questo campo è , ma ci sono anche prodotti di altre aziende.
È importante notare che non tutti i controller SAS e FC sono certificati secondo lo standard LTO, poiché ciò comporta costi. Alcuni produttori dichiarano esplicitamente che i loro controller non sono progettati per lavorare con unità a nastro.
Per completezza, segnaliamo che l'azienda mLogic produce , che è un'unità IBM LTO-8 in un case esterno, all'interno del quale è integrato un convertitore da SAS a Thunderbolt 3. Tuttavia, questo è qualcosa di ancora più esotico rispetto a quanto descritto sopra, specialmente per i nostri standard. Dubito che sia possibile importare legalmente questo dispositivo in Russia (le unità LTO contengono strumenti crittografici, e produttori come IBM e HP, per questo motivo, ottengono un'autorizzazione del FSB per l'importazione di ogni modello).
Ora esamineremo un set specifico di attrezzature di cui l'autore è diventato proprietario grazie a vari acquisti riusciti, ma il principio generale dovrebbe rimanere valido per tutte le opzioni.
Quindi abbiamo il seguente equipaggiamento per lavorare con il nastro:
– computer Apple Mac mini 2018 con macOS 10.15 Catalina, dotato di porte USB-C con supporto Thunderbolt 3;
– adattatore Apple Thunderbolt 3 / Thunderbolt 2;
– cavo Apple Thunderbolt 2;
– convertitore ATTO ThunderLink SH 1068 (2*Thunderbolt / 2*SAS-2);
– cavo SAS SFF-8088 – SFF-8088;
– unità a nastro LTO-5 IBM TS2350;
– cartucce LTO-5, cartuccia di pulizia.
Adesso, come si suol dire, con tutta questa attrezzatura cercheremo di decollare.
Scarichiamo dal sito ATTO l'ultima versione del driver ThunderLink SH 1068 (ovviamente, per nostra comodità è unito al driver SH 2068 ed è trovato nella sezione 2068, cosa di cui si fa menzione solamente all'interno dell'archivio del driver) e dell'utility di configurazione ATTO.

Il driver, naturalmente, ha bisogno di essere installato. Prima di tali azioni, l'autore consiglia sempre di fare uno snapshot del file system APFS del disco di avvio con il comando
tmutil localsnapshoto un backup del disco di avvio, se contiene HFS+. Chissà mai. Poi sarà facile tornare indietro dallo snapshot.
Successivamente, una persona inesperta ma attenta e intelligente, senza dubbio, si appellerà a leggere attentamente le istruzioni di ATTO per l'installazione del driver ed seguirle. Il risultato – tada! – è un sistema operativo che si blocca durante il caricamento. Qui potrebbe tornarci utile lo snapshot, da cui possiamo recuperare chiamando Time Machine dalla partizione di ripristino, oppure dalla stessa partizione di ripristino possiamo manualmente cancellare il problematico kext dalla cartella delle estensioni del kernel (l'autore generalmente non consiglia di fare così).
Perché succede questo? Perché ci ha pensato Apple. Nelle ultime versioni di macOS non è più possibile semplicemente inserire codice esterno nel processo di avvio. I bravi programmatori di Apple hanno bloccato tale comportamento distruttivo. Più precisamente, hanno bloccato solo in parte, quando l'attesa del driver viene iniettata, ma il driver stesso no, quindi tutto si blocca.
Cosa dovrebbe fare una mente esperta prima di installare il driver? Prima di tutto, dare il comando:
csrutil statusSe in risposta riceviamo:
Lo stato della Protezione dell'Integrità di Sistema: abilitato.
ciò significa che i buoni programmatori di Apple si prendono cura di noi, quindi non otterremo nulla finché non disabilitiamo questa loro fantastica protezione. Per farlo, riavviamo in modalità di recupero (⌘R), apriamo il terminale e diamo il comando:
csrutil disableDopo di che riavviamo nella nostra sistema di lavoro e installiamo il driver, insieme all'utilità di configurazione ATTO (in effetti, l'utilità di configurazione è necessaria solo per la diagnostica e non è richiesta per il funzionamento normale). Durante il processo, quando richiesto, confermiamo nelle impostazioni di sistema l'autorizzazione della società ATTO. Dopo l'installazione, possiamo nuovamente riavviare in modalità di recupero e dare il comando
csrutil enableApple si prende ancora cura di noi.
Ora abbiamo un'interfaccia supportata dal driver per dispositivi esterni SAS (o FC, se si utilizzasse un convertitore FC). Ma come lavorare con il nastro a livello logico?
Come è noto a una mente non esperta ma erudita, qualsiasi sistema compatibile con Unix supporta le unità a nastro a livello di kernel e delle principali utilità di sistema, le quali comprendono, in particolare, mt (gestione delle unità a nastro) e tar (archivio con supporto per l'elaborazione di archivi su nastro). Tuttavia, cosa dirà a riguardo una mente esperta? Escluso macOS. La Apple si è presa cura di noi, escludendo il supporto per i dispositivi a nastro dal proprio codice.
Ma non si può davvero riportare questo codice, portando le utility open source standard Unix su macOS? La buona notizia è che l'azienda Tolis (di cui non fornisco il link) ha già fatto ciò nel suo prodotto Tolis Tape Tools. La cattiva notizia è che l'azienda valuta l'accesso ai risultati del suo lavoro in 399 dollari USA. Le valutazioni di questo fatto possono variare, ma personalmente non sono disposto a pagare a qualcuno 400 dollari per un codice per lo più scritto da altre persone e disponibile pubblicamente dagli anni '70, e perciò considero chiuso questo argomento. (A proposito, su GitHub c'è un progetto libero abbandonato in uno stato precario sullo stesso tema).
Fortunatamente, nel mondo esiste la corporation IBM, i cui appetiti commerciali hanno dimensioni completamente diverse e pertanto non si manifestano in ogni piccola cosa. In particolare, ha sviluppato il file system a nastro LTFS con codice sorgente aperto, distribuito anche per macOS.
Esiste una questione relativa al fatto che diversi produttori di dispositivi a nastro rilasciano le proprie versioni di LTFS, compatibili con i loro dispositivi. Poiché l'autore utilizza un'unità di nastro IBM, ha installato LTFS di IBM. Per i dispositivi di altri marchi, potrebbero essere necessari i loro porting di LTFS. Esiste anche un'implementazione universale, openLTFS, su GitHub e Homebrew.
Per noi è importante che LTFS utilizzi la funzionalità di partizionamento del supporto, e quindi può funzionare con dispositivi e cartucce a partire dalla generazione LTO-5.
Quindi, nel nostro caso, scarichiamo dal sito IBM il prodotto IBM Spectrum Archive Single Drive Edition per macOS, che include l'implementazione di LTFS. Installiamo il prodotto senza problemi utilizzando il suo installer. Durante il processo, installa anche il pacchetto FUSE, e nelle impostazioni di sistema dovremo confermare l'autorizzazione di un ingegnere informatico di nome Anatol Pomozov, da cui dipende l'intera IBM in questo caso. Rispetto e riconoscimento a quest'uomo.
È consigliabile inserire immediatamente nel file /Library/Frameworks/LTFS.framework/Versions/Current/etc/ltfs.conf.local la seguente riga:
option single-drive sync_type=time@1
impostando il montaggio della nastro predefinito con un reset del buffer di scrittura dopo 1 minuto di inattività (di default 5 minuti).

Finalmente, tutto è pronto per il collegamento. Colleghiamo la catena: Mac – adattatore T3/T2 – cavo Thunderbolt – convertitore ATTO – cavo SAS – unità a nastro (la scelta tra diversi porti sul Mac, sul convertitore e sull'unità non è importante). Accendiamo il convertitore. Accendiamo l'unità a nastro. Attendiamo che l'inizializzazione dell'unità venga completata secondo la sua indicazione.
Immettiamo il comando:
ltfs -o device_listEvviva! Riceviamo (nello stile diagnostico abituale di IBM):
307 LTFS14000I LTFS avviato, versione LTFS 2.4.2.0 (10418), livello di log 2.
307 LTFS14058I Versione della specifica di formato LTFS 2.4.0.
307 LTFS14104I Avviato da «ltfs -o device_list».
307 LTFS14105I Questo binario è costruito per Mac OS X.
307 LTFS14106I La versione di GCC è 4.2.1 Compatibile Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
307 LTFS17087I Versione del kernel: Versione del kernel Darwin 19.4.0: Mer Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
307 LTFS17085I Plugin: Caricamento del backend nastro «iokit».
Elenco dispositivi nastro:.
Nome dispositivo = 0, ID venditore = IBM, ID prodotto = ULT3580-TD5, Numero di serie = **********, Nome prodotto =[ULT3580-TD5].
Inseriamo la cassetta, attendiamo il caricamento e formattiamo:
mkltfs -d 0 -nTest -r "size=10M/name=.DS_Store"Qui il parametro -d specifica il numero del dispositivo (sempre zero se è l'unico, ma non può essere omesso in questo comando), -n è il nome del nastro (può essere omesso), mentre il parametro -r richiede di posizionare i contenuti dei file .DS_Store, che non superano i 10 megabyte, nella sezione indice (cioè destinata ai cataloghi) invece della sezione dati.
È iniziata una vita misteriosa nel dispositivo a nastro. Attendiamo qualche minuto, poi riceviamo in risposta:
LTFS15000I Avvio di mkltfs, versione LTFS 2.4.2.0 (10418), livello di log 2.
LTFS15041I Avviato con «mkltfs -d 0 -nTest -r size=10M/name=.DS_Store».
LTFS15042I Questo binario è costruito per Mac OS X.
LTFS15043I La versione di GCC è 4.2.1 Compatibile con Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
LTFS17087I Versione del kernel: Versione Darwin Kernel 19.4.0: Mer Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
LTFS15003I Formattazione del dispositivo ‘0’.
LTFS15004I Dimensione del blocco volume LTFS: 524288.
LTFS15005I Politica di posizionamento della partizione indice: size=10M/name=.DS_Store.LTFS11337I Aggiornamento del flag indice-sporco (1) — NO_BARCODE (0x0x1021081e0).
LTFS17085I Plugin: Caricamento del backend nastro «iokit».
LTFS30810I Apertura di un dispositivo tramite il driver iokit (0).
LTFS30814I L'ID fornitore è IBM.
LTFS30815I L'ID prodotto è ‘ULT3580-TD5 ‘.
LTFS30816I La revisione del firmware è H976.
LTFS30817I Il numero di serie dell'unità è **********.
LTFS17160I La dimensione massima del blocco del dispositivo è 1048576.
LTFS11330I Caricamento della cartuccia.
LTFS30854I La protezione del blocco logico è disabilitata.
LTFS11332I Caricamento riuscito.
LTFS17157I Cambiamento dell'impostazione dell'unità in modalità scrittura ovunque.
LTFS15049I Controllo del supporto (montaggio).
LTFS30854I La protezione del blocco logico è disabilitata.
LTFS15010I Creazione della partizione dati b sulla partizione SCSI 1.
LTFS15011I Creazione della partizione indice a sulla partizione SCSI 0.
LTFS17165I Ripristino della proporzione di capacità del supporto.
LTFS11097I Suddivisione del supporto.
LTFS11100I Scrittura dell'etichetta nella partizione b.
LTFS11278I Scrittura dell'indice nella partizione b.
LTFS30808I READ_ATTR (0x8c) restituisce -20501.
LTFS30865I READ_ATTR restituisce Campo non valido in CDB (-20501) 0.
LTFS30836I Impossibile leggere l'attributo (-20501).
LTFS11336I L'attributo non esiste. Ignora l'errore previsto.
LTFS17235I Scrittura dell'indice di NO_BARCODE in b (Motivo: Formato, 0 file) **********.
LTFS17236I Indice di NO_BARCODE scritto (b, **********).
LTFS11337I Aggiornamento del flag indice-sporco (0) — NO_BARCODE (0x0x1021081e0).
LTFS11100I Scrittura dell'etichetta nella partizione a.
LTFS11278I Scrittura dell'indice nella partizione a.
LTFS30808I READ_ATTR (0x8c) restituisce -20501.
LTFS30865I READ_ATTR restituisce Campo non valido in CDB (-20501) 0.
LTFS30836I Impossibile leggere l'attributo (-20501).
LTFS11336I L'attributo non esiste. Ignora l'errore previsto.
LTFS17235I Scrittura dell'indice di NO_BARCODE in a (Motivo: Formato, 0 file) 9068025555.
LTFS17236I Indice di NO_BARCODE scritto (a, **********).
LTFS15013I L'UUID del volume è: 3802a70d-bd9f-47a6-a999-eb74ffa67fc1.LTFS15019I La capacità del volume è di 1425 GB.
LTFS30854I La protezione del blocco logico è disabilitata.
LTFS15024I Supporto formattato con successo.
Monta la cassetta formattata:
sudo mkdir /Volumes/LTFS
sudo chmod 777 /Volumes/LTFS/
sudo ltfs /Volumes/LTFSOttieni un paio di minuti in più di utilizzo del dispositivo, diagnostica:
307 LTFS14000I LTFS avviato, versione LTFS 2.4.2.0 (10418), livello di log 2.
307 LTFS14058I Versione della specifica di formato LTFS 2.4.0.
307 LTFS14104I Avviato con «ltfs /Volumes/LTFS/».
307 LTFS14105I Questo binario è costruito per Mac OS X.
307 LTFS14106I La versione di GCC è 4.2.1 Compatibile Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
307 LTFS17087I Versione del kernel: Versione del kernel Darwin 19.4.0: Mer Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
307 LTFS14063I Il tipo di sincronizzazione è «tempo», il tempo di sincronizzazione è 60 sec.
307 LTFS17085I Plugin: Caricamento del backend nastro «iokit».
307 LTFS17085I Plugin: Caricamento backend iosched «unified».
307 LTFS14095I Imposta la modalità di scrittura del dispositivo a ovunque per evitare l'espulsione della cassetta.
307 LTFS30810I Apertura di un dispositivo tramite driver iokit (0).
307 LTFS30814I L'ID fornitore è IBM.
307 LTFS30815I L'ID prodotto è ‘ULT3580-TD5 ‘.
307 LTFS30816I Revisione del firmware è H976.
307 LTFS30817I Seriale dell'unità è **********.
307 LTFS17160I La dimensione massima del blocco del dispositivo è 1048576.
307 LTFS11330I Caricamento della cassetta.
307 LTFS30854I La protezione del blocco logico è disabilitata.
307 LTFS11332I Caricamento riuscito.
307 LTFS17157I Modifica l'impostazione dell'unità in modalità scrittura ovunque.
307 LTFS11005I Montaggio del volume.
307 LTFS30854I La protezione del blocco logico è disabilitata.
307 LTFS17227I Attributo nastro: Fornitore = IBM.
307 LTFS17227I Attributo nastro: Nome dell'applicazione = LTFS.
307 LTFS17227I Attributo nastro: Versione dell'applicazione = 2.4.2.0.
307 LTFS17227I Attributo nastro: Etichetta del supporto =.
307 LTFS17228I Attributo nastro: ID di localizzazione del testo = 0x81.
307 LTFS17227I Attributo nastro: Codice a barre =.
307 LTFS17227I Attributo nastro: Versione del formato dell'applicazione = 2.4.0.
307 LTFS17228I Attributo nastro: Stato di blocco del volume = 0x00.
307 LTFS17227I Attributo nastro: Nome del pool dei media =.
307 LTFS14111I Configurazione iniziale completata con successo.
307 LTFS14112I Eseguire il comando ‘mount’ per controllare il risultato della configurazione finale.
307 LTFS14113I Il punto di montaggio specificato è elencato se ha avuto successo.
Ecco, il nostro nastro è sulla scrivania, con il nome Test(ltfs)! Il nastro senza nome riceverà il nome OSXFUSE Volume 0 (ltfs).
Ora puoi iniziare a lavorarci.

È importante tener presente che è meglio non abusare della visualizzazione del contenuto delle cartelle del nastro nelle finestre del Finder, poiché questa è un'operazione incredibilmente costosa per LTFS. È preferibile lavorare tramite comandi del terminale o semplicemente trasferire intere cartelle da eseguire il backup sul nastro, come illustrato nella finestra sopra.
Esiste, tra l'altro, un'utilità scritta da IBM chiamata ltfs_copy e i suoi cloni, progettata per facilitare il trasferimento tra nastro e disco in modo più efficiente, ma finora non sono riuscito a trovarli in accesso pubblico durante una ricerca superficiale.
È possibile smontare il nastro con il comando:
umount /Volumes/LTFSoppure semplicemente spostarlo nel cestino.
In effetti, esistono alcune interfacce grafiche per macOS per facilitare queste operazioni, ma dopo tali manovre, perché dovremmo temere di digitare alcune righe nel terminale?
Come effetto secondario, otteniamo la possibilità di connettere dischi esterni eSATA tramite cavo SAS/4*eSATA.

Fonte: habr.com
