El tema de este artículo es la conexión a un Mac de dispositivos externos a través de interfaces SAS, Fibre Channel (FC) y eSATA. Debemos aclarar que para acceder a dichos dispositivos hay un camino convencional: armar un PC económico, insertar allí una tarjeta de controlador HBA SAS o FC (por ejemplo, un simple adaptador LSI), conectar tus dispositivos a este controlador, instalar cualquier distribución de Linux en el PC y trabajar con el Mac a través de la red. Pero eso es demasiado banal y poco interesante. Vamos a optar por un enfoque más intenso y conectaremos nuestros dispositivos directamente. directamente al Mac.
¿Qué necesitaremos para ello?
– una cantidad considerable de recursos financieros para la compra de nuevo hardware, o suerte en las subastas de eBay (donde, con un poco de esfuerzo, se puede comprar el hardware de generaciones anteriores por 10 veces menos que en la lista de precios);
– este artículo.
Para trabajar con cinta magnética (actualmente casi universalmente representada en el formato LTO), es necesario contar con una unidad de cinta (streamer) o una biblioteca de cintas del estándar LTO. Este es un dispositivo bastante costoso en la compra inicial (desde cientos de miles de rublos), pero razonable si se compra de segunda mano. Dado que las generaciones de LTO cambian aproximadamente cada dos años, y la compatibilidad está limitada a dos generaciones, el mercado secundario está bastante saturado de dispositivos funcionales de hace cuatro años o más, es decir, de generaciones anteriores. Si compras un dispositivo nuevo para fines comerciales, imaginas por qué lo necesitas. Si deseas comprar uno para tu hogar y familia, puedes considerar esta opción como un medio de archivar información (ya que los propios medios son muy económicos en comparación con 1 gigabyte).
A partir de la generación LTO-5 (y en parte LTO-4), los dispositivos para trabajar con cinta magnética se conectan físicamente al ordenador a través de las interfaces SAS o FC (generalmente hay dos variantes de ejecución para cada dispositivo).
Por otro lado, Apple amablemente nos proporciona en nuestro Mac la interfaz USB-C (que funciona a través de protocolos USB, Thunderbolt 3 o DisplayPort), a veces la interfaz Ethernet, así como adaptadores exclusivos de Thunderbolt 3 a Thunderbolt 2 y de Thunderbolt a FireWire 800.
¿Una situación sin salida? No exactamente. Afortunadamente, el bus Thunderbolt puede funcionar en modo PCIe y proporcionar la capacidad de conectar tarjetas PCIe de la misma manera que si estuvieran instaladas directamente dentro de la carcasa de la computadora. Esto permite cualquier expansión de la configuración de hardware de un Mac, siempre que haya un adaptador y controladores correspondientes.
El método conceptualmente más sencillo para resolver este problema es una caja externa para adaptadores PCIe con interfaz Thunderbolt (sistema de expansión de tarjetas PCIe), en la que se puede instalar un controlador (adaptador de bus host, HBA) SAS o FC. Por ejemplo, la empresa y algunas otras fabrican tales cajas. Aquí hay un matiz: no todos los controladores nos servirán, solo aquellos que tengan controladores para macOS. Hay muy pocas de estas tarjetas, y las más baratas y populares (por ejemplo, las mismas LSI) no están entre ellas. Afortunadamente, la empresa Sonnet se tomó la molestia de elaborar de tarjetas PCIe con varios sistemas operativos a través de la interfaz Thunderbolt.
Otra forma de resolverlo es comprar un conversor de interfaz Thunderbolt – SAS o Thunderbolt – FC, que, en esencia, es un conjunto ya listo que combina la caja y el controlador. La empresa más conocida en este ámbito es , aunque también hay productos de otras compañías.
Cabe señalar que no todos los controladores SAS y FC están certificados para cumplir con el estándar LTO, ya que esto, por sí mismo, cuesta dinero. Algunos fabricantes indican que sus controladores no están diseñados para trabajar con unidades de cinta.
Para tener una visión completa, mencionemos que la empresa mLogic fabrica , que es una unidad IBM LTO-8 en un chasis externo, en el que ya está integrado un convertidor de SAS a Thunderbolt 3. Sin embargo, esto es aún más exótico que todo lo anterior, especialmente en nuestros lares. Dudo que este dispositivo se pueda importar legalmente a Rusia (las unidades LTO contienen medios criptográficos, y fabricantes como IBM y HP obtienen por esta razón un permiso del FSB para la importación de cada modelo).
A continuación, examinaremos, como ejemplo, un conjunto específico de equipo, que el autor adquirió como resultado de varias adquisiciones exitosas, pero el principio general debería aplicarse a todas las opciones.
Por lo tanto, tenemos para trabajar con la cinta el siguiente equipo:
– ordenador Apple Mac mini 2018 con macOS 10.15 Catalina, que cuenta con puertos USB-C compatibles con Thunderbolt 3;
– adaptador Apple Thunderbolt 3 / Thunderbolt 2;
– cable Apple Thunderbolt 2;
– conversor de interfaz ATTO ThunderLink SH 1068 (2*Thunderbolt / 2*SAS-2);
– cable SAS SFF-8088 – SFF-8088;
– unidad de cinta LTO-5 IBM TS2350;
– cartuchos LTO-5, cartucho de limpieza.
Ahora, como se dice, con toda esta cosa intentaremos despegar.
Descargamos del sitio de ATTO la última versión del controlador ThunderLink SH 1068 (aparentemente, para nuestra comodidad se ha combinado con el controlador SH 2068 y se encuentra en la sección 2068, lo que solo se menciona dentro del propio archivo del controlador) y la utilidad de configuración de ATTO.

El controlador, por supuesto, necesita ser instalado. Antes de realizar tales acciones, el autor sugiere siempre hacer un snapshot del sistema de archivos APFS del disco de arranque con el comando
tmutil localsnapshoto una copia de seguridad del disco de arranque, si es HFS+. No se sabe nunca. Luego, será fácil retroceder desde el snapshot.
A continuación, el inexperto, pero que muestra la debida precaución, la inteligencia sin duda se inclinará a leer cuidadosamente las instrucciones de ATTO para instalar el controlador y seguirlas. Como resultado – ¡tadam! – obtenemos un sistema operativo que se cuelga en la etapa de arranque. Aquí puede ser útil el snapshot, del que se puede restaurar, llamando a Time Machine desde la partición de recuperación, o bien, desde la misma partición de recuperación se puede borrar manualmente el kext problemático del directorio de extensiones del núcleo (el autor no recomienda en general hacerlo).
¿Por qué sucede esto? Porque Apple se preocupó por nosotros. En las últimas versiones de macOS no se puede simplemente incorporar código ajeno en el proceso de arranque. Los amables programadores de Apple bloquearon este tipo de comportamiento destructivo. Más bien, lo bloquearon a medias, cuando se inserta la espera del controlador, y el propio controlador no, por lo tanto, todo simplemente se cuelga.
¿Qué debe hacer una mente experimentada antes de instalar el controlador? Primero, dar el comando:
csrutil statusSi recibimos la respuesta:
Estado de Protección de Integridad del Sistema: habilitado.
esto significa que los amables programadores de Apple se preocupan por nosotros, por lo que no conseguiríamos nada hasta que desactivemos su maravillosa protección. Para ello, reiniciamos en la partición de recuperación (⌘R), llamamos a la terminal y damos el comando:
csrutil disableDespués de esto, reiniciamos en el sistema operativo y entonces instalamos el controlador, así como la herramienta de configuración ATTO (en principio, la herramienta de configuración solo es necesaria para diagnóstico y no se requiere en un funcionamiento normal). A lo largo del proceso, cuando se solicite, confirmamos la autorización de la empresa ATTO en la configuración del sistema. Después de la instalación, se puede reiniciar de nuevo en la partición de recuperación y dar el comando
csrutil enableEn Apple nuevamente se preocupan por nosotros.
Ahora tenemos una interfaz soportada por el controlador para dispositivos externos SAS (o FC, si se hubiese utilizado un convertidor FC). Pero, ¿cómo trabajar con cinta a nivel lógico?
Como es bien sabido por una mente desprevenida pero erudita, cualquier sistema compatible con Unix soporta unidades de cinta a nivel de núcleo y de utilidades del sistema principales, entre las que se encuentran principalmente mt (control de la unidad de cinta) y tar (compresor que soporta trabajar con archivos en cinta). Sin embargo, ¿qué aclararía esto a una mente experimentada? Cualquier sistema compatible con Unix, excepto macOS. La empresa Apple se ha preocupado por nosotros, excluyendo el soporte de dispositivos de cinta de su código.
¿Pero no se puede recuperar este código, portando las utilidades estándar de código abierto de Unix a macOS? La buena noticia es que la empresa Tolis ya lo ha hecho (la referencia que no proporciono) en su producto Tolis Tape Tools. La mala noticia es que la empresa mencionada valora el uso de los resultados de su trabajo en 399 dólares estadounidenses. Las valoraciones de este hecho pueden variar, pero personalmente el autor no está dispuesto a pagarle a nadie 400 dólares por un código, en su mayoría escrito por otras personas y disponible públicamente desde los años 70, por lo que considero que este asunto está cerrado. (Por cierto, hay un proyecto libre abandonado en un estado confuso en GitHub sobre el mismo tema).
Afortunadamente, existe una corporación llamada IBM en el mundo, cuyos apetitos comerciales son de escala completamente diferente y por ende no se manifiestan en cosas triviales. En particular, ha desarrollado el sistema de archivos de cinta LTFS de código abierto, que se distribuye también para macOS.
Aquí hay un matiz, ya que diferentes fabricantes de dispositivos de cinta lanzan sus propias versiones de LTFS que son compatibles con sus dispositivos. Dado que el autor utiliza una unidad de cinta de IBM, también instaló LTFS de IBM. Para las unidades de otras marcas, puede que necesiten sus propios puertos LTFS. Existe una implementación universal de openLTFS en GitHub y Homebrew.
Para nosotros es importante que LTFS use la función de particionamiento del medio, y por lo tanto puede trabajar con dispositivos y cartuchos a partir de la generación LTO-5.
Así que, en nuestro caso, descargamos del sitio de IBM el producto IBM Spectrum Archive Single Drive Edition para macOS, que incluye la implementación de LTFS. Instala el producto sin complicaciones usando su propio instalador. Durante el proceso, también instala el paquete FUSE, y en la configuración del sistema hay que confirmar la autorización de un inteligente programador llamado Anatol Pomozov, de la cual depende toda IBM en este caso. Respeto y admiración para esta persona.
Es aconsejable escribir desde el principio en el archivo /Library/Frameworks/LTFS.framework/Versions/Current/etc/ltfs.conf.local la línea:
option single-drive sync_type=time@1
que establece el montaje de la cinta por defecto con un restablecimiento del búfer de escritura tras 1 minuto de inactividad (por defecto 5 minutos).

