Apple Mac e dispositivi eccentrici. LTO, SAS, Fibre Channel, eSATA

Il tema del presente articolo è il collegamento di dispositivi esterni al Mac tramite interfacce SAS, Fibre Channel (FC), eSATA. Precisiamo subito che per risolvere la questione dell'accesso a questi dispositivi esiste un modo semplice: assemblare un PC economico, inserire una scheda controller HBA SAS o FC (ad esempio, un semplice adattatore LSI), collegare i propri dispositivi a questo controller, installare qualsiasi distribuzione Linux sul PC e lavorare con il Mac tramite rete. Ma questo è banale e poco interessante. Ci avventureremo in un percorso hardcore e collegheremo i nostri dispositivi direttamente al Mac.

Di cosa avremo bisogno:
– una buona somma di denaro per acquistare nuove attrezzature, oppure un po' di fortuna nelle aste su eBay (dove, con un certo impegno, è possibile acquistare l'attrezzatura necessaria delle generazioni precedenti a un decimo del prezzo di listino);
– questo articolo.

Per lavorare con nastri magnetici (attualmente quasi ovunque rappresentati dal formato LTO), è necessario avere un'unità nastro (tape drive) o una libreria di nastri standard LTO. Si tratta di un dispositivo piuttosto costoso all'acquisto iniziale (a partire da centinaia di migliaia di rubli), ma che ha un costo ragionevole se acquistato usato. Poiché le generazioni LTO si susseguono circa ogni due anni e la compatibilità è limitata a due generazioni, il mercato secondario è sufficientemente saturo di dispositivi funzionanti di quattro o più anni, ovvero di generazioni precedenti. Se stai acquistando un nuovo dispositivo per scopi commerciali, sai già perché ti serve. Se vuoi acquistarne uno per casa e famiglia, puoi considerare questa opzione come un modo per archiviare informazioni (dato che i supporti stessi sono molto economici in rapporto a 1 gigabyte).

A partire dalla generazione LTO-5 (e in parte LTO-4), i dispositivi per il lavoro con nastri magnetici si collegano fisicamente al computer tramite interfaccia SAS o FC (di solito ci sono due varianti di ciascun dispositivo)

D'altra parte, la Apple ci offre gentilmente nel nostro Mac l'interfaccia USB-C (funzionante secondo protocolli USB, Thunderbolt 3 o DisplayPort), a volte l'interfaccia Ethernet, e anche adattatori Thunderbolt 3 – Thunderbolt 2 e Thunderbolt – FireWire 800.

Una situazione senza uscita? Non proprio. Fortunatamente, l'interfaccia Thunderbolt può funzionare in modalità PCIe e consentire il collegamento di schede PCIe proprio come se fossero installate direttamente all'interno del case del computer. Ciò consente qualsiasi espansione della configurazione hardware del Mac, purché ci siano adattatori e driver appropriati.

Il modo concettualmente più semplice per risolvere il problema è utilizzare una scatola esterna per adattatori PCIe con interfaccia Thunderbolt (sistema di espansione schede PCIe), in cui è possibile installare un controllore (Host bus adapter, HBA) SAS o FC. Ad esempio, tali scatole sono prodotte dall'azienda Sonnet e da alcune altre. Qui c'è un nuance: non tutti i controllori sono adatti, ma solo quelli che hanno un driver per macOS. Ci sono davvero pochi di questi dispositivi, e quelli più economici e popolari (ad esempio, gli stessi LSI) non rientrano in questa lista. Fortunatamente, l'azienda Sonnet ha avuto la cortesia di compilare una tabella di compatibilità delle schede PCIe con vari sistemi operativi tramite interfaccia Thunderbolt.

Un'altra soluzione è l'acquisto di un convertitore Thunderbolt - SAS o Thunderbolt - FC, che è, di fatto, un'assemblaggio già pronto di una scatola e un controllore. L'azienda più nota in questo settore è ATTO, ma si trovano anche prodotti di altre aziende.

Va notato che non tutti i controllori SAS e FC sono certificati per rispettare lo standard LTO, poiché questo comporta un costo. Alcuni produttori dichiarano esplicitamente che il funzionamento dei loro controllori con unità a nastro non è previsto.

Per completezza, facciamo notare che l'azienda mLogic produce un dispositivo, che è un'unità IBM LTO-8 in un case esterno, in cui è già integrato un convertitore da SAS a Thunderbolt 3. Tuttavia, questo è un dispositivo ancora più esotico rispetto a tutto ciò che abbiamo descritto in precedenza, soprattutto per i nostri standard. Dubito che questo dispositivo possa essere anche legalmente importato in Russia (le unità LTO contengono sistemi crittografici e produttori come IBM e HP, per questo motivo, ottengono l'autorizzazione del FSB per l'importazione di ogni modello).

