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

L'argomento di questo articolo è la connessione di dispositivi esterni a un Mac tramite interfacce SAS, Fibre Channel (FC) e eSATA. Diciamo subito che per risolvere il problema dell'accesso a tali dispositivi esiste la strada da persona sana: costruire un PC economico, collegare una scheda controller HBA SAS o FC (ad esempio un semplice adattatore LSI), collegare i propri dispositivi a questo controller , installa qualsiasi Linux sul PC e lavora da Mac tramite la rete. Ma questo è banale e poco interessante. Seguiremo il percorso hardcore e collegheremo i nostri dispositivi direttamente al Mac.

Di cosa abbiamo bisogno per questo:
– una discreta somma di denaro per acquistare nuova attrezzatura, o buona fortuna nelle aste su eBay (dove, con un piccolo sforzo, è possibile acquistare l'attrezzatura necessaria delle generazioni precedenti a un prezzo 10 volte inferiore rispetto al prezzo di listino);
- Questo articolo.

Per lavorare con il nastro magnetico (ormai quasi universalmente rappresentato nel formato LTO), è necessario disporre di un'unità nastro LTO (streamer) o di una libreria di nastri. Questo è un dispositivo piuttosto costoso per l'acquisto iniziale (da centinaia di migliaia di rubli), ma vale una somma di denaro ragionevole quando si acquista usato. Poiché le generazioni LTO cambiano circa ogni due anni e la compatibilità è limitata a due generazioni, il mercato secondario è abbastanza saturo di dispositivi funzionanti vecchi di quattro anni o più, vale a dire la penultima generazione e oltre. Se acquisti un nuovo dispositivo per scopi commerciali, capisci tu stesso perché ne hai bisogno. Se desideri acquistare per la tua casa e la tua famiglia, puoi considerare questa opzione come un modo per archiviare le informazioni (poiché i media stessi sono molto economici per 1 gigabyte).

A partire dalla generazione LTO-5 (e in parte LTO-4), i dispositivi per lavorare con il nastro magnetico sono collegati hardware al computer tramite un'interfaccia SAS o FC (di solito ci sono due versioni di ciascun dispositivo)

D'altra parte, Apple ci fornisce gentilmente un'interfaccia USB-C nel nostro Mac (funzionante con i protocolli USB, Thunderbolt 3 o DisplayPort), a volte un'interfaccia Ethernet, nonché Thunderbolt 3 - Thunderbolt 2 e Thunderbolt - FireWire 800 proprietarie. adattatori.

Stallo? Non proprio. Fortunatamente, Thunderbolt può funzionare in modalità PCIe e consentire il collegamento delle schede PCIe come se fossero installate direttamente all'interno del case del computer. Per questo motivo è possibile qualsiasi espansione della configurazione hardware del Mac, a condizione che siano disponibili l'adattatore e i driver adeguati.

Concettualmente il modo più semplice per risolvere il problema è un box esterno per adattatori PCIe con interfaccia Thunderbolt (sistema di espansione della scheda PCIe), nel quale è possibile installare un adattatore bus host SAS o FC (HBA). Ad esempio, tali scatole sono prodotte dall'azienda Sonetto e alcuni altri. C'è una sfumatura qui: non tutti i controller sono adatti a noi, ma solo quelli che hanno un driver per macOS. Esistono solo poche schede di questo tipo e quelle più economiche e popolari (ad esempio la stessa LSI) non sono incluse nel loro numero. Fortunatamente, Sonnet si è preso la briga di compilarlo tabella di compatibilità Schede PCIe con vari sistemi operativi tramite interfaccia Thunderbolt.

Un'altra soluzione è acquistare un convertitore di interfaccia Thunderbolt - SAS o Thunderbolt - FC già pronto, che, di fatto, è un assemblaggio già pronto di una scatola e un controller. L'azienda più famosa in questo settore ATTO, ma ci sono anche prodotti di altre aziende.

Tieni presente che non tutti i controller SAS e FC sono certificati per essere conformi allo standard LTO, poiché questo di per sé costa denaro. Alcuni produttori scrivono direttamente che i loro controller non sono progettati per funzionare con le unità nastro.

Per completare il quadro notiamo che mLogic produce устройство, che è un'unità IBM LTO-8 in un case esterno, in cui è immediatamente integrato un convertitore da SAS a Thunderbolt 3. Questa, tuttavia, è una cosa ancora più esotica di tutto quanto sopra descritto, soprattutto per gli standard della nostra regione. Dubito che questo dispositivo possa essere importato legalmente in Russia (le unità LTO contengono funzionalità crittografiche e per questo motivo produttori come IBM e HP ricevono il permesso di importazione FSB per ciascun modello).

Successivamente, considereremo, come esempio, un insieme specifico di apparecchiature, il cui proprietario è diventato l'autore a seguito di numerose acquisizioni di successo, ma il principio generale dovrebbe essere mantenuto per tutte le opzioni.

Quindi disponiamo della seguente attrezzatura 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 di interfaccia ATTO ThunderLink SH 1068 (2*Thunderbolt / 2*SAS-2);
– Cavo SAS SFF-8088 – SFF-8088;
– unità nastro LTO-5 IBM TS2350;
– Cartucce LTO-5, cartuccia di pulizia.

Adesso, come si suol dire, con tutta questa roba cercheremo di decollare.

Scarichiamo dal sito ATTO l'ultima versione del driver ThunderLink SH 1068 (a quanto pare, per nostra comodità, è combinato con il driver SH 2068 e si trova nella sezione 2068, che è scritta solo all'interno dell'archivio con il driver) e il Utilità di configurazione ATTO.

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

Il driver, ovviamente, necessita di installazione. Prima di tali azioni, l'autore consiglia di scattare sempre uno snapshot del file system APFS del disco di avvio con il comando

tmutil localsnapshot

o una copia di backup del disco di avvio, se dispone di HFS+. Non si sa mai. Quindi sarà facile tornare indietro dallo snapshot.

Successivamente, la mente inesperta ma dovuta alla dovuta diligenza sarà senza dubbio incline a leggere attentamente le istruzioni di installazione del driver ATTO e seguirle. Di conseguenza - tadam! – otteniamo un sistema operativo che si blocca in fase di caricamento. Qui potremmo aver bisogno di uno snapshot da cui possiamo recuperare chiamando Time machine dalla partizione di ripristino, oppure dalla stessa partizione di ripristino possiamo cancellare manualmente il kext malato dalla directory delle estensioni del kernel (l'autore generalmente sconsiglia di farlo).

Perché sta succedendo? Perché Apple si è presa cura di noi. Nelle versioni recenti di macOS, non è possibile inserire facilmente codice estraneo nel processo di avvio. I bravi programmatori Apple hanno bloccato questo comportamento distruttivo. Più precisamente, l'hanno bloccato a metà, quando le aspettative dell'autista sono state soddisfatte, ma l'autista stesso no, quindi tutto si blocca.

Cosa dovrebbe fare una mente sofisticata prima di installare un driver? Innanzitutto, dai il comando:

csrutil status

Se in risposta riceviamo:

Stato di protezione dell'integrità del sistema: abilitato.

allora questo significa che i bravi programmatori Apple si prendono cura di noi, quindi niente funzionerà per noi finché non disabilitiamo la loro meravigliosa protezione. Per fare ciò, riavvia la partizione di ripristino (⌘R), chiama il terminale ed emetti il ​​comando:

csrutil disable

Successivamente, riavviamo il sistema funzionante e solo successivamente installiamo il driver e contemporaneamente l'utilità di configurazione ATTO (in linea di principio, l'utilità di configurazione è necessaria solo per la diagnostica e non è necessaria durante il normale funzionamento). Lungo il percorso, quando richiesto, confermiamo l'autorizzazione ATTO nelle impostazioni di sistema. Dopo l'installazione, puoi riavviare nuovamente nella partizione di ripristino e dare il comando

csrutil enable

Apple si prende di nuovo cura di noi.

Ora disponiamo di un'interfaccia supportata da driver per dispositivi SAS esterni (o FC, se è stato utilizzato un convertitore FC). Ma come lavorare con il nastro a livello logico?

Come sa la mente inesperta ma erudita, qualsiasi sistema compatibile con Unix supporta unità a nastro a livello del kernel e utilità di sistema di base, che includono principalmente mt (gestione dei nastri) e tar (archiviatore che supporta il lavoro con archivi su nastro) . Tuttavia, cosa può dire una mente sofisticata al riguardo? Qualsiasi sistema compatibile con Unix, tranne macOS. Apple si è presa cura di noi rimuovendo il supporto per i dispositivi a nastro dal suo codice.

Ma è davvero impossibile restituire questo codice effettuando il porting delle utilità Unix open source standard su macOS? La buona notizia è che Tolis (a cui non mi collego) lo ha già fatto nel loro prodotto Tolis Tape Tools. La cattiva notizia è che l’azienda menzionata costa 399 dollari per utilizzare i risultati del suo lavoro. Le stime su questo fatto possono variare, ma l'autore personalmente non è pronto a pagare qualcuno 400 dollari per un codice che è stato scritto per lo più da persone completamente diverse ed è stato utilizzato liberamente dagli anni '1970, e quindi l'autore si pone questa domanda da solo considera chiuso. (A proposito, su Github c'è un progetto gratuito abbandonato in uno stato vago IOSCSITape sullo stesso argomento).

