Tema acestui articol este conectarea la Mac a dispozitivelor externe prin interfețele SAS, Fibre Channel (FC), eSATA. Vom preciza de la început că pentru a accesa aceste dispozitive există o cale simplă: să construiești un PC ieftin, să instalezi o placă de control HBA SAS sau FC (de exemplu, un adapter simplu LSI), să conectezi dispozitivele tale la acest controler, să instalezi pe PC orice distribuție Linux și să lucrezi cu Mac-ul prin rețea. Dar asta este banal și neinteresant. Vom alege o abordare mai avansată și vom conecta dispozitivele noastre. direct la Mac.
Ce ne trebuie pentru asta:
– o sumă considerabilă de bani pentru achiziția de hardware nou sau noroc la licitațiile de pe eBay (unde, cu puțin efort, poți cumpăra echipamentele dorite din generații anterioare cu până la 10 ori mai ieftin decât în lista de prețuri);
– acest articol.
Pentru a lucra cu benzi magnetice (care în prezent sunt aproape universal disponibile în format LTO), este necesar un dispozitiv de stocare pe bandă (streamer) sau o bibliotecă de benzi LTO. Acesta este un dispozitiv destul de scump la achiziția inițială (de la sute de mii de ruble), dar merită un preț decent la achiziția second-hand. Deoarece generațiile LTO se schimbă aproximativ la fiecare doisprezece ani, iar compatibilitatea este limitată la două generații, piața secundară este suficient de saturată cu dispozitive funcționale din generații anterioare de patru ani sau mai multe, adică din generația precedentă sau chiar mai veche. Dacă achiziționezi un dispozitiv nou în scopuri comerciale, atunci îți poți imagina de ce ai nevoie de el. Dacă vrei să cumperi pentru acasă și familie, poți considera această opțiune ca un mod de arhivare a informației (deoarece suporturile în sine sunt foarte ieftine în raport cu 1 gigabyte).
Începând cu generația LTO-5 (și parțial LTO-4), dispozitivele pentru lucrul cu benzile magnetice sunt conectate fizic la computer prin interfața SAS sau FC (de obicei există două variante de implementare pentru fiecare dispozitiv)
Pe de altă parte, compania Apple ne oferă în Mac-ul nostru interfața USB-C (funcționând pe protocoale USB, Thunderbolt 3 sau DisplayPort), uneori interfața Ethernet, precum și adaptoarele proprii Thunderbolt 3 – Thunderbolt 2 și Thunderbolt – FireWire 800.
Situatie fără ieșire? Nu chiar. Din fericire, interfața Thunderbolt poate funcționa în modul PCIe și poate oferi posibilitatea de a conecta plăci PCIe la fel ca și cum ar fi instalate direct în carcasă. Acest lucru permite orice extindere a configurării hardware a Mac-ului, atâta timp cât există un adaptor corespunzător și drivere.
Cea mai simplă metodă conceptuală de a rezolva problema este un adaptor extern pentru PCIe cu interfață Thunderbolt (sistem de expansiune a plăcilor PCIe), în care poate fi instalat un controler (Host bus adapter, HBA) SAS sau FC. De exemplu, astfel de adaptoare sunt fabricate de compania și câteva altele. Există un aspect: nu orice controler este potrivit, ci doar cel care are driver pentru macOS. Există foarte puține astfel de plăci, iar cele mai ieftine și populare (de exemplu, aceleași LSI) nu fac parte din aceasta. Din fericire, compania Sonnet a avut amabilitatea de a crea a plăcilor PCIe cu diverse sisteme de operare prin interfața Thunderbolt.
O altă metodă de soluționare este achiziționarea unui convertor gata fabricat pentru interfața Thunderbolt – SAS sau Thunderbolt – FC, care, practic, reprezintă deja o asamblare completă din cutie și controler. Cea mai cunoscută companie în acest domeniu este , dar se întâlnesc și produse de la alte firme.
Să observăm că nu toate controlerele SAS și FC sunt certificate conform standardului LTO, deoarece acest lucru costă bani. Unii producători afirmă că utilizarea controlerelor lor cu unități de bandă nu este prevăzută.
Pentru o imagine de ansamblu completă, să menționăm că firma mLogic produce , care constă dintr-un stocare IBM LTO-8 într-o carcasă externă, în care este integrat imediat un convertor SAS în Thunderbolt 3. Aceasta, totuși, este o soluție și mai exotică decât cele descrise mai sus, mai ales prin prisma locațiilor noastre. Mă îndoiesc că acest dispozitiv poate fi importat legal în Rusia (unitățile LTO conțin mijloace criptografice, iar producătorii, cum ar fi IBM și HP, din această cauză obțin permisiunea FSB pentru fiecare model de import).
În continuare, vom analiza, de exemplu, un set specific de echipamente, deținut de autor ca rezultat al mai multor achiziții reușite, dar principiul general ar trebui să se mențină pentru toate variantele.
Așadar, avem pentru utilizarea cu banda următoarele echipamente:
– computer Apple Mac mini 2018 cu macOS 10.15 Catalina, având porturi USB-C cu suport pentru Thunderbolt 3;
– adaptor Apple Thunderbolt 3 / Thunderbolt 2;
– cablu Apple Thunderbolt 2;
– convertor de interfață ATTO ThunderLink SH 1068 (2*Thunderbolt / 2*SAS-2);
– cablu SAS SFF-8088 – SFF-8088;
– unitate de bandă LTO-5 IBM TS2350;
– cartușe LTO-5, cartuș de curățare.
Acum, așa cum se spune, cu toate aceste lucruri, vom încerca să decolăm.
Descărcăm de pe site-ul ATTO cea mai recentă versiune a driverului ThunderLink SH 1068 (se pare că, pentru confortul nostru, este combinat cu driverul SH 2068 și se află în secțiunea 2068, despre care se menționează doar în interiorul arhivei driverului) și utilitarul de configurare ATTO.

Driverul, desigur, necesită instalare. Înainte de asemenea acțiuni, autorul recomandă să facem întotdeauna un snapshot al sistemului de fișiere APFS al discului de boot cu comanda
tmutil localsnapshotsau o copie de rezervă a discului de boot, dacă acesta foloseste HFS+. Niciodată nu se știe. Apoi, din snapshot, va fi ușor să revenim.
Apoi, nesofisticatul, dar arătând o precauție adecvată, mintea va înclina, fără îndoială, să citească cu atenție instrucțiunile ATTO pentru instalarea driverului și să le urmeze. Drept rezultat – tadam! – obținem un sistem de operare care se blochează în timpul încărcării. Aici ne poate ajuta snapshot-ul, din care putem recupera, apelând Time machine din secțiunea de recuperare, sau de pe aceeași secțiune de recuperare putem șterge manual kext-ul problematic din catalogul extensiilor nucleului (autorul în general nu recomandă să se facă asta).
De ce se întâmplă asta? Pentru că firma Apple s-a îngrijit de noi. În ultimele versiuni de macOS nu se poate pur și simplu integra cod străin în procesul de încărcare. Programatorii buni de la Apple au blocat un astfel de comportament destructiv. Mai exact, au blocat pe jumătate, când așteptarea driverului este integrată, iar driverul propriu-zis nu este, astfel încât totul rămâne suspendat.
Ce ar trebui să facă o minte experimentată înainte de instalarea driverului? În primul rând, să dea comanda:
csrutil statusDacă primim ca răspuns:
System Integrity Protection status: enabled.
atunci asta înseamnă că programatorii buni de la Apple au grijă de noi, așadar nu vom reuși să facem nimic până nu dezactivăm această protecție minunată. Pentru asta, ne repornim în secțiunea de recuperare (⌘R), deschidem terminalul și dăm comanda:
csrutil disableDupă aceasta, ne repornim în sistemul de lucru și atunci instalăm driverul, precum și utilitarul de configurare ATTO (în principiu, utilitarul de configurare este necesar doar pentru diagnosticare și nu este necesar pentru funcționarea normală). Pe parcurs, atunci când este solicitat, confirmăm în setările de sistem autorizarea firmei ATTO. După instalare, putem reporni din nou în modul de recuperare și să dăm comanda
csrutil enableApple se gândește din nou la noi.
Acum avem o interfață susținută de driver pentru dispozitive externe SAS (sau FC, dacă s-ar fi folosit un convertor FC). Dar cum lucrăm cu banda la nivel logic?
După cum știe o minte neexperimentată, dar erudită, orice sistem compatibil Unix suportă unități de bandă la nivelul nucleului și al utilitarilor de sistem de bază, dintre care cele mai importante sunt mt (gestionarea benzii) și tar (arhivator, care are suport pentru lucrul cu arhive pe bandă). Totuși, ce va preciza o minte experimentată? Orice sistem compatibil Unix, în afară de macOS. Compania Apple s-a îngrijit de noi, eliminând suportul pentru dispozitivele de bandă din codul său.
Dar nu se poate recupera acest cod, portând utilitarele standard open-source Unix în macOS? Veștile bune sunt că firma Tolis (la care nu ofer link) a făcut deja acest lucru în produsul său Tolis Tape Tools. Vestea proastă este că utilizarea rezultatelor muncii sale este evaluată la 399 de dolari. Evaluările acestui fapt pot varia, dar personal autorul nu este dispus să plătească cuiva 400 de dolari pentru un cod, în mare parte scris de alte persoane și disponibil în utilizare liberă din anii '70, așa că eu consider această întrebare închisă. (Apropo, pe GitHub există un proiect abandonat într-o stare neclară pe aceleași teme).
Din fericire, există compania IBM în lume, a cărei apetit comercial are dimensiuni complet diferite și, prin urmare, nu se manifestă în orice fleacuri. În special, aceasta a dezvoltat sistemul de fișiere pe bandă LTFS cu sursă deschisă, care este distribuit și pentru macOS.
Aici există un detaliu care constă în faptul că diferiți producători de dispozitive de stocare pe bandă își lansează propriile versiuni LTFS, care sunt compatibile cu dispozitivele lor. Deoarece autorul folosește un mediu de stocare pe bandă IBM, a instalat LTFS de la IBM. Pentru unitățile altor firme, este posibil să fie necesare propriile lor porturi LTFS. Există, de asemenea, o implementare universală openLTFS pe GitHub și Homebrew.
Este important pentru noi că LTFS utilizează funcția de partitionare a suportului, astfel încât poate funcționa cu dispozitive și cartușe începând cu generația LTO-5.
Așadar, în cazul nostru, descărcăm de pe site-ul IBM produsul IBM Spectrum Archive Single Drive Edition pentru macOS, care include implementarea LTFS. Instalăm produsul fără probleme folosind instalatorul său propriu. Pe parcurs, acesta instalează și pachetul FUSE, iar în setările de sistem va trebui să confirmăm autorizarea unui programator inteligent pe nume Anatol Pomozov, de care depinde întreaga IBM. Respect și apreciere pentru acest om.
Este recomandat să adăugăm imediat în fișierul /Library/Frameworks/LTFS.framework/Versions/Current/etc/ltfs.conf.local următoarea linie:
option single-drive sync_type=time@1
care setează montarea benzii implicit cu resetarea bufferului de scriere după 1 minut de inactivitate (implicit 5 minute).