Successivamente, esamineremo per esempio un kit di attrezzature di cui l'autore è diventato proprietario a seguito di diversi acquisti fortunate, 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 per Thunderbolt 3;
– adattatore Apple Thunderbolt 3 / Thunderbolt 2;
– cavo Apple Thunderbolt 2;
– convertitore di interfaccia 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.

Ora, come si suol dire, con tutta questa faccenda cercheremo di decollare.

Scarichiamo dal sito ATTO l'ultima versione del driver ThunderLink SH 1068 (probabilmente, per nostra comodità è unito al driver SH 2068 e si trova nella sezione 2068, di cui si parla solo all'interno dell'archivio del driver) e dell'utilità di configurazione ATTO.

Apple Mac e dispositivi eccentrici. LTO, SAS, Fibre Channel, eSATA

Il driver, ovviamente, ha bisogno di essere installato. Prima di tali operazioni, l'autore consiglia di fare sempre uno snapshot del file system APFS del disco di avvio con il comando

tmutil localsnapshot

oppure un backup del disco di avvio, se utilizza HFS+. Non si sa mai. Poi dallo snapshot sarà facile tornare indietro.

Successivamente, un utente inesperto ma con la dovuta cautela tenderà a leggere attentamente le istruzioni di ATTO per l'installazione del driver e a seguirle. Così facendo – ta-da! – otteniamo un sistema operativo bloccato durante la fase di avvio. Qui potrebbe tornarci utile lo snapshot, dal quale possiamo ripristinare avviando Time Machine dalla sezione di ripristino, oppure dalla stessa sezione di ripristino possiamo manualmente eliminare il problematico kext dalla cartella delle estensioni del kernel (l'autore in generale non consiglia di procedere in questo modo).

Perché accade tutto questo? Perché ci ha pensato la Apple. Nelle ultime versioni di macOS non è così semplice inserire codice di terze parti nel processo di avvio. Bravi programmatori della Apple hanno bloccato tale comportamento distruttivo. Più precisamente, l'hanno bloccato a metà, quando si attende l'inserimento del driver, ma il driver stesso non si inserisce, quindi tutto si blocca.

Cosa deve fare un esperto prima di installare il driver? Prima di tutto, dare il comando:

csrutil status

Se in risposta otteniamo:

System Integrity Protection status: enabled.

questo significa che i bravi programmatori della Apple si prendono cura di noi, quindi non otterremo nulla finché non disattiveremo la loro fantastica protezione. Per fare ciò, riavviamo nella sezione di ripristino (⌘R), apriamo il terminale e diamo il comando:

csrutil disable

Dopo di che, riavviamo il sistema di lavoro e solo allora installiamo il driver e, nel contempo, l'utilità di configurazione ATTO (in pratica, l'utilità di configurazione è necessaria solo per la diagnostica e non è richiesta per il funzionamento normale). Durante il processo, quando viene richiesto, confermiamo nelle impostazioni di sistema l'autenticazione della società ATTO. Dopo l'installazione, possiamo riavviarci nella modalità di recupero e dare il comando

csrutil enable

Apple si prende nuovamente cura di noi.

Ora abbiamo un'interfaccia supportata dal driver per i 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 inesperta ma erudita, qualsiasi sistema compatibile con Unix supporta i lettori di nastro a livello di kernel e delle principali utilità di sistema, tra cui, in primis, mt (gestione del nastro) e tar (archiviatore con supporto per archivi su nastro). Tuttavia, che cosa precisa a riguardo una mente esperta? Qualsiasi sistema compatibile con Unix, eccetto macOS. La società Apple ha pensato a noi, rimuovendo il supporto per i dispositivi a nastro dal suo codice.

Ma non si può restituire quel codice, portando le utilità open source standard di Unix su macOS? La buona notizia è che questa operazione è stata già effettuata dalla società Tolis (il cui link non fornisco) nel suo prodotto Tolis Tape Tools. La cattiva notizia è che l'utilizzo dei risultati del suo lavoro è valutato a 399 dollari USA. Le opinioni su questo fatto possono essere diverse, ma personalmente l'autore non è disposto a pagare a qualcuno 400 dollari per un codice, per lo più scritto da altre persone e disponibile al pubblico fin dagli anni '70, e quindi considera chiuso questo argomento. (A proposito, su GitHub c'è un progetto open source abbandonato in uno stato confuso, IOSCSITape sullo stesso tema).