Finalmente, todo está listo para la conexión. Conectamos la cadena: Mac – adaptador T3/T2 – cable Thunderbolt – convertidor ATTO – cable SAS – unidad de cinta (no importa la elección de varios puertos en el Mac, el convertidor y la unidad). Encendemos la alimentación del convertidor. Encendemos la alimentación de la unidad de cinta. Esperamos a que se complete la inicialización de la unidad según su indicación.
Damos el comando:
ltfs -o device_list¡Hurra! Obtenemos (en una típica manera de diagnóstico de 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 Launched by «ltfs -o device_list».
307 LTFS14105I This 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 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.
307 LTFS17085I Plugin: Loading «iokit» tape backend.
Lista de dispositivos de cinta.
Device Name = 0, Vendor ID = IBM, Product ID = ULT3580-TD5, Serial Number = **********, Product Name =[ULT3580-TD5].
Insertamos el cartucho, esperamos a que se cargue y formateamos:
mkltfs -d 0 -nTest -r "size=10M/name=.DS_Store"Aquí el parámetro -d especifica el número del dispositivo (siempre cero si es el único, pero no se puede omitir en este comando), -n – el nombre de la cinta (no es necesario especificarlo), y el parámetro -r requiere colocar el contenido de los archivos .DS_Store, que no superen los 10 megabytes, en la sección del índice (es decir, destinada a directorios) de la cinta en lugar de en la sección de datos.
Ha comenzado una vida misteriosa en el dispositivo de cinta. Esperemos un par de minutos y recibimos la respuesta:
LTFS15000I Iniciando mkltfs, versión LTFS 2.4.2.0 (10418), nivel de registro 2.
LTFS15041I Lanzado por «mkltfs -d 0 -nTest -r size=10M/name=.DS_Store».
LTFS15042I Este binario está construido para Mac OS X.
LTFS15043I La versión de GCC es 4.2.1 Compatible con Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
LTFS17087I Versión del núcleo: Versión del núcleo de Darwin 19.4.0: Mié Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
LTFS15003I Formateando el dispositivo ‘0’.
LTFS15004I Tamaño del bloque del volumen LTFS: 524288.
LTFS15005I Política de colocación de la partición de índice: size=10M/name=.DS_Store.LTFS11337I Actualizando el indicador index-dirty (1) — NO_BARCODE (0x0x1021081e0).
LTFS17085I Plugin: Cargando el backend de cinta «iokit».
LTFS30810I Abriendo un dispositivo a través del controlador iokit (0).
LTFS30814I El ID del vendedor es IBM.
LTFS30815I El ID del producto es ‘ULT3580-TD5 ‘.
LTFS30816I La revisión del firmware es H976.
LTFS30817I El número de serie de la unidad es **********.
LTFS17160I El tamaño máximo del bloque del dispositivo es 1048576.
LTFS11330I Cargando cartucho.
LTFS30854I La protección del bloque lógico está desactivada.
LTFS11332I Carga exitosa.
LTFS17157I Cambiando la configuración de la unidad a modo de escritura en cualquier lugar.
LTFS15049I Comprobando el medio (montaje).
LTFS30854I La protección del bloque lógico está desactivada.
LTFS15010I Creando la partición de datos b en la partición SCSI 1.
LTFS15011I Creando la partición de índice a en la partición SCSI 0.
LTFS17165I Reiniciando la proporción de capacidad del medio.
LTFS11097I Particionando el medio.
LTFS11100I Escribiendo la etiqueta en la partición b.
LTFS11278I Escribiendo el índice en la partición b.
LTFS30808I READ_ATTR (0x8c) devuelve -20501.
LTFS30865I READ_ATTR devuelve Campo Inválido en CDB (-20501) 0.
LTFS30836I No se puede leer el atributo (-20501).
LTFS11336I El atributo no existe. Ignorar el error esperado.
LTFS17235I Escribiendo el índice de NO_BARCODE en b (Razón: Formato, 0 archivos) **********.
LTFS17236I Índice de NO_BARCODE escrito (b, **********).
LTFS11337I Actualizando el indicador index-dirty (0) — NO_BARCODE (0x0x1021081e0).
LTFS11100I Escribiendo la etiqueta en la partición a.
LTFS11278I Escribiendo el índice en la partición a.
LTFS30808I READ_ATTR (0x8c) devuelve -20501.
LTFS30865I READ_ATTR devuelve Campo Inválido en CDB (-20501) 0.
LTFS30836I No se puede leer el atributo (-20501).
LTFS11336I El atributo no existe. Ignorar el error esperado.
LTFS17235I Escribiendo el índice de NO_BARCODE en a (Razón: Formato, 0 archivos) 9068025555.
LTFS17236I Índice de NO_BARCODE escrito (a, **********).
LTFS15013I El UUID del volumen es: 3802a70d-bd9f-47a6-a999-eb74ffa67fc1.LTFS15019I La capacidad del volumen es 1425 GB.
LTFS30854I La protección del bloque lógico está desactivada.
LTFS15024I El medio se formateó con éxito.
Montando la cinta formateada:
sudo mkdir /Volumes/LTFS
sudo chmod 777 /Volumes/LTFS/
sudo ltfs /Volumes/LTFSObteniendo un par de minutos más de funcionamiento del dispositivo, diagnóstico:
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 Lanzado por «ltfs /Volumes/LTFS/».
307 LTFS14105I This 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 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.
307 LTFS14063I El tipo de sincronización es «time», el tiempo de sincronización es 60 seg.
307 LTFS17085I Plugin: Loading «iokit» tape backend.
307 LTFS17085I Plugin: Cargando el backend de iosched «unificado».
307 LTFS14095I Configurando el modo de escritura en cualquier lugar del dispositivo de cinta para evitar la expulsión del cartucho.
307 LTFS30810I Abriendo un dispositivo a través del controlador iokit (0).
307 LTFS30814I El ID del vendedor es IBM.
307 LTFS30815I El ID del producto es ‘ULT3580-TD5 ‘.
307 LTFS30816I La revisión del firmware es H976.
307 LTFS30817I El número de serie de la unidad es **********.
307 LTFS17160I El tamaño máximo del bloque del dispositivo es 1048576.
307 LTFS11330I Cargando cartucho.
307 LTFS30854I La protección del bloque lógico está desactivada.
307 LTFS11332I Carga exitosa.
307 LTFS17157I Cambiando la configuración de la unidad a modo de escritura en cualquier lugar.
307 LTFS11005I Montando el volumen.
307 LTFS30854I La protección del bloque lógico está desactivada.
307 LTFS17227I Atributo de cinta: Vendedor = IBM.
307 LTFS17227I Atributo de cinta: Nombre de la aplicación = LTFS.
307 LTFS17227I Atributo de cinta: Versión de la aplicación = 2.4.2.0.
307 LTFS17227I Atributo de cinta: Etiqueta del medio =.
307 LTFS17228I Atributo de cinta: ID de localización de texto = 0x81.
307 LTFS17227I Atributo de cinta: Código de barras =.
307 LTFS17227I Atributo de cinta: Versión del formato de la aplicación = 2.4.0.
307 LTFS17228I Atributo de cinta: Estado de bloqueo del volumen = 0x00.
307 LTFS17227I Atributo de cinta: Nombre del grupo de medios =.
307 LTFS14111I Configuración inicial completada con éxito.
307 LTFS14112I Invoca el comando 'mount' para verificar el resultado de la configuración final.
307 LTFS14113I El punto de montaje especificado se lista si se tuvo éxito.
Y aquí está, nuestra cinta en el escritorio, con el nombre Test(ltfs)! La cinta sin nombre recibirá el nombre OSXFUSE Volume 0 (ltfs).
Ahora se puede trabajar con ella.

Por cierto, hay que tener en cuenta que es recomendable no abusar de la visualización del contenido de los directorios de la cinta en las ventanas del Finder, ya que esta es una operación increíblemente costosa para LTFS; es mejor trabajar con comandos de terminal, o simplemente volcar el directorio que se está respaldando a la cinta en bloques, como se muestra en la ventana anterior.
De hecho, existe una utilidad de IBM llamada ltfs_copy y sus clones, que están destinados a hacer copias más eficientes entre la cinta y el disco, pero hasta ahora el autor no ha logrado encontrarlas en acceso público tras una búsqueda superficial.
Se puede desmontar la cinta con el comando:
umount /Volumes/LTFSo simplemente tirándola a la papelera.
En realidad, existen algunas interfaces gráficas para macOS que facilitan estas acciones, pero después de tales aberraciones, ¿nos atreveremos a escribir unas líneas en la terminal?
Como consecuencia adicional, obtenemos la posibilidad de conectar discos externos eSATA a través del cable SAS/4*eSATA.

Fuente: habr.com