În cele din urmă, totul este pregătit pentru conectare. Conectăm lanțul: Mac – adaptor T3/T2 – cablu Thunderbolt – converter ATTO – cablu SAS – mediu de stocare pe bandă (alegerea dintre mai multe porturi pe Mac, converter și mediu nu este importantă). Pornim alimentarea converterului. Pornim alimentarea mediului de stocare pe bandă. Așteptăm finalizarea inițializării dispozitivului conform indicatoarelor sale.
Dăm comanda:
ltfs -o device_listUra! Primim (în stilul diagnostic obișnuit al IBM):
307 LTFS14000I LTFS pornit, versiunea LTFS 2.4.2.0 (10418), nivel de logare 2.
307 LTFS14058I Versiunea specificației de format LTFS 2.4.0.
307 LTFS14104I Lansat de «ltfs -o device_list».
307 LTFS14105I Acest binar este construit pentru Mac OS X.
307 LTFS14106I Versiunea GCC este 4.2.1 Compatibil Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
307 LTFS17087I Versiunea kernelului: Versiunea kernel Darwin 19.4.0: Mie Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
307 LTFS17085I Plugin: Se încarcă backend-ul de bandă «iokit».
Lista dispozitivelor de bandă:
Nume dispozitiv = 0, ID vendor = IBM, ID produs = ULT3580-TD5, Seria număr = **********, Nume produs =[ULT3580-TD5].
Introducem cartușul, așteptăm încărcarea și formatarea:
mkltfs -d 0 -nTest -r "size=10M/name=.DS_Store"Aici, parametrul -d specifică numărul dispozitivului (întotdeauna zero, dacă este singur, dar nu poate fi omis în această comandă), -n este numele benzii (poate fi omis), iar parametrul -r solicită plasarea conținutului fișierelor .DS_Store, cu dimensiunea de maximum 10 megabytes, în secțiunea index (destinată catalogării) a benzii, în loc de secțiunea de date.
A început o viață misterioasă în dispozitivul pe bandă. Așteptăm câteva minute, primim răspuns:
LTFS15000I Începând mkltfs, versiunea LTFS 2.4.2.0 (10418), nivel de jurnalizare 2.
LTFS15041I Lansat prin «mkltfs -d 0 -nTest -r size=10M/name=.DS_Store».
LTFS15042I Acest binar este construit pentru Mac OS X.
LTFS15043I Versiunea GCC este 4.2.1 Compatibilă cu Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
LTFS17087I Versiunea kernel-ului: Darwin Kernel Version 19.4.0: Mie Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
LTFS15003I Formatarea dispozitivului ‘0’.
LTFS15004I Dimensiunea blocului volumului LTFS: 524288.
LTFS15005I Politica de plasare a partiției de index: size=10M/name=.DS_Store.LTFS11337I Actualizare marcaj index-dirty (1) — NO_BARCODE (0x0x1021081e0).
LTFS17085I Plugin: Încărcarea backend-ului de bandă «iokit».
LTFS30810I Deschiderea unui dispozitiv prin driver-ul iokit (0).
LTFS30814I ID-ul furnizorului este IBM.
LTFS30815I ID-ul produsului este ‘ULT3580-TD5 ‘.
LTFS30816I Revizia firmware-ului este H976.
LTFS30817I Serialul drive-ului este **********.
LTFS17160I Dimensiunea maximă a blocului dispozitivului este 1048576.
LTFS11330I Încărcarea cartușului.
LTFS30854I Protecția blocului logic este dezactivată.
LTFS11332I Încărcare reușită.
LTFS17157I Schimbarea setării drive-ului în modul scriere-orice.
LTFS15049I Verificarea mediei (montare).
LTFS30854I Protecția blocului logic este dezactivată.
LTFS15010I Crearea partiției de date b pe partiția SCSI 1.
LTFS15011I Crearea partiției de index a pe partiția SCSI 0.
LTFS17165I Resetarea proporției capacității mediei.
LTFS11097I Partajarea mediei.
LTFS11100I Scrierea etichetei pe partiția b.
LTFS11278I Scrierea indexului pe partiția b.
LTFS30808I READ_ATTR (0x8c) returnează -20501.
LTFS30865I READ_ATTR returnează Câmp invalid în CDB (-20501) 0.
LTFS30836I Nu se poate citi atributul (-20501).
LTFS11336I Atributul nu există. Ignorați eroarea așteptată.
LTFS17235I Scrierea indexului NO_BARCODE pe b (Motiv: Format, 0 fișiere) **********.
LTFS17236I Indexul NO_BARCODE (b, **********) a fost scris.
LTFS11337I Actualizare marcaj index-dirty (0) — NO_BARCODE (0x0x1021081e0).
LTFS11100I Scrierea etichetei pe partiția a.
LTFS11278I Scrierea indexului pe partiția a.
LTFS30808I READ_ATTR (0x8c) returnează -20501.
LTFS30865I READ_ATTR returnează Câmp invalid în CDB (-20501) 0.
LTFS30836I Nu se poate citi atributul (-20501).
LTFS11336I Atributul nu există. Ignorați eroarea așteptată.
LTFS17235I Scrierea indexului NO_BARCODE pe a (Motiv: Format, 0 fișiere) 9068025555.
LTFS17236I Indexul NO_BARCODE (a, **********) a fost scris.
LTFS15013I UUID-ul volumului este: 3802a70d-bd9f-47a6-a999-eb74ffa67fc1.LTFS15019I Capacitatea volumului este 1425 GB.
LTFS30854I Protecția blocului logic este dezactivată.
LTFS15024I Mediu formatat cu succes.
Montăm banda formatată:
sudo mkdir /Volumes/LTFS
sudo chmod 777 /Volumes/LTFS/
sudo ltfs /Volumes/LTFSPrimim încă câteva minute de funcționare a dispozitivului, diagnosticare:
307 LTFS14000I LTFS pornit, versiunea LTFS 2.4.2.0 (10418), nivel de logare 2.
307 LTFS14058I Versiunea specificației de format LTFS 2.4.0.
307 LTFS14104I Lansat prin «ltfs /Volumes/LTFS/».
307 LTFS14105I Acest binar este construit pentru Mac OS X.
307 LTFS14106I Versiunea GCC este 4.2.1 Compatibil Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
307 LTFS17087I Versiunea kernelului: Versiunea kernel Darwin 19.4.0: Mie Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
307 LTFS14063I Tipul de sincronizare este «time», Timpul de sincronizare este 60 sec.
307 LTFS17085I Plugin: Se încarcă backend-ul de bandă «iokit».
307 LTFS17085I Plugin: Încărcarea backend-ului iosched «unified».
307 LTFS14095I Setează modul scriere-orice al dispozitivului de bandă pentru a evita ejecția cartușului.
307 LTFS30810I Deschiderea unui dispozitiv prin driver-ul iokit (0).
307 LTFS30814I ID-ul furnizorului este IBM.
307 LTFS30815I ID-ul produsului este ‘ULT3580-TD5 ‘.
307 LTFS30816I Revizia firmware-ului este H976.
307 LTFS30817I Serialul drive-ului este **********.
307 LTFS17160I Dimensiunea maximă a blocului dispozitivului este 1048576.
307 LTFS11330I Încărcarea cartușului.
307 LTFS30854I Protecția blocului logic este dezactivată.
307 LTFS11332I Încărcare reușită.
307 LTFS17157I Schimbarea setării drive-ului în modul scriere-orice.
307 LTFS11005I Montarea volumului.
307 LTFS30854I Protecția blocului logic este dezactivată.
307 LTFS17227I Atributul benzii: Vânzător = IBM.
307 LTFS17227I Atributul benzii: Nume aplicație = LTFS.
307 LTFS17227I Atributul benzii: Versiune aplicație = 2.4.2.0.
307 LTFS17227I Atributul benzii: Etichetă mediu =.
307 LTFS17228I Atributul benzii: ID localizare text = 0x81.
307 LTFS17227I Atributul benzii: Cod de bare =.
307 LTFS17227I Atributul benzii: Versiune format aplicație = 2.4.0.
307 LTFS17228I Atributul benzii: Stare blocare volum = 0x00.
307 LTFS17227I Atributul benzii: Nume grup media =.
307 LTFS14111I Configurarea inițială a fost finalizată cu succes.
307 LTFS14112I Invocă comanda 'mount' pentru a verifica rezultatul configurației finale.
307 LTFS14113I Punctul de montare specificat este listat dacă a reușit.
Iată, banda noastră pe desktop cu numele Test(ltfs)! Banda fără nume va primi numele OSXFUSE Volume 0 (ltfs).
Acum se poate lucra cu aceasta.

De fapt, trebuie avut în vedere că este recomandat să nu abuzezi de vizualizarea conținutului directoarelor benzii în feronerie, deoarece aceasta este o operațiune extrem de costisitoare pentru LTFS, fiind mai bine să lucrezi cu comenzile terminalului, sau pur și simplu să faci backup-ul directorului în masă pe bandă, așa cum este arătat în fereastra de mai sus.
Există, de altfel, o utilitară IBM scrisă special, ltfs_copy și clonele sale, destinat pentru o copiere mai eficientă între bandă și disc, dar autorul nu a reușit să le găsească în accesul public în timpul căutării superficiale.
Banda poate fi desfăcută cu comanda:
umount /Volumes/LTFSsau pur și simplu să fie aruncată în coș.
Există, de fapt, anumite interfețe grafice pentru macOS pentru a facilita aceste acțiuni, dar nouă, după astfel de neajunsuri, ne este teamă să tastăm câteva rânduri în terminal?
Ca un efect secundar, obținem posibilitatea de a conecta unități externe eSATA prin cablul SAS/4*eSATA.

Sursa: habr.com