Fortunatamente, nel mondo esiste la corporation IBM, le cui appetiti commerciali hanno dimensioni completamente diverse, e quindi non si manifestano in piccole cose. In particolare, ha sviluppato il file system a nastro LTFS con codice sorgente aperto, distribuito anche per macOS.

C'è una sfumatura da considerare: diversi produttori di dispositivi a nastro rilasciano le proprie versioni di LTFS, compatibili con i loro dispositivi. Poiché l'autore utilizza un'unità a nastro IBM, ha installato la LTFS di IBM. Per gli archivi di altre aziende, potrebbero essere necessari i loro porti LTFS. Esiste anche un'implementazione universale openLTFS su GitHub e Homebrew.

È importante per noi che LTFS utilizzi la funzionalità di partizionamento del supporto, permettendo così di lavorare con dispositivi e cassette 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 proprio l'implementazione di LTFS. Senza alcuna avventura, installiamo il prodotto utilizzando il suo installatore. Durante il processo, installa anche il pacchetto FUSE, e nelle impostazioni di sistema sarà necessario confermare l'autorizzazione di un esperto programmatore chiamato Anatol Pomozov, da cui dipende in questo caso l'intera IBM. Rispetto e considerazione per questa persona.

È opportuno aggiungere subito nel file /Library/Frameworks/LTFS.framework/Versions/Current/etc/ltfs.conf.local la seguente riga:

option single-drive sync_type=time@1

che imposta il montaggio del nastro per impostazione predefinita con un ripristino del buffer di scrittura dopo 1 minuto di inattività (predefinito 5 minuti).

Apple Mac e dispositivi eccentrici. LTO, SAS, Fibre Channel, eSATA