Fortunatamente, nel mondo esiste la società IBM, i cui appetiti commerciali sono su una scala completamente diversa e quindi non si manifestano in ogni piccola cosa. In particolare ha sviluppato il file system su nastro open source LTFS, distribuito anche per macOS.

L'avvertenza qui è che diversi produttori di dispositivi a nastro rilasciano le proprie versioni di LTFS per supportare i propri dispositivi. Poiché l'autore utilizza un'unità nastro IBM, ha installato LTFS da IBM. Le unità di terze parti potrebbero richiedere le proprie porte LTFS. Ed esiste un'implementazione universale di openLTFS su Github e Homebrew.

Per noi è importante che LTFS utilizzi la funzione di partizionamento multimediale e quindi possa funzionare con dispositivi e cartucce a partire dalla generazione LTO-5.

Quindi, nel nostro caso, scarichiamo IBM Spectrum Archive Single Drive Edition per macOS dal sito Web IBM, che include l'implementazione LTFS. Senza avventure, installiamo il prodotto utilizzando il proprio programma di installazione. Lungo il percorso installa anche il pacchetto FUSE e nelle impostazioni di sistema dovrà confermare l'autorizzazione di un programmatore intelligente di nome Anatol Pomozov, dal quale in questo caso dipende l'intera IBM. Rispetto e rispetto per quest'uomo.

