El tema de este artículo es la conexión de dispositivos externos a una Mac a través de interfaces SAS, Fibre Channel (FC) y eSATA. Digamos de inmediato que existe un método saludable para resolver el problema de acceder a dichos dispositivos: construya una PC económica, conecte una tarjeta controladora HBA SAS o FC (por ejemplo, un simple adaptador LSI), conecte sus dispositivos a este controlador , instale cualquier Linux en la PC y trabaje desde Mac a través de la red. Pero esto es banal y poco interesante. Tomaremos la ruta más dura y conectaremos nuestros dispositivos. directamente a Mac.
Lo que necesitamos para esto:
– una cantidad decente de dinero para comprar nuevos equipos, o buena suerte en las subastas de eBay (donde, con un poco de esfuerzo, se pueden comprar los equipos necesarios de generaciones anteriores 10 veces más baratos que el precio de lista);
- Este artículo.
Para trabajar con cinta magnética (ahora representada casi universalmente en formato LTO), debe tener una unidad de cinta LTO (transmisor) o una biblioteca de cintas. Este es un dispositivo bastante caro para la compra inicial (de cientos de miles de rublos), pero vale una cantidad razonable de dinero cuando se compra usado. Dado que las generaciones LTO cambian aproximadamente cada dos años y la compatibilidad se limita a dos generaciones, el mercado secundario está bastante saturado con dispositivos viables de cuatro años o más, es decir, la anteúltima generación y más allá. Si compra un dispositivo nuevo con fines comerciales, usted mismo comprenderá por qué lo necesita. Si desea comprar para su hogar y su familia, puede considerar esta opción como una forma de archivar información (ya que los medios en sí son muy baratos por 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 por hardware a la computadora a través de una interfaz SAS o FC (generalmente hay dos versiones de cada dispositivo)
Por otro lado, Apple amablemente nos proporciona una interfaz USB-C en nuestro Mac (que funciona mediante los protocolos USB, Thunderbolt 3 o DisplayPort), a veces una interfaz Ethernet, así como Thunderbolt 3 propietario - Thunderbolt 2 y Thunderbolt - FireWire 800. adaptadores.
¿Estancamiento? No precisamente. Afortunadamente, Thunderbolt puede funcionar en modo PCIe y permitir que las tarjetas PCIe se conecten de la misma manera que si estuvieran instaladas directamente dentro de la carcasa de la computadora. Debido a esto, es posible cualquier ampliación de la configuración del hardware de Mac, siempre que exista un adaptador y controladores adecuados.
Conceptualmente, la forma más sencilla de resolver el 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 adaptador de bus de host (HBA) SAS o FC. Por ejemplo, estas cajas son producidas por la empresa. y algunos otros. Hay una advertencia aquí: no todos los controladores funcionarán para nosotros, solo aquellos con un controlador para macOSHay muy pocas placas de este tipo, y las más baratas y populares (por ejemplo, la misma LSI) no están entre ellas. Afortunadamente, Sonnet se tomó la molestia de compilarlas. Tarjetas PCIe con varios SO a través de interfaz Thunderbolt.
Otra solución es comprar un convertidor de interfaz Thunderbolt - SAS o Thunderbolt - FC ya preparado, que, de hecho, es un conjunto listo para usar de una caja y un controlador. La empresa más famosa de esta zona. , pero también hay productos de otras empresas.
Tenga en cuenta que no todos los controladores SAS y FC están certificados para cumplir con el estándar LTO, ya que esto en sí mismo cuesta dinero. Algunos fabricantes escriben directamente que sus controladores no están diseñados para funcionar con unidades de cinta.
Para completar el cuadro, observamos que mLogic produce , que es una unidad IBM LTO-8 en una carcasa externa, en la que se integra inmediatamente un convertidor SAS a Thunderbolt 3. Esto, sin embargo, es algo aún más exótico que todo lo descrito anteriormente, especialmente para los estándares de nuestra región. Dudo que este dispositivo pueda siquiera importarse legalmente a Rusia (las unidades LTO contienen funciones criptográficas y, por este motivo, fabricantes como IBM y HP reciben permiso de importación FSB para cada modelo).
A continuación, consideraremos, como ejemplo, un conjunto específico de equipos, cuyo propietario se convirtió en el autor como resultado de varias adquisiciones exitosas, pero el principio general debe mantenerse para todas las opciones.
Por eso disponemos del siguiente equipo para trabajar con cinta:
– Ordenador Apple Mac mini 2018 con macOS macOS Catalina 10.15, que cuenta con puertos USB-C compatibles con Thunderbolt 3;
– Adaptador Apple Thunderbolt 3 / Thunderbolt 2;
– Cable Apple Thunderbolt 2;
– Convertidor 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 dicen, con todo esto vamos a intentar despegar.
Descargamos del sitio web de ATTO la última versión del controlador ThunderLink SH 1068 (aparentemente, para nuestra comodidad, está combinado con el controlador SH 2068 y se encuentra en la sección 2068, que está escrita solo dentro del archivo con el controlador) y el Utilidad de configuración ATTO.

El controlador, por supuesto, necesita instalación. Antes de tales acciones, el autor recomienda tomar siempre una instantánea del sistema de archivos APFS del disco de arranque con el comando
tmutil localsnapshoto una copia de seguridad del disco de arranque, si tiene HFS+. Nunca sabes. Entonces será fácil retroceder desde la instantánea.
A continuación, la mente inexperta pero diligente sin duda se inclinará a leer atentamente las instrucciones de instalación del controlador ATTO y seguirlas. Como resultado, ¡tadam! – obtenemos un sistema operativo que se bloquea en la etapa de carga. Aquí es posible que necesitemos una instantánea de la cual podamos recuperarnos llamando a Time Machine desde la partición de recuperación, o desde la misma partición de recuperación podemos borrar manualmente el kext enfermo del directorio de extensiones del kernel (el autor generalmente no recomienda hacer esto).
¿Por qué está pasando esto? Porque Apple se ha ocupado de nosotros. En las últimas versiones macOS No se puede simplemente inyectar código externo en el proceso de arranque. Los programadores de Apple han bloqueado este comportamiento destructivo. Más precisamente, lo han bloqueado a medias: cuando se inyecta la espera del controlador, pero no el controlador en sí, todo se bloquea.
¿Qué debería hacer una mente sofisticada antes de instalar un controlador? Primero, da el comando:
csrutil statusSi en respuesta recibimos:
Estado de protección de integridad del sistema: habilitado.
Entonces esto significa que los buenos programadores de Apple se preocupan por nosotros, por lo que nada nos saldrá bien hasta que desactivemos su maravillosa protección. Para hacer esto, reinicie en la partición de recuperación (⌘R), llame a la terminal y emita el comando:
csrutil disableDespués de esto, reiniciamos el sistema en funcionamiento y solo entonces instalamos el controlador y, al mismo tiempo, la utilidad de configuración ATTO (en principio, la utilidad de configuración es necesaria solo para diagnóstico y no es necesaria durante el funcionamiento normal). En el camino, cuando se nos solicite, confirmamos la autorización ATTO en la configuración del sistema. Después de la instalación, puede reiniciar nuevamente en la partición de recuperación y dar el comando
csrutil enableApple vuelve a cuidar de nosotros.
Ahora tenemos una interfaz compatible con controladores para dispositivos SAS externos (o FC, si se utilizó un convertidor FC). ¿Pero cómo trabajar con cinta a nivel lógico?
Como sabe una mente inexperta pero erudita, cualquier sistema compatible con Unix admite unidades de cinta a nivel del kernel y utilidades básicas del sistema, que incluyen principalmente mt (administración de cintas) y tar (archivador que admite trabajar con archivos en cinta). Sin embargo, ¿qué puede decir una mente sofisticada al respecto? Cualquier sistema compatible con Unix, croome macOS. Apple se encargó de nosotros eliminando de su código la compatibilidad con dispositivos de cinta.
Pero, ¿es realmente imposible recuperar este código portando las utilidades estándar de código abierto de Unix a macOSLa buena noticia es que Tolis (a la que no enlazaré) ya lo ha implementado en su producto Tolis Tape Tools. La mala noticia es que la empresa cobra 399 dólares por el uso de su trabajo. Si bien las estimaciones pueden variar, el autor no está dispuesto a pagar 400 dólares por un código escrito en su mayor parte por otras personas y que ha sido de uso libre desde la década de 1970, por lo que considera este asunto zanjado. (Por cierto, existe un proyecto de código abierto abandonado, aunque con poca actividad, en GitHub). sobre el mismo tema).
Afortunadamente, existe IBM, una corporación cuyos apetitos comerciales son de una escala completamente diferente y, por lo tanto, no se manifiestan en asuntos triviales. Específicamente, desarrolló el sistema de archivos de cinta de código abierto LTFS, que se distribuye, entre otras cosas, para macOS.
La advertencia aquí es que diferentes fabricantes de dispositivos de cinta lanzan sus propias versiones de LTFS para admitir sus dispositivos. Como el autor utiliza una unidad de cinta IBM, instaló LTFS de IBM. Las unidades de terceros pueden requerir sus propios puertos LTFS. Y existe una implementación universal de openLTFS en Github y Homebrew.
Para nosotros es importante que LTFS utilice la función de partición de medios y, por lo tanto, pueda funcionar con dispositivos y cartuchos a partir de la generación LTO-5.
En nuestro caso, descargamos el producto IBM Spectrum Archive Single Drive Edition desde el sitio web de IBM. macOS, que incluye la implementación de LTFS. Instalamos el producto sin complicaciones usando su propio instalador. Durante el proceso, también se instala el paquete FUSE, aunque tendrás que confirmar la autorización de un programador muy inteligente llamado Anatol Pomozov en la configuración del sistema, de quien, en este caso, depende todo el sistema IBM. Todo nuestro respeto y admiración por este hombre.
Es recomendable escribir inmediatamente la línea en el archivo /Library/Frameworks/LTFS.framework/Versions/Current/etc/ltfs.conf.local:
opción de unidad única sync_type=time@1
que especifica que la cinta se monta de forma predeterminada y el búfer de grabación se restablece después de 1 minuto de inactividad (el valor predeterminado es 5 minutos).