Infine, tutto è pronto per il collegamento. Colleghiamo la sequenza: Mac – adattatore T3/T2 – cavo Thunderbolt – convertitore ATTO – cavo SAS – unità a nastro (non importa quale porta scegliere sul Mac, nel convertitore o nell'unità). Accendiamo l'alimentazione del convertitore. Accendiamo l'alimentazione dell'unità a nastro. Attendiamo la fine dell'inizializzazione dell'unità secondo la sua indicazione.

Diamo il comando:

ltfs -o device_list

Evviva! Otteniamo (nella consueta maniera diagnostica 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 con Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
307 LTFS17087I Versione del kernel: Darwin Kernel Version 19.4.0: Mer Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
307 LTFS17085I Plugin: Caricamento «iokit» tape backend.
Elenco dei dispositivi a nastro:
Nome dispositivo = 0, ID fornitore = 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 supporto (sempre zero se è unico, ma non può essere omesso in questo comando), -n è il nome della nastro (può non essere specificato), e il parametro -r richiede di posizionare il contenuto dei file .DS_Store, che non superano i 10 megabyte, nella sezione dell'indice (cioè destinata ai cataloghi) invece che nella sezione dati.

È cominciata una vita misteriosa nel supporto a nastro. Aspettiamo un paio di minuti e riceviamo in risposta:

LTFS15000I Inizio mkltfs, versione LTFS 2.4.2.0 (10418), livello di log 2.
LTFS15041I Lanciato da «mkltfs -d 0 -nTest -r size=10M/name=.DS_Store».
LTFS15042I Questo binario è costruito per Mac OS X.
LTFS15043I Versione GCC è 4.2.1 Compatibile 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 di indice: size=10M/name=.DS_Store.

LTFS11337I Aggiorna flag indice-sporco (1) — NO_BARCODE (0x0x1021081e0).
LTFS17085I Plugin: Caricamento del backend a nastro «iokit».
LTFS30810I Apertura di un dispositivo tramite driver iokit (0).
LTFS30814I Vendor ID è IBM.
LTFS30815I Product ID è 'ULT3580-TD5 '.
LTFS30816I Revisione firmware è H976.
LTFS30817I Serial del drive è **********.
LTFS17160I Dimensione massima del blocco del dispositivo è 1048576.
LTFS11330I Caricamento della cartuccia.
LTFS30854I La protezione del blocco logico è disabilitata.
LTFS11332I Caricamento riuscito.
LTFS17157I Cambiando l'impostazione del drive 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 Reimpostazione della proporzione di capacità del supporto.
LTFS11097I Partizionamento del supporto.
LTFS11100I Scrittura dell'etichetta sulla partizione b.
LTFS11278I Scrittura dell'indice sulla 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 su b (Motivo: Formato, 0 file) **********.
LTFS17236I Indice di NO_BARCODE scritto (b, **********).
LTFS11337I Aggiorna flag indice-sporco (0) — NO_BARCODE (0x0x1021081e0).
LTFS11100I Scrittura dell'etichetta sulla partizione a.
LTFS11278I Scrittura dell'indice sulla 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 su a (Motivo: Formato, 0 file) 9068025555.
LTFS17236I Indice di NO_BARCODE scritto (a, **********).
LTFS15013I Volume UUID è: 3802a70d-bd9f-47a6-a999-eb74ffa67fc1.

LTFS15019I Capacità del volume è 1425 GB.
LTFS30854I La protezione del blocco logico è disabilitata.
LTFS15024I Supporto formattato con successo.

Montiamo il nastro formattato:

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

Riceviamo ancora un paio di minuti di lavoro 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 Lanciato da «ltfs /Volumes/LTFS/».
307 LTFS14105I Questo binario è costruito per Mac OS X.
307 LTFS14106I La versione di GCC è 4.2.1 Compatibile con Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
307 LTFS17087I Versione del kernel: Darwin Kernel Version 19.4.0: Mer Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
307 LTFS14063I Tipo di sincronizzazione è «tempo», Tempo di sincronizzazione è 60 sec.
307 LTFS17085I Plugin: Caricamento «iokit» tape backend.
307 LTFS17085I Plugin: Caricamento del backend iosched «unified».
307 LTFS14095I Imposta la modalità scrittura-ovunque del dispositivo nastro per evitare l'espulsione della cartuccia.
307 LTFS30810I Apertura di un dispositivo tramite driver iokit (0).
307 LTFS30814I Vendor ID è IBM.
307 LTFS30815I Product ID è 'ULT3580-TD5 '.
307 LTFS30816I Revisione firmware è H976.
307 LTFS30817I Serial del drive è **********.
307 LTFS17160I Dimensione massima del blocco del dispositivo è 1048576.
307 LTFS11330I Caricamento della cartuccia.
307 LTFS30854I La protezione del blocco logico è disabilitata.
307 LTFS11332I Caricamento riuscito.
307 LTFS17157I Cambiando l'impostazione del drive in modalità scrittura-ovunque.
307 LTFS11005I Montando il volume.
307 LTFS30854I La protezione del blocco logico è disabilitata.
307 LTFS17227I Attributo della nastro: Fornitore = IBM.
307 LTFS17227I Attributo della nastro: Nome dell'applicazione = LTFS.
307 LTFS17227I Attributo della nastro: Versione dell'applicazione = 2.4.2.0.
307 LTFS17227I Attributo della nastro: Etichetta del supporto =.
307 LTFS17228I Attributo della nastro: ID di localizzazione del testo = 0x81.
307 LTFS17227I Attributo della nastro: Codice a barre =.
307 LTFS17227I Attributo della nastro: Versione del formato dell'applicazione = 2.4.0.
307 LTFS17228I Attributo della nastro: Stato di blocco del volume = 0x00.
307 LTFS17227I Attributo della nastro: Nome del pool media =.
307 LTFS14111I Configurazione iniziale completata con successo.
307 LTFS14112I Esegui il comando ‘mount’ per controllare il risultato della configurazione finale.
307 LTFS14113I Il punto di montaggio specificato è elencato se riuscito.

Ed ecco, il nostro nastro sulla scrivania, con nome Test(ltfs)! Un nastro senza nome riceverà nome OSXFUSE Volume 0 (ltfs).

Ora è possibile lavorarci.

Apple Mac e dispositivi eccentrici. LTO, SAS, Fibre Channel, eSATA

In effetti, bisogna tenere presente che è preferibile non abusare della visualizzazione del contenuto delle directory del nastro nelle finestre del Finder, poiché ciò è un'operazione incredibilmente costosa per LTFS, ed è meglio lavorare con i comandi del terminale, o semplicemente scaricare l'intera directory da fare il backup sul nastro, come mostrato nella finestra sopra.

Esiste, tra l'altro, un'utilità IBM appositamente scritta chiamata ltfs_copy e i suoi cloni, progettata per un copia più efficiente tra nastro e disco, ma finora l'autore non è riuscito a trovarli in accessibilità pubblica durante una ricerca superficiale.

È possibile smontare il nastro con il comando:

umount /Volumes/LTFS

o semplicemente buttarlo nel cestino.

In effetti, esistono alcune interfacce grafiche per macOS per facilitare queste azioni, ma dopo tali stranezze, perché dovremmo temere di digitare alcune righe nel terminale?

Come effetto collaterale, otteniamo la possibilità di collegare dischi esterni eSATA tramite cavo SAS/4*eSATA.

Apple Mac e dispositivi eccentrici. LTO, SAS, Fibre Channel, eSATA

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster