Apple Mac e dispositivos sofisticados. LTO, SAS, canal de fibra, eSATA

O tópico deste artigo é conectar dispositivos externos a um Mac por meio de interfaces SAS, Fibre Channel (FC) e eSATA. Digamos desde já que para resolver o problema de acesso a tais dispositivos, existe um caminho de pessoa sã: construa um PC barato, conecte uma placa controladora HBA SAS ou FC (por exemplo, um adaptador LSI simples), conecte seus dispositivos a este controlador , instale qualquer Linux no PC e trabalhe no Mac pela rede. Mas isso é banal e desinteressante. Seguiremos o caminho hardcore e conectaremos nossos dispositivos diretamente para Mac.

O que precisamos para isso:
– uma quantia razoável de dinheiro para comprar novos equipamentos, ou boa sorte nos leilões do eBay (onde, com um pouco de esforço, você pode comprar os equipamentos necessários das gerações anteriores 10 vezes mais baratos que o preço de tabela);
- Este artigo.

Para trabalhar com fita magnética (agora quase universalmente representada no formato LTO), você deve ter uma unidade de fita LTO (streamer) ou uma biblioteca de fitas. Este é um dispositivo bastante caro para a compra inicial (de centenas de milhares de rublos), mas vale uma quantia razoável de dinheiro na compra de um usado. Como as gerações de LTO mudam aproximadamente a cada dois anos e a compatibilidade é limitada a duas gerações, o mercado secundário está bastante saturado com dispositivos funcionais com quatro anos ou mais, ou seja, a geração penúltima e além. Se você comprar um novo dispositivo para fins comerciais, entenderá por que precisa dele. Se você deseja comprar para sua casa e família, pode considerar esta opção como uma forma de arquivar informações (já que as próprias mídias são muito baratas por 1 gigabyte).

A partir da geração LTO-5 (e parcialmente LTO-4), os dispositivos para trabalhar com fita magnética são conectados em hardware ao computador por meio de uma interface SAS ou FC (normalmente existem duas versões de cada dispositivo)

Por outro lado, a Apple gentilmente nos fornece uma interface USB-C em nosso Mac (funcionando usando os protocolos USB, Thunderbolt 3 ou DisplayPort), às vezes uma interface Ethernet, bem como Thunderbolt 3 proprietário - Thunderbolt 2 e Thunderbolt - FireWire 800 adaptadores.

Impasse? Na verdade. Felizmente, o Thunderbolt pode operar no modo PCIe e permitir que placas PCIe sejam conectadas da mesma forma como se estivessem instaladas diretamente dentro do gabinete do computador. Devido a isso, qualquer expansão da configuração de hardware do Mac é possível, desde que haja adaptador e drivers apropriados.

Conceitualmente, a maneira mais simples de resolver o problema é uma caixa externa para adaptadores PCIe com interface Thunderbolt (sistema de expansão de placa PCIe), na qual você pode instalar um adaptador de barramento host (HBA) SAS ou FC. Por exemplo, essas caixas são produzidas pela empresa Soneto e alguns outros. Há uma nuance aqui: nem todo controlador é adequado para nós, mas apenas aquele que possui driver para macOS. Existem apenas algumas dessas placas, e as mais baratas e populares (por exemplo, a mesma LSI) não estão incluídas em seu número. Felizmente, Sonnet se deu ao trabalho de compilar tabela de compatibilidade Placas PCIe com vários sistemas operacionais via interface Thunderbolt.

Outra solução é adquirir um conversor de interface Thunderbolt - SAS ou Thunderbolt - FC pronto, que, na verdade, é um conjunto pronto de caixa e controlador. A empresa mais famosa nesta área ATTO, mas também existem produtos de outras empresas.

Observe que nem todos os controladores SAS e FC são certificados em conformidade com o padrão LTO, pois isso por si só custa dinheiro. Alguns fabricantes escrevem diretamente que seus controladores não foram projetados para funcionar com unidades de fita.

Para completar o quadro, notamos que mLogic produz dispositivo, que é um drive IBM LTO-8 em um gabinete externo, no qual é imediatamente integrado um conversor SAS para Thunderbolt 3. Isso, no entanto, é algo ainda mais exótico do que tudo descrito acima, especialmente para os padrões de nossa região. Duvido que este dispositivo possa ser importado legalmente para a Rússia (as unidades LTO contêm recursos criptográficos e fabricantes como IBM e HP recebem permissão de importação do FSB para cada modelo por esse motivo).

A seguir, consideraremos, a título de exemplo, um conjunto específico de equipamentos, cujo proprietário se tornou o autor em decorrência de diversas aquisições bem-sucedidas, mas o princípio geral deve ser mantido para todas as opções.

Portanto temos os seguintes equipamentos para trabalhar com fita:
– Computador Apple Mac mini 2018 com macOS 10.15 Catalina, possuindo portas USB-C com suporte Thunderbolt 3;
– Adaptador Apple Thunderbolt 3/Thunderbolt 2;
– Cabo Apple Thunderbolt 2;
– Conversor de interface ATTO ThunderLink SH 1068 (2*Thunderbolt / 2*SAS-2);
– Cabo SAS SFF-8088 – SFF-8088;
– unidade de fita LTO-5 IBM TS2350;
– Cartuchos LTO-5, cartucho de limpeza.

Agora, como dizem, com tudo isso vamos tentar decolar.

Baixamos do site da ATTO a versão mais recente do driver ThunderLink SH 1068 (aparentemente, para nossa conveniência, ele é combinado com o driver SH 2068 e está localizado na seção 2068, que está escrita apenas dentro do arquivo com o driver) e o Utilitário de configuração ATTO.

Apple Mac e dispositivos sofisticados. LTO, SAS, canal de fibra, eSATA

O driver, claro, precisa de instalação. Antes de tais ações, o autor aconselha sempre tirar um instantâneo do sistema de arquivos APFS do disco de inicialização com o comando

tmutil localsnapshot

ou uma cópia de backup do disco de inicialização, se tiver HFS+. Nunca se sabe. Então será fácil reverter o instantâneo.

Em seguida, a mente inexperiente, mas com a devida diligência, sem dúvida estará inclinada a ler atentamente as instruções de instalação do driver ATTO e segui-las. Como resultado - tadam! – obtemos um sistema operacional que trava na fase de carregamento. Aqui podemos precisar de um instantâneo do qual podemos recuperar chamando o Time Machine da partição de recuperação, ou da mesma partição de recuperação podemos apagar manualmente o kext doente do diretório de extensões do kernel (o autor geralmente não recomenda fazer isso).

Por que isso está acontecendo? Porque a Apple cuidou de nós. Nas versões recentes do macOS, você não pode injetar código estrangeiro facilmente no processo de inicialização. Os bons programadores da Apple bloquearam esse comportamento destrutivo. Mais precisamente, eles bloquearam no meio do caminho, quando a expectativa do motorista é implementada, mas o motorista em si não, então tudo congela.

O que uma mente sofisticada deve fazer antes de instalar um driver? Primeiro, dê o comando:

csrutil status

Se em resposta a isso recebermos:

Status da proteção de integridade do sistema: ativado.

então isso significa que os bons programadores da Apple se preocupam conosco, então nada funcionará para nós até que desativemos sua maravilhosa proteção. Para fazer isso, reinicie na partição de recuperação (⌘R), chame o terminal e emita o comando:

csrutil disable

Depois disso, reinicializamos o sistema em funcionamento e só então instalamos o driver e, ao mesmo tempo, o utilitário de configuração ATTO (em princípio, o utilitário de configuração é necessário apenas para diagnóstico e não é necessário durante a operação normal). Ao longo do caminho, quando solicitado, confirmamos a autorização ATTO nas configurações do sistema. Após a instalação, você pode reiniciar novamente na partição de recuperação e dar o comando

csrutil enable

A Apple está cuidando de nós novamente.

Agora temos uma interface suportada por driver para dispositivos SAS externos (ou FC, se um conversor FC tiver sido usado). Mas como trabalhar com fita no nível lógico?

