Apple Mac і мудрагелістыя прылады. LTO, SAS, Fibre Channel, eSATA

Тэмай гэтага артыкула з'яўляецца падлучэнне да Маку вонкавых прылад па інтэрфейсах SAS, Fibre Channel (FC), eSATA. Адразу абмовімся, што для рашэння задачы доступу да такіх прылад існуе шлях здаровага чалавека: сабраць танны PC, уторкнуць туды карту кантролера HBA SAS або FC (напрыклад, найпросты адаптар LSI), падлучыць да гэтага кантролера свае прылады, усталяваць на PC любы лінукс і працаваць з Мака праз сетку. Але гэта банальна і нецікава. Мы пойдзем шляхам хардкора і будзем падключаць свае прылады непасрэдна да Мака.

Што нам для гэтага спатрэбіцца:
- прыстойная колькасць грашовых сродкаў для куплі новай апаратуры, або поспех у аўкцыёнах на eBay (дзе, прыклаўшы крыху намаганняў, можна купіць патрэбную апаратуру папярэдніх пакаленняў раз у 10 танней, чым па прайс-лісце);
– гэты артыкул.

Каб працаваць з магнітнай стужкай (цяпер амаль паўсюдна прадстаўленай фарматам LTO), неабходна мець істужачны назапашвальнік (стрымер) або істужачную бібліятэку стандарту LTO. Гэта даволі дарагая прылада пры першаснай куплі (ад сотняў тысяч рублёў), але вартае разумных грошай пры куплі б/к. Паколькі пакаленні LTO мяняюцца прыкладна кожныя два гады, а сумяшчальнасць абмежавана двума пакаленнямі, то другасны рынак у дастатковай ступені насычаны працаздольнымі прыладамі чатырохгадовай і больш даўнасці, г.зн. пазамінулага і далей пакаленні. Калі вы купляеце новую прыладу для камерцыйных мэт, то самі разумееце навошта яно вам трэба. Калі жадаеце купіць для хаты і сем'і, то можаце разгледзець гэты варыянт, як спосаб архівавання інфармацыі (паколькі самі носьбіты вельмі танныя ў разліку на 1 гігабайт).

Пачынальна з пакалення LTO-5 (і збольшага LTO-4), прылады для працы з магнітнай стужкай апаратна падлучаюцца да кампутара па інтэрфейсе SAS або FC (звычайна існуе два варыянту выканання кожнай прылады)

З іншага боку, кампанія Apple ласкава падае нам у нашым Маку інтэрфейс USB-C (які працуе па пратаколах USB, Thunderbolt 3 ці DisplayPort), часам інтэрфейс Ethernet, а таксама фірмовыя адаптары Thunderbolt 3 – Thunderbolt 2 і Thunderbolt – FireWire 800.

Бязвыхаднае становішча? Не зусім. На шчасце, шына Thunderbolt можа працаваць у рэжыме PCIe і забяспечваць магчымасць падлучэння карт PCIe такой жа выявай, як калі б яны былі ўсталяваныя непасрэдна ўнутр карпусы кампутара. За рахунак гэтага магчымыя любыя пашырэнні апаратнай канфігурацыі Мака, быў бы які адпавядае адаптар і драйверы.

Канцэптуальна найпростым спосабам рашэння задачы з'яўляецца вонкавы бокс для адаптараў PCIe з інтэрфейсам Thunderbolt (PCIe card expansion system), у які можна ўсталяваць кантролер (Host bus adapter, HBA) SAS або FC. Напрыклад, такія боксы выпускае фірма Санет і некаторыя іншыя. Тут ёсць нюанс: нам падыдзе далёка не кожны кантролер, а толькі які мае драйвер пад macOS. Такіх поплаткаў наогул трохі, і самыя танныя і папулярныя (напрыклад, тыя ж LSI) у іх лік не ўваходзяць. На шчасце, фірма Sonnet дала сабе працу скласці табліцу сумяшчальнасці карт PCIe з рознымі АС праз інтэрфейс Thunderbolt.

Іншы спосаб рашэння - набыццё гатовага канвертара інтэрфейсу Thunderbolt - SAS або Thunderbolt - FC, які, па сутнасці, уяўляе сабой ужо гатовую зборку з бокса і кантролера. Найбольш вядомая на дадзеным напрамку фірма ATTO, Але сустракаюцца і вырабы іншых фірмаў.