Si consiglia di scrivere subito nel file /Library/Frameworks/LTFS.framework/Versions/Current/etc/ltfs.conf.local la riga:

opzione sync_type=time@1 a unità singola

che specifica che il nastro viene montato per impostazione predefinita e il buffer di registrazione viene reimpostato dopo 1 minuto di inattività (l'impostazione predefinita è 5 minuti).

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

Finalmente tutto è pronto per la connessione. Colleghiamo la catena: Mac – adattatore T3/T2 – cavo Thunderbolt – convertitore ATTO – cavo SAS – unità nastro (la scelta di più porte sul Mac, convertitore e unità non è importante). Accendere il convertitore. Accendere l'unità nastro. Aspettiamo che l'unità completi l'inizializzazione secondo la sua indicazione.

Diamo il comando:

ltfs -o device_list

Evviva! Otteniamo (nel solito modo diagnostico IBM):

307 LTFS14000I LTFS in avvio, versione LTFS 2.4.2.0 (10418), livello di registro 2.
307 LTFS14058I Specifica del formato LTFS versione 2.4.0.
307 LTFS14104I Lanciato da "ltfs -o device_list".
307 LTFS14105I Questo binario è creato per Mac OS X.
307 LTFS14106I La versione GCC è compatibile con 4.2.1 Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
307 LTFS17087I Versione kernel: Darwin Kernel Versione 19.4.0: mercoledì 4 marzo 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
307 LTFS17085I Plugin: caricamento del backend del nastro “iokit”.
Elenco dei dispositivi a nastro:.
Nome dispositivo = 0, ID fornitore = IBM, ID prodotto = ULT3580-TD5, Numero di serie = **********, Nome prodotto = [ULT3580-TD5].

Inserire la cassetta, attendere il caricamento e formattare:

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

Qui il parametro -d specifica il numero dell'unità (sempre zero se è l'unico, ma non può essere omesso in questo comando), -n è il nome del nastro (puoi ometterlo) e il parametro -r richiede il posizionamento del contenuto di file .DS_Store che non superino la dimensione di 10 megabyte, nella sezione dell'indice (ovvero destinata alle directory) del nastro anziché nella sezione dei dati.