Como uma mente inexperiente, mas erudita sabe, qualquer sistema compatível com Unix suporta unidades de fita no nível do kernel e utilitários básicos do sistema, que incluem principalmente mt (gerenciamento de fita) e tar (arquivador que suporta trabalhar com arquivos em fita). Contudo, o que uma mente sofisticada pode dizer sobre isso? Qualquer sistema compatível com Unix, exceto macOS. A Apple cuidou de nós removendo o suporte para dispositivos de fita de seu código.

Mas é realmente impossível retornar esse código portando utilitários Unix de código aberto padrão para o macOS? A boa notícia é que a Tolis (para a qual não estou vinculando) já fez isso em seu produto Tolis Tape Tools. A má notícia é que a citada empresa custa US$ 399 para utilizar os resultados de seu trabalho. As estimativas desse fato podem variar, mas o autor pessoalmente não está pronto para pagar 400 dólares a alguém por um código que foi escrito em sua maioria por pessoas completamente diferentes e está em uso aberto desde a década de 1970 e, portanto, o autor está fazendo essa pergunta para si mesmo considera fechado. (A propósito, há um projeto gratuito abandonado em estado vago no Github IOSCSITape sobre o mesmo assunto).

Felizmente, existe uma corporação IBM no mundo, cujos apetites comerciais estão em uma escala completamente diferente e, portanto, não se manifestam em tudo. Em particular, desenvolveu o sistema de arquivos em fita LTFS de código aberto, que também é distribuído para macOS.

A ressalva aqui é que diferentes fabricantes de dispositivos de fita lançam suas próprias versões do LTFS para oferecer suporte a seus dispositivos. Como o autor usa uma unidade de fita IBM, ele instalou o LTFS da IBM. Unidades de terceiros podem exigir portas LTFS próprias. E há uma implementação universal do openLTFS no Github e no Homebrew.

É importante para nós que o LTFS utilize a função de particionamento de mídia e, portanto, possa funcionar com dispositivos e cartuchos a partir da geração LTO-5.

Portanto, em nosso caso, baixamos o IBM Spectrum Archive Single Drive Edition para macOS do site da IBM, que inclui a implementação do LTFS. Sem aventuras, instalamos o produto utilizando instalador próprio. Ao longo do caminho, ele também instala o pacote FUSE, e nas configurações do sistema terá que confirmar a autorização de um programador inteligente chamado Anatol Pomozov, de quem neste caso depende toda a IBM. Respeito e respeito por este homem.

É aconselhável escrever imediatamente a linha no arquivo /Library/Frameworks/LTFS.framework/Versions/Current/etc/ltfs.conf.local:

opção de unidade únicasync_type=time@1

que especifica que a fita é montada por padrão e o buffer de gravação é redefinido após 1 minuto de inatividade (o padrão é 5 minutos).

Apple Mac e dispositivos sofisticados. LTO, SAS, canal de fibra, eSATA

Finalmente, tudo está pronto para conectar. Conectamos a cadeia: Mac – adaptador T3/T2 – cabo Thunderbolt – conversor ATTO – cabo SAS – unidade de fita (a escolha de várias portas no Mac, conversor e unidade não é importante). Ligue a energia do conversor. Ligue a unidade de fita. Esperamos que o drive conclua a inicialização conforme sua indicação.

Damos o comando:

ltfs -o device_list

Viva! Obtemos (da maneira usual de diagnóstico da IBM):

307 LTFS14000I LTFS iniciando, LTFS versão 2.4.2.0 (10418), nível de log 2.
307 LTFS14058I Especificação de formato LTFS versão 2.4.0.
307 LTFS14104I Iniciado por "ltfs -o device_list".
307 LTFS14105I Este binário foi desenvolvido para Mac OS X.
307 LTFS14106I A versão GCC é 4.2.1 Compatível com Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
307 LTFS17087I Versão do kernel: Darwin Kernel Versão 19.4.0: Quarta, 4 de março, 22:28:40 PST 2020; raiz:xnu-6153.101.6~15/RELEASE_X86_64.
307 Plug-in LTFS17085I: Carregando backend de fita “iokit”.
Lista de dispositivos de fita:.
Nome do dispositivo = 0, ID do fornecedor = IBM, ID do produto = ULT3580-TD5, Número de série = **********, Nome do produto = [ULT3580-TD5].

Insira a fita, espere carregar e formatar:

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

Aqui o parâmetro -d especifica o número da unidade (sempre zero se for o único, mas não pode ser omitido neste comando), -n é o nome da fita (você pode omiti-lo) e o parâmetro -r requer a colocação do conteúdo de arquivos .DS_Store não excedendo o tamanho de 10 megabytes, na seção de índice (ou seja, destinada a diretórios) da fita em vez da seção de dados.

A vida misteriosa começou na unidade de fita. Esperamos alguns minutos e recebemos a seguinte resposta:

LTFS15000I Iniciando mkltfs, LTFS versão 2.4.2.0 (10418), nível de log 2.
LTFS15041I Lançado por "mkltfs -d 0 -nTest -r size=10M/name=.DS_Store".
LTFS15042I Este binário foi desenvolvido para Mac OS X.
A versão LTFS15043I GCC é 4.2.1 Compatível com Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
LTFS17087I Versão do kernel: Darwin Kernel Versão 19.4.0: Quarta, 4 de março, 22:28:40 PST 2020; raiz:xnu-6153.101.6~15/RELEASE_X86_64.
LTFS15003I Dispositivo de formatação '0'.
LTFS15004I Tamanho de bloco do volume LTFS: 524288.
Política de posicionamento de partição de índice LTFS15005I: tamanho=10M/nome=.DS_Store.

LTFS11337I Atualizar sinalizador de índice sujo (1) - NO_BARCODE (0x0x1021081e0).
Plug-in LTFS17085I: Carregando backend de fita “iokit”.
LTFS30810I Abrindo um dispositivo por meio do driver iokit (0).
O ID do fornecedor LTFS30814I é IBM.
O ID do produto LTFS30815I é 'ULT3580-TD5'.
A revisão do firmware LTFS30816I é H976.
O número de série da unidade LTFS30817I é **********.
LTFS17160I O tamanho máximo do bloco do dispositivo é 1048576.
LTFS11330I Carregando cartucho.
LTFS30854I A proteção do bloco lógico está desativada.
LTFS11332I Carregamento bem-sucedido.
LTFS17157I Alterando a configuração da unidade para o modo de gravação em qualquer lugar.
LTFS15049I Verificando a mídia (montagem).
LTFS30854I A proteção do bloco lógico está desativada.
LTFS15010I Criando partição de dados b na partição SCSI 1.
LTFS15011I Criando partição de índice a na partição SCSI 0.
LTFS17165I Redefinindo a proporção da capacidade da mídia.
LTFS11097I Particionando a mídia.
LTFS11100I Gravando rótulo na partição b.
LTFS11278I Gravando índice na partição b.
LTFS30808I READ_ATTR (0x8c) retorna -20501.
LTFS30865I READ_ATTR retorna campo inválido no CDB (-20501) 0.
LTFS30836I Não é possível ler o atributo (-20501).
LTFS11336I O atributo não existe. Ignore o erro esperado.
LTFS17235I Gravando índice de NO_BARCODE em b (Motivo: Formato, 0 arquivos) **********.
LTFS17236I Escreveu índice de NO_BARCODE (b, **********).
LTFS11337I Atualizar sinalizador de índice sujo (0) - NO_BARCODE (0x0x1021081e0).
LTFS11100I Gravando rótulo na partição a.
LTFS11278I Gravando índice na partição a.
LTFS30808I READ_ATTR (0x8c) retorna -20501.
LTFS30865I READ_ATTR retorna campo inválido no CDB (-20501) 0.
LTFS30836I Não é possível ler o atributo (-20501).
LTFS11336I O atributo não existe. Ignore o erro esperado.
LTFS17235I Gravando índice de NO_BARCODE em um (Motivo: Formato, 0 arquivos) 9068025555.
LTFS17236I Escreveu índice de NO_BARCODE (a, **********).
LTFS15013I Volume UUID is: 3802a70d-bd9f-47a6-a999-eb74ffa67fc1.

A capacidade do volume LTFS15019I é de 1425 GB.
LTFS30854I A proteção do bloco lógico está desativada.
LTFS15024I Meio formatado com sucesso.

Monte a fita formatada:

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

Temos mais alguns minutos de operação e diagnóstico da unidade:

307 LTFS14000I LTFS iniciando, LTFS versão 2.4.2.0 (10418), nível de log 2.
307 LTFS14058I Especificação de formato LTFS versão 2.4.0.
307 LTFS14104I Lançado por “ltfs /Volumes/LTFS/”.
307 LTFS14105I Este binário foi desenvolvido para Mac OS X.
307 LTFS14106I A versão GCC é 4.2.1 Compatível com Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
307 LTFS17087I Versão do kernel: Darwin Kernel Versão 19.4.0: Quarta, 4 de março, 22:28:40 PST 2020; raiz:xnu-6153.101.6~15/RELEASE_X86_64.
307 LTFS14063I O tipo de sincronização é “tempo”, o tempo de sincronização é 60 segundos.
307 Plug-in LTFS17085I: Carregando backend de fita “iokit”.
307 Plug-in LTFS17085I: Carregando back-end iosched “unificado”.
307 LTFS14095I Defina o modo de gravação em qualquer lugar do dispositivo de fita para evitar a ejeção do cartucho.
307 LTFS30810I Abrindo um dispositivo através do driver iokit (0).
307 LTFS30814I O ID do fornecedor é IBM.
307 O ID do produto LTFS30815I é 'ULT3580-TD5'.
307 LTFS30816I A revisão do firmware é H976.
307 LTFS30817I O número de série da unidade é **********.
307 LTFS17160I O tamanho máximo do bloco do dispositivo é 1048576.
307 LTFS11330I Carregando cartucho.
307 LTFS30854I A proteção do bloco lógico está desabilitada.
307 LTFS11332I Carregamento bem-sucedido.
307 LTFS17157I Alterando a configuração da unidade para o modo write-anywhere.
307 LTFS11005I Montando o volume.
307 LTFS30854I A proteção do bloco lógico está desabilitada.
307 LTFS17227I Atributo da fita: Fornecedor = IBM.
307 LTFS17227I Atributo da fita: Nome do Aplicativo = LTFS.
307 LTFS17227I Atributo da fita: Versão do Aplicativo = 2.4.2.0.
307 LTFS17227I Atributo da fita: Rótulo Médio =.
307 LTFS17228I Atributo de fita: ID de localização de texto = 0x81.
307 LTFS17227I Atributo da fita: Código de barras =.
307 LTFS17227I Atributo de fita: Versão do formato do aplicativo = 2.4.0.
307 LTFS17228I Atributo da fita: Status de bloqueio de volume = 0x00.
307 LTFS17227I Atributo de fita: Nome do pool de mídias =.
307 LTFS14111I Configuração inicial concluída com sucesso.
307 LTFS14112I Invoque o comando 'mount' para verificar o resultado da configuração final.
307 LTFS14113I O ponto de montagem especificado será listado se for bem-sucedido.

E aqui está, nossa faixa de opções na área de trabalho, chamada Test(ltfs)! A fita sem nome será denominada OSXFUSE Volume 0 (ltfs).

Agora você pode trabalhar com isso.

Apple Mac e dispositivos sofisticados. LTO, SAS, canal de fibra, eSATA

Em geral, você precisa ter em mente que é aconselhável não abusar da visualização do conteúdo dos diretórios de fita nas janelas do Finder, pois esta é uma operação incrivelmente cara para LTFS, mas é melhor trabalhar com comandos de terminal ou simplesmente redefinir o diretório de backup em massa para a fita, conforme mostrado na janela acima.

A propósito, existe um utilitário IBM especialmente escrito ltfs_copy e seus clones, projetados para cópias mais eficientes entre fita e disco, mas até agora o autor não conseguiu encontrá-los em domínio público com uma pesquisa superficial.

Você pode desmontar a fita com o comando:

umount /Volumes/LTFS

ou simplesmente jogue-o no lixo.

Na verdade, na natureza existem alguns shells gráficos para macOS para facilitar essas ações, mas depois de tais perversões, deveríamos ter medo de digitar algumas linhas no terminal?

Como efeito colateral, temos a oportunidade de conectar unidades eSATA externas através de um cabo SAS/4*eSATA.

Apple Mac e dispositivos sofisticados. LTO, SAS, canal de fibra, eSATA

Fonte: habr.com

Adicionar um comentário