Finalmente, todo está listo para conectarse. Conectamos la cadena: Mac – Adaptador T3/T2 – Cable Thunderbolt – Convertidor ATTO – Cable SAS – Unidad de cinta (la elección de varios puertos en Mac, convertidor y unidad no es importante). Encienda la alimentación del convertidor. Encienda la alimentación de la unidad de cinta. Esperamos a que el disco complete la inicialización según su indicación.
Damos el comando:
ltfs -o device_list¡Hurra! Obtenemos (en la forma habitual de diagnóstico de IBM):
307 LTFS14000I LTFS iniciando, versión LTFS 2.4.2.0 (10418), nivel de registro 2.
307 LTFS14058I Especificación de formato LTFS versión 2.4.0.
307 LTFS14104I Lanzado por "ltfs -o device_list".
307 LTFS14105I Este binario está diseñado para Mac OS X.
307 LTFS14106I La versión GCC es 4.2.1 Compatible con Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
307 LTFS17087I Versión del kernel: Darwin Kernel Versión 19.4.0: miércoles 4 de marzo a las 22:28:40 PST de 2020; raíz:xnu-6153.101.6~15/RELEASE_X86_64.
307 Complemento LTFS17085I: Cargando el backend de cinta “iokit”.
Lista de dispositivos de cinta:.
Nombre del dispositivo = 0, ID del proveedor = IBM, ID del producto = ULT3580-TD5, Número de serie = **********, Nombre del producto = [ULT3580-TD5].
Inserte el casete, espere a que se cargue y formatee:
mkltfs -d 0 -nTest -r "size=10M/name=.DS_Store"Aquí el parámetro -d especifica el número de unidad (siempre cero si es el único, pero no se puede omitir en este comando), -n es el nombre de la cinta (puede omitirlo) y el parámetro -r requiere colocar el contenido de archivos .DS_Store que no excedan el tamaño de 10 megabytes, en la sección de índice (es decir, destinada a directorios) de la cinta en lugar de en la sección de datos.
La vida misteriosa comenzó en la unidad de cinta. Esperamos un par de minutos y recibimos la siguiente respuesta:
LTFS15000I Iniciando mkltfs, LTFS versión 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á creado para Mac OS X.
La versión LTFS15043I GCC es 4.2.1 Compatible con Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
LTFS17087I Versión del kernel: Darwin Kernel Versión 19.4.0: miércoles 4 de marzo a las 22:28:40 PST de 2020; raíz:xnu-6153.101.6~15/RELEASE_X86_64.
LTFS15003I Formateando el dispositivo '0'.
LTFS15004I Tamaño de bloque de volumen LTFS: 524288.
LTFS15005I Política de colocación de particiones de índice: tamaño=10M/nombre=.DS_Store.LTFS11337I Actualizar indicador de índice sucio (1): NO_BARCODE (0x0x1021081e0).
Complemento LTFS17085I: Cargando el backend de cinta “iokit”.
LTFS30810I Abrir un dispositivo a través del controlador iokit (0).
LTFS30814I El ID del proveedor es IBM.
LTFS30815I La identificación 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 de bloque de dispositivo es 1048576.
LTFS11330I Cargando cartucho.
LTFS30854I La protección del bloque lógico está inhabilitada.
LTFS11332I Carga exitosa.
LTFS17157I Cambio de la configuración de la unidad al modo de escritura en cualquier lugar.
LTFS15049I Comprobando el medio (montaje).
LTFS30854I La protección del bloque lógico está inhabilitada.
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 Restableciendo la proporción de capacidad del medio.
LTFS11097I Partición del medio.
LTFS11100I Escritura de etiqueta en la partición b.
LTFS11278I Escritura de índice en la partición b.
LTFS30808I READ_ATTR (0x8c) devuelve -20501.
LTFS30865I READ_ATTR devuelve un campo no válido en CDB (-20501) 0.
LTFS30836I No se puede leer el atributo (-20501).
LTFS11336I El atributo no existe. Ignore el error esperado.
LTFS17235I Índice de escritura de NO_BARCODE en b (Motivo: formato, 0 archivos) **********.
LTFS17236I Escribí el índice de NO_BARCODE (b, **********).
LTFS11337I Actualizar indicador de índice sucio (0): NO_BARCODE (0x0x1021081e0).
LTFS11100I Escritura de etiqueta en la partición a.
LTFS11278I Escritura de índice en la partición a.
LTFS30808I READ_ATTR (0x8c) devuelve -20501.
LTFS30865I READ_ATTR devuelve un campo no válido en CDB (-20501) 0.
LTFS30836I No se puede leer el atributo (-20501).
LTFS11336I El atributo no existe. Ignore el error esperado.
LTFS17235I Escritura del índice de NO_BARCODE en (Motivo: formato, 0 archivos) 9068025555.
LTFS17236I Escribí el índice de NO_BARCODE (a, **********).
LTFS15013I Volume UUID is: 3802a70d-bd9f-47a6-a999-eb74ffa67fc1.LTFS15019I La capacidad del volumen es 1425 GB.
LTFS30854I La protección del bloque lógico está inhabilitada.
LTFS15024I Medio formateado correctamente.
Monte la cinta formateada:
sudo mkdir /Volumes/LTFS
sudo chmod 777 /Volumes/LTFS/
sudo ltfs /Volumes/LTFSObtenemos un par de minutos más de funcionamiento y diagnóstico de la unidad:
307 LTFS14000I LTFS iniciando, versión LTFS 2.4.2.0 (10418), nivel de registro 2.
307 LTFS14058I Especificación de formato LTFS versión 2.4.0.
307 LTFS14104I Lanzado por “ltfs /Volumes/LTFS/”.
307 LTFS14105I Este binario está diseñado para Mac OS X.
307 LTFS14106I La versión GCC es 4.2.1 Compatible con Apple Clang 4.1 ((tags/Apple/clang-421.11.66)).
307 LTFS17087I Versión del kernel: Darwin Kernel Versión 19.4.0: miércoles 4 de marzo a las 22:28:40 PST de 2020; raíz:xnu-6153.101.6~15/RELEASE_X86_64.
307 LTFS14063I El tipo de sincronización es "tiempo", el tiempo de sincronización es 60 segundos.
307 Complemento LTFS17085I: Cargando el backend de cinta “iokit”.
307 Complemento LTFS17085I: Cargando backend iosched “unificado”.
307 LTFS14095I Configure el modo de escritura en cualquier lugar del dispositivo de cinta para evitar la expulsión del cartucho.
307 LTFS30810I Abrir un dispositivo a través del controlador iokit (0).
307 LTFS30814I El ID del proveedor es IBM.
307 LTFS30815I La identificación 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 de bloque del dispositivo es 1048576.
307 LTFS11330I Cargando cartucho.
307 LTFS30854I La protección del bloque lógico está deshabilitada.
307 LTFS11332I Carga exitosa.
307 LTFS17157I Cambio de la configuración de la unidad al modo de escritura en cualquier lugar.
307 LTFS11005I Montaje del volumen.
307 LTFS30854I La protección del bloque lógico está deshabilitada.
307 LTFS17227I Atributo de cinta: Proveedor = IBM.
307 LTFS17227I Atributo de cinta: Nombre de aplicación = LTFS.
307 LTFS17227I Atributo de cinta: Versión de la aplicación = 2.4.2.0.
307 LTFS17227I Atributo de cinta: Etiqueta mediana =.
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 aplicación = 2.4.0.
307 LTFS17228I Atributo de cinta: Estado de bloqueo de volumen = 0x00.
307 LTFS17227I Atributo de cinta: nombre del grupo de medios =.
307 LTFS14111I La configuración inicial se completó correctamente.
307 LTFS14112I Invoque el comando 'montar' para comprobar el resultado de la configuración final.
307 LTFS14113I El punto de montaje especificado aparece en la lista si se realizó correctamente.
¡Y aquí está, nuestra cinta en el escritorio, llamada Prueba(ltfs)! La cinta sin nombre se llamará OSXFUSE Volumen 0 (ltfs).
Ahora puedes trabajar con él.

En general, debe tenerse en cuenta que es recomendable no abusar de la visualización del contenido de los directorios de cintas en las ventanas del buscador, ya que esta es una operación increíblemente costosa para LTFS, pero es mejor trabajar con comandos de terminal o simplemente restablecer el directorio de copia de seguridad de forma masiva en la cinta, como se muestra en la ventana de arriba.
Por cierto, existe una utilidad IBM ltfs_copy especialmente escrita y sus clones, diseñados para una copia más eficiente entre cinta y disco, pero hasta ahora el autor no ha podido encontrarlos en el dominio público con una búsqueda superficial.
Puedes desmontar la cinta con el comando:
umount /Volumes/LTFSo simplemente tirarlo a la basura.
En realidad, existen algunos caparazones gráficos en la naturaleza para macOS para facilitar estas acciones, pero después de tales perversiones, ¿deberíamos tener miedo de escribir unas pocas líneas en la terminal?
Como efecto secundario, tenemos la oportunidad de conectar unidades eSATA externas mediante un cable SAS/4*eSATA.

Fuente: habr.com