Заўважым, што не ўсе кантролеры SAS і FC атэставаны на адпаведнасць стандарту LTO, бо гэта само па сабе каштуе грошай. Некаторыя вытворцы прама пішуць, што праца іх кантролераў са істужачнымі назапашвальнікамі не прадугледжана.

Для паўнаты карціны адзначым, што фірма mLogic выпускае. прылада, уяўлялае сабой назапашвальнік IBM LTO-8 у вонкавым корпусе, у які адразу ж інтэграваны канвертар SAS у Thunderbolt 3. Гэта, аднак, рэч яшчэ больш экзатычная, чым усё вышэйапісанае, асабліва па мерках нашых краёў. Сумняваюся, што гэтая прылада можна нават легальна завезці ў Расею (назапашвальнікі LTO утрымоўваюць крыптаграфічныя сродкі, і вытворцы, такія як IBM і HP, па гэтай прычыне атрымліваюць на кожную мадэль дазвол ФСБ на імпарт).

Далей мы разгледзім для прыкладу пэўны камплект абсталявання, уладальнікам якога аўтар стаў у выніку некалькіх удалых набыццяў, але агульны прынцып павінен захоўвацца для ўсіх варыянтаў.

Такім чынам у нас ёсць для працы са стужкай наступнае абсталяванне:
- кампутар Apple Mac mini 2018 з macOS 10.15 Catalina, які мае парты USB-C з падтрымкай Thunderbolt 3;
- адаптар Apple Thunderbolt 3 / Thunderbolt 2;
- кабель Apple Thunderbolt 2;
– канвэртар інтэрфейсу ATTO ThunderLink SH 1068 (2*Thunderbolt / 2*SAS-2);
- кабель SAS SFF-8088 - SFF-8088;
- істужачны назапашвальнік LTO-5 IBM TS2350;
- картрыджы LTO-5, які чысціць картрыдж.

Зараз, як гаворыцца, са ўсёй гэтай бздурой мы паспрабуем узляцець.