La vita misteriosa è iniziata nell'unità a nastro. Aspettiamo un paio di minuti e riceviamo la seguente risposta:

LTFS15000I Avvio di mkltfs, LTFS versione 2.4.2.0 (10418), livello di log 2.
LTFS15041I Avviato da "mkltfs -d 0 -nTest -r size=10M/name=.DS_Store".
LTFS15042I Questo binario è creato per Mac OS X.
La versione LTFS15043I GCC è compatibile con Apple Clang 4.2.1 4.1 ((tags/Apple/clang-421.11.66)).
LTFS17087I Versione kernel: Darwin Kernel Versione 19.4.0: mercoledì 4 marzo 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
LTFS15003I Dispositivo di formattazione '0'.
LTFS15004I Dimensioni blocco volume LTFS: 524288.
LTFS15005I Politica di posizionamento della partizione dell'indice: dimensione=10M/nome=.DS_Store.

LTFS11337I Aggiornamento flag indice sporco (1) - NO_BARCODE (0x0x1021081e0).
Plugin LTFS17085I: caricamento del backend del nastro “iokit”.
LTFS30810I Apertura di un dispositivo tramite il driver iokit (0).
LTFS30814I L'ID fornitore è IBM.
LTFS30815I L'ID prodotto è 'ULT3580-TD5'.
La revisione del firmware LTFS30816I è H976.
LTFS30817I Il seriale dell'unità è **********.
LTFS17160I La dimensione massima del blocco dispositivo è 1048576.
LTFS11330I Caricamento della cartuccia.
LTFS30854I La protezione del blocco logico è disabilitata.
LTFS11332I Caricamento riuscito.
LTFS17157I Modifica 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 di indice a sulla partizione SCSI 0.
LTFS17165I Reimpostazione della proporzione della capacità del supporto.
LTFS11097I Partizionamento del supporto.
LTFS11100I Scrittura dell'etichetta sulla partizione b.
LTFS11278I Scrittura dell'indice nella partizione b.
LTFS30808I READ_ATTR (0x8c) restituisce -20501.
LTFS30865I READ_ATTR restituisce un campo non valido in CDB (-20501) 0.
LTFS30836I Impossibile leggere l'attributo (-20501).
LTFS11336I L'attributo non esiste. Ignorare l'errore previsto.
LTFS17235I Scrittura dell'indice di NO_BARCODE in b (Motivo: formato, 0 file) **********.
LTFS17236I È stato scritto l'indice di NO_BARCODE (b, **********).
LTFS11337I Aggiornamento flag indice sporco (0) - NO_BARCODE (0x0x1021081e0).
LTFS11100I Scrittura dell'etichetta sulla partizione a.
LTFS11278I Scrittura dell'indice nella partizione a.
LTFS30808I READ_ATTR (0x8c) restituisce -20501.
LTFS30865I READ_ATTR restituisce un campo non valido in CDB (-20501) 0.
LTFS30836I Impossibile leggere l'attributo (-20501).
LTFS11336I L'attributo non esiste. Ignorare l'errore previsto.
LTFS17235I Scrittura dell'indice di NO_BARCODE in un (Motivo: formato, 0 file) 9068025555.
LTFS17236I È stato scritto l'indice di NO_BARCODE (a, **********).
LTFS15013I Volume UUID is: 3802a70d-bd9f-47a6-a999-eb74ffa67fc1.