Спампоўваем з сайта ATTO апошнюю версію драйвера ThunderLink SH 1068 (мабыць, для нашай выгоды ён аб'яднаны з драйверам SH 2068 і знаходзіцца ў падзеле 2068, аб чым напісана толькі ўсярэдзіне самога архіва з драйверам) і канфігурацыйнай утыліты ATTO.

Apple Mac і мудрагелістыя прылады. LTO, SAS, Fibre Channel, eSATA

Драйвер, натуральна, мае патрэбу ва ўсталёўцы. Перад падобнымі дзеяннямі аўтар раіць заўсёды рабіць снапшот файлавай сістэмы APFS загрузнай кружэлкі камандай

tmutil localsnapshot

альбо резевную копію загрузнай кружэлкі, калі тамака HFS+. Мала што. Потым са снапшота будзе лёгка адкаціцца.

Далей неспрактыкаваны, але праяўлялы належную абачлівасць, розум, несумненна, схіліцца да таго, каб уважліва прачытаць інструкцыю ATTO па ўсталёўцы драйвера і выканаць яе. У выніку - тадам! – атрымліваем аперацыйную сістэму, якая вісне на этапе загрузкі. Тут нам можа спатрэбіцца снапшот, з якога можна аднавіцца, выклікаўшы Time machine з часткі аднаўлення, ці ж з той жа часткі аднаўлення можна ўручную сцерці хвароб kext з каталога пашырэнняў ядра (аўтар у агульным выпадку не рэкамендуе так рабіць).

Чаму так адбываецца? Бо пра нас паклапацілася фірма Apple. У апошніх версіях macOS нельга так проста ўзяць і ўкараніць старонні код у працэс загрузкі. Добрыя праграмісты Apple заблакавалі падобныя дэструктыўныя паводзіны. Дакладней, заблакавалі напалову, калі чаканне драйвера ўкараняецца, а сам драйвер няма, таму ўсё проста завісае.

Што павінен рабіць спрактыкаваны розум перад усталёўкай драйвера? Па-першае, даць каманду:

csrutil status

Калі ў адказ на яе мы атрымліваем:

System Integrity Protection Status: enabled.

тое гэта азначае, што добрыя праграмісты Apple клапоцяцца пра нас, таму нічога ў нас не выйдзе, пакуль мы не адключым іх выдатную абарону. Для гэтага перазагружаемся ў раздзел аднаўлення (⌘R), выклікаем тэрмінал і даем каманду:

csrutil disable

Пасля гэтага перазагружаемся ў працоўную сістэму, і ўжо тады ўсталеўваны драйвер, а заадно і канфігурацыйную ўтыліту ATTO (у прынцыпе, канфігурацыйная ўтыліта патрэбна толькі для дыягностыкі і не патрабуецца пры звычайнай працы). Па ходзе справы, калі папросяць, пацвярджаем у сістэмных наладах аўтарызацыю фірмы ATTO. Пасля ўсталёўкі можна зноў перазагрузіцца ў частку аднаўлення і даць каманду

csrutil enable

У Apple зноў пра нас клапоцяцца.

Цяпер у нас ёсць падтрыманы драйверам інтэрфейс да вонкавых прылад SAS (або FС, калі б выкарыстоўваўся канвэртар FC). Але як працаваць са стужкай на лагічным узроўні?

Як вядома неспрактыкаванаму, але эрудзіраванаму, розуму, любая Unix-сумяшчальная сістэма падтрымлівае істужачныя назапашвальнікі на ўзроўні ядра і асноўных сістэмных утыліт, да якіх, першым чынам, ставяцца mt (кіраванне стужкапрацяжкай) і tar (архіватар, мелы падтрымку працы з архівамі на стужцы) . Аднак што ўдакладніць на гэта спрактыкаваны розум? Любая Unix-сумяшчальная сістэма, акрамя macOS. Фірма Apple паклапацілася пра нас, канфіскаваўшы падтрымку істужачных прылад са свайго кода.

Але няўжо нельга вярнуць гэты код, партаваўшы стандартныя опенсоурсные ўтыліты Unix у macOS? Добрая навіна складаецца ў тым, што гэта ўжо зрабіла фірма Tolis (спасылку на якую я не прыводжу) у сваім прадукце Tolis Tape Tools. Дрэнная навіна ў тым, што карыстанне вынікамі сваёй працы згаданая фірма ацэньвае ў 399 долараў ЗША. Ацэнкі гэтага факта могуць быць рознымі, але асабіста аўтар не гатовы да таго, каб плаціць камусьці 400 баксаў за код, па большай частцы напісаны зусім іншымі людзьмі і які знаходзіцца ў адкрытым карыстанні з 1970-х гадоў, а таму дадзенае пытанне аўтар для сябе лічыць зачыненым. (Між іншым, на гітхабе ёсць закінуты ў смутным стане свабодны праект IOSCSITape на гэтую ж тэму).

На шчасце, у свеце існуе карпарацыя IBM, камерцыйныя апетыты якой маюць зусім іншыя маштабы, і таму не выяўляюцца ва ўсякай драбязе. У прыватнасці, ёю распрацавана істужачная файлавая сістэма LTFS з адчыненым зыходным кодам, якая распаўсюджваецца ў тым ліку і для macOS.

Тут існуе нюанс, які складаецца ў тым, што розныя вытворцы істужачных прылад выпускаюць свае ўласныя версіі LTFS, якія падтрымліваюць свае прылады. Бо аўтар выкарыстоўвае істужачны назапашвальнік IBM, то і LTFS усталяваў ад IBM. Для назапашвальнікаў іншых фірмаў, магчыма, запатрабуюцца іх уласныя порты LTFS. І існуе ўніверсальная рэалізацыя openLTFS на гітхабе і хаумбру.

Для нас важна, што LTFS выкарыстоўвае функцыю партыцыянавання носьбіта, і таму можа працаваць з прыладамі і картрыджамі, пачынаючы з пакалення LTO-5.

Такім чынам, у нашым выпадку спампоўваем з сайта IBM прадукт IBM Spectrum Archive Single Drive Edition для macOS, які як раз і ўключае рэалізацыю LTFS. Без усялякіх прыгод усталёўваны прадукт яго ўласным усталёўнікам. Па ходзе справы ён усталёўвае таксама пакет FUSE, пры гэтым у сістэмных наладах прыйдзецца пацвердзіць аўтарызацыю разумнага праграміста па імі Anatol Pomozov, ад якой у дадзеным выпадку залежыць цэлая IBM. Рэспект і паважуха гэтаму чалавеку.

Мэтазгодна адразу ў файле /Library/Frameworks/LTFS.framework/Versions/Current/etc/ltfs.conf.local прапісаць радок:

option single-drive sync_type=time@1

якая задае мантаванне стужкі па змаўчанні са скідам буфера запісу праз 1 хвіліну неактыўнасці (па змаўчанні 5 хвілін).

Apple Mac і мудрагелістыя прылады. LTO, SAS, Fibre Channel, eSATA

Нарэшце, усё гатова для падключэння. Падлучальны ланцужок: Mac - адаптар T3/T2 - кабель Thunderbolt - канвертар ATTO - кабель SAS - істужачны назапашвальнік (выбар з некалькіх партоў на Маку, канвертары і назапашвальніку няважны). Уключаем харчаванне канвертара. Уключаем сілкаванне істужачнага назапашвальніка. Чакаем канчатка ініцыялізацыі назапашвальніка па ім індыкацыі.

Даем каманду:

ltfs -o device_list

Ура! Атрымліваем (у звычайнай для IBM дыягнастычнай манеры):

307 LTFS14000I LTFS starting, LTFS version 2.4.2.0 (10418), log level 2.
307 LTFS14058I LTFS Format Specification version 2.4.0.
307 LTFS14104I Вызначана "ltfs -o device_list".
307 LTFS14105I Гэты binary is built for Mac OS X.
307 LTFS14106I GCC version is 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
307 LTFS17087I version kernel: Darwin kernel version 19.4.0: Wed Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
307 LTFS17085I Plugin: Loading "iokit" tape backend.
Tape Device list:.
Device Name = 0, Vendor ID = IBM, Product ID = ULT3580-TD5, Serial Number = **********, Product Name = [ULT3580-TD5].

Устаўляем касету, чакаем загрузкі і фарматуем:

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

Тут параметр -d задае нумар назапашвальніка (заўсёды нуль, калі ён адзіны, але апускаць у гэтай камандзе нельга), -n - імя стужкі (можна яго не паказваць), а параметр -r патрабуе размяшчаць змесціва файлаў .DS_Store, не якія перавышаюць па памеры 10 мегабайт, у індэксным (г.зн. прызначаным для каталогаў) раздзеле стужкі замест падзелу дадзеных.

Пайшло таямнічае жыццё ў істужачным назапашвальніку. Чакаем пару хвілін, атрымліваем у адказ:

LTFS15000I Starting mkltfs, LTFS version 2.4.2.0 (10418), log level 2.
LTFS15041I Выключана з "mkltfs -d 0 -nTest -r size=10M/name=.DS_Store".
LTFS15042I Гэты binary is built for Mac OS X.
LTFS15043I GCC version is 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
LTFS17087I Kernel version: Darwin Kernel Version 19.4.0: Wed Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
LTFS15003I Formatting device '0'.
LTFS15004I LTFS volume blocksize: 524288.
LTFS15005I Index partition placement policy: size=10M/name=.DS_Store.

LTFS11337I Update index-dirty flag (1) - NO_BARCODE (0x0x1021081e0).
LTFS17085I Plugin: Loading "iokit" tape backend.
LTFS30810I Opening a device through iokit driver (0).
LTFS30814I Vendor ID is IBM.
LTFS30815I Product ID 'ULT3580-TD5'.
LTFS30816I Firmware revision is H976.
LTFS30817I Drive serial is **********.
LTFS17160I Maximum device block size is 1048576.
LTFS11330I Loading cartridge.
LTFS30854I Logical block protection is disabled.
LTFS11332I Load successful.
LTFS17157I Змяняе drive setting to write-anywhere mode.
LTFS15049I Checking the media (mount).
LTFS30854I Logical block protection is disabled.
LTFS15010I Creating data partition па SCSI partition 1.
LTFS15011I Папулярны index partition on SCSI partition 0.
LTFS17165I Resetting medium capacity proportion.
LTFS11097I Partitioning the medium.
LTFS11100I Writing label to partition b.
LTFS11278I Writing index to partition b.
LTFS30808I READ_ATTR (0x8c) returns -20501.
LTFS30865I READ_ATTR returns Invalid Field in CDB (-20501) 0.
LTFS30836I Cannot read attribute (-20501).
LTFS11336I The atribut does not exist. Ignore the expected error.
LTFS17235I Плямачы index NO_BARCODE да b (Reason: Format, 0 files) **********.
LTFS17236I Wrote index NO_BARCODE (b, **********).
LTFS11337I Update index-dirty flag (0) - NO_BARCODE (0x0x1021081e0).
LTFS11100I Writing label to partition.
LTFS11278I Writing index to partition a.
LTFS30808I READ_ATTR (0x8c) returns -20501.
LTFS30865I READ_ATTR returns Invalid Field in CDB (-20501) 0.
LTFS30836I Cannot read attribute (-20501).
LTFS11336I The atribut does not exist. Ignore the expected error.
LTFS17235I Паказвае index NO_BARCODE на (Рэазон: Format, 0 files) 9068025555.
LTFS17236I Wrote index NO_BARCODE (a, **********).
LTFS15013I Volume UUID is: 3802a70d-bd9f-47a6-a999-eb74ffa67fc1.

LTFS15019I Volume capacity is 1425 GB.
LTFS30854I Logical block protection is disabled.
LTFS15024I Medium formatted successfully.

Мантуем адфарматаваную стужку:

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

Атрымліваем яшчэ пару хвілін працы назапашвальніка, дыягностыку:

307 LTFS14000I LTFS starting, LTFS version 2.4.2.0 (10418), log level 2.
307 LTFS14058I LTFS Format Specification version 2.4.0.
307 LTFS14104I Выключана з "ltfs /Volumes/LTFS/".
307 LTFS14105I Гэты binary is built for Mac OS X.
307 LTFS14106I GCC version is 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
307 LTFS17087I version kernel: Darwin kernel version 19.4.0: Wed Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
307 LTFS14063I Sync type is time, Sync time 60 sec.
307 LTFS17085I Plugin: Loading "iokit" tape backend.
307 LTFS17085I Plugin: Падарунак "уніфікаваны" iosched backend.
307 LTFS14095I Уладкаванне прылады, на якой выкарыстоўваецца карта, выкарыстоўваецца ў любым выпадку.
307 LTFS30810I Opening a device праз iokit driver (0).
307 LTFS30814I Vendor ID is IBM.
307 LTFS30815I Product ID 'ULT3580-TD5'.
307 LTFS30816I Firmware revision is H976.
307 LTFS30817I Drive serial is **********.
307 LTFS17160I Maximum device block size is 1048576.
307 LTFS11330I Loading cartridge.
307 LTFS30854I Logical block protection is disabled.
307 LTFS11332I Load successful.
307 LTFS17157I Змяніць шлях, каб правяраць любое месца.
307 LTFS11005I Mounting the volume.
307 LTFS30854I Logical block protection is disabled.
307 LTFS17227I Tape atribut: Vendor = IBM.
307 LTFS17227I Атрымлівае Tape: Application Name = LTFS.
307 LTFS17227I Атрымлівае Tape: Application Version = 2.4.2.0.
307 LTFS17227I Атрымлівае Tape: Medium Label =.
307 LTFS17228I Атрымлівае Tape: Text Localization ID = 0x81.
307 LTFS17227I Tape atribut: Barcode =.
307 LTFS17227I Атрымлівае Tape: Application Format Version = 2.4.0.
307 LTFS17228I Атрымлівае Tape: Volume Lock Status = 0x00.
307 LTFS17227I Атрымлівае tape: Media Pool name =.
307 LTFS14111I Initial setup successfully completed.
307 LTFS14112I Invoke 'mount' выкарыстоўваецца для заканчэння бягучага набору.
307 LTFS14113I Specified mount point is listed if succeeded.

І вось яна, наша стужка на працоўным стале, з імем Test(ltfs)! Безназоўная ж стужка атрымае імя OSXFUSE Volume 0 (ltfs).

Цяпер можна з ёй працаваць.

Apple Mac і мудрагелістыя прылады. LTO, SAS, Fibre Channel, eSATA

Наогул трэба мець на ўвазе, што пажадана не марнатравіць праглядам змесціва каталогаў стужкі ў вокнах файндера, бо гэта неверагодна выдатковая для LTFS аперацыя, а лепш працаваць усёткі камандамі тэрмінала, або проста скідаць рэзервова які капіюецца каталог оптам на стужку, як паказана у акне вышэй.

Існуе, дарэчы, адмыслова напісаная IBM утыліта ltfs_copy і яе клоны, прызначаная для больш эфектыўнага капіявання паміж стужкай і кружэлкай, але пакуль аўтару не атрымалася іх знайсці ў адчыненым доступе пры павярхоўным пошуку.

Размантаваць стужку можна камандай:

umount /Volumes/LTFS

ці проста выкінуць у кошык.

Наогул у прыродзе існуюць нейкія графічныя абалонкі для macOS для палягчэння гэтых дзеянняў, але ці нам, пасля такіх скрыўленняў, баяцца набраць некалькі радкоў у тэрмінале?

Як пабочнае следства, атрымліваем магчымасць праз кабель SAS/4*eSATA падлучаць вонкавыя дыскі eSATA.

Apple Mac і мудрагелістыя прылады. LTO, SAS, Fibre Channel, eSATA

Крыніца: habr.com

Дадаць каментар