LTFS15019I La capacità del volume è 1425 GB.
LTFS30854I La protezione del blocco logico è disabilitata.
LTFS15024I Mezzo formattato correttamente.

Montare il nastro formattato:

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

Abbiamo ancora un paio di minuti di funzionamento e diagnostica dell'unità:

307 LTFS14000I LTFS in avvio, versione LTFS 2.4.2.0 (10418), livello di registro 2.
307 LTFS14058I Specifica del formato LTFS versione 2.4.0.
307 LTFS14104I Lanciato da “ltfs /Volumes/LTFS/”.
307 LTFS14105I Questo binario è creato per Mac OS X.
307 LTFS14106I La versione GCC è compatibile con 4.2.1 Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
307 LTFS17087I Versione kernel: Darwin Kernel Versione 19.4.0: mercoledì 4 marzo 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
307 LTFS14063I Il tipo di sincronizzazione è "time", il tempo di sincronizzazione è 60 sec.
307 LTFS17085I Plugin: caricamento del backend del nastro “iokit”.
307 LTFS17085I Plugin: caricamento del backend iosched “unificato”.
307 LTFS14095I Impostare la modalità di scrittura ovunque dell'unità nastro per evitare l'espulsione della cartuccia.
307 LTFS30810I Apertura di un dispositivo tramite il driver iokit (0).
307 LTFS30814I L'ID fornitore è IBM.
307 LTFS30815I L'ID prodotto è 'ULT3580-TD5'.
307 LTFS30816I La revisione del firmware è H976.
307 LTFS30817I Il seriale dell'unità è **********.
307 LTFS17160I La 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 Modifica dell'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 applicazione = LTFS.
307 LTFS17227I Attributo nastro: Versione applicazione = 2.4.2.0.
307 LTFS17227I Attributo nastro: Etichetta media =.
307 LTFS17228I Attributo nastro: ID localizzazione testo = 0x81.
307 LTFS17227I Attributo nastro: Codice a barre =.
307 LTFS17227I Attributo nastro: Versione formato applicazione = 2.4.0.
307 LTFS17228I Attributo nastro: Stato blocco volume = 0x00.
307 LTFS17227I Attributo nastro: nome pool di supporti =.
307 LTFS14111I Configurazione iniziale completata con successo.
307 LTFS14112I Richiamare il comando 'mount' per verificare il risultato della configurazione finale.
307 LTFS14113I Il punto di montaggio specificato viene elencato se l'operazione ha esito positivo.

Ed eccola qui, la nostra barra multifunzione sul desktop, denominata Test(ltfs)! Il nastro senza nome verrà denominato OSXFUSE Volume 0 (ltfs).

Ora puoi lavorarci.

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

In generale, è necessario tenere presente che è consigliabile non abusare della visualizzazione del contenuto delle directory del nastro nelle finestre di ricerca, poiché si tratta di un'operazione incredibilmente costosa per LTFS, ma è meglio lavorare con i comandi del terminale o semplicemente ripristinare la directory di backup in blocco sul nastro, come mostrato nella finestra sopra.

A proposito, esiste un'utilità IBM ltfs_copy appositamente scritta e i suoi cloni, progettati per una copia più efficiente tra nastro e disco, ma finora l'autore non è riuscito a trovarli di pubblico dominio con una ricerca superficiale.

Puoi smontare il nastro con il comando:

umount /Volumes/LTFS

o semplicemente gettarlo nella spazzatura.

In natura, infatti, esistono delle sorta di shell grafiche per macOS per facilitare queste azioni, ma dopo tali perversioni, dovremmo aver paura di digitare qualche riga nel terminale?

Come effetto collaterale, abbiamo l'opportunità di collegare unità eSATA esterne tramite un cavo SAS/4*eSATA.

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

Fonte: habr.com

Aggiungi un commento