Apple Mac 和精美设备。 LTO、SAS、光纤通道、eSATA

本文的主题是通过 SAS、光纤通道 (FC)、eSATA 接口将外部设备连接到 Mac。 我们立即说,要解决访问此类设备的问题,有一个健康人的方法:构建一台便宜的PC,插入HBA SAS或FC控制卡(例如,简单的LSI适配器),将您的设备连接到此控制器,在 PC 上安装任何 Linux 并通过网络在 Mac 上工作。 但这是平庸且无趣的。 我们将走硬核路线并连接我们的设备 到麦克。

为此我们需要什么:
– 足够的钱购买新装备,或者在 eBay 拍卖中祝你好运(只需付出一点努力,你就可以以比标价便宜 10 倍的价格买到前几代所需的装备);
- 本文。

要使用磁带(现在几乎普遍以 LTO 格式表示),您必须拥有 LTO 磁带驱动器(流媒体)或磁带库。 对于初次购买来说,这是一个相当昂贵的设备(数十万卢布起),但在购买二手设备时物有所值。 由于 LTO 代大约每两年更换一次,并且兼容性仅限于两代,因此二级市场已经相当饱和,可用四年或更长时间的设备,即上一代及以后的一代。 如果您出于商业目的购买新设备,那么您自己就会明白为什么需要它。 如果您想为您的家庭和家人购买,您可以考虑此选项作为存档信息的一种方式(因为介质本身每 1 GB 非常便宜)。

从 LTO-5 代(以及部分 LTO-4)开始,使用磁带的设备通过 SAS 或 FC 接口在硬件中连接到计算机(通常每个设备有两个版本)

另一方面,Apple 在 Mac 中为我们提供了 USB-C 接口(使用 USB、Thunderbolt 3 或 DisplayPort 协议工作),有时还有以太网接口,以及专有的 Thunderbolt 3 - Thunderbolt 2 和 Thunderbolt - FireWire 800适配器。

僵局? 并不真地。 幸运的是,Thunderbolt 可以在 PCIe 模式下运行,并允许 PCIe 卡以与直接安装在计算机机箱内相同的方式连接。 因此,只要有适当的适配器和驱动程序,Mac 硬件配置的任何扩展都是可能的。

从概念上讲,解决该问题的最简单方法是使用带有 Thunderbolt 接口的 PCIe 适配器外接盒(PCIe 卡扩展系统),您可以在其中安装 SAS 或 FC 主机总线适配器 (HBA)。 例如,这样的盒子是由该公司生产的 Sonnet 和其他一些。 这里有一个细微差别:并不是每个控制器都适合我们,而是只有一个具有 macOS 驱动程序的控制器。 这样的板只有少数,而且最便宜和最受欢迎的板(例如,相同的LSI)不包括在其数量中。 幸好Sonnet不厌其烦地编译了 兼容性表 通过 Thunderbolt 接口支持各种操作系统的 PCIe 卡。

另一种解决方案是购买现成的Thunderbolt-SAS或Thunderbolt-FC接口转换器,它实际上是一个盒子和控制器的现成组件。 该地区最著名的公司 ATTO,但也有其他公司的产品。

请注意,并非所有 SAS 和 FC 控制器都经过认证符合 LTO 标准,因为这本身就需要花钱。 一些制造商直接写道,他们的控制器不适用于磁带机。

为了完成这幅图,我们注意到 mLogic 产生 设备,这是一个装在外部机箱中的 IBM LTO-8 驱动器,其中立即集成了 SAS 到 Thunderbolt 3 转换器。然而,这比上述所有内容更加奇特,尤其是按照我们地区的标准。 我怀疑这款设备是否可以合法进口到俄罗斯(LTO 驱动器包含加密功能,IBM 和 HP 等制造商因此获得了每种型号的 FSB 进口许可)。

接下来,我们将以一套特定的设备为例,作者通过多次成功收购而成为该设备的所有者,但所有选项都应保留一般原则。

因此,我们有以下用于处理胶带的设备:
– Apple Mac mini 2018 电脑,配备 macOS 10.15 Catalina,具有支持 Thunderbolt 3 的 USB-C 端口;
– 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、光纤通道、eSATA

当然,驱动程序需要安装。 在执行此类操作之前,作者建议始终使用以下命令拍摄启动磁盘的 APFS 文件系统的快照

tmutil localsnapshot

或启动磁盘的备份副本(如果具有 HFS+)。 你永远不会知道。 然后从快照回滚就很容易了。

接下来,没有经验但尽职尽责的头脑无疑会倾向于仔细阅读 ATTO 驱动程序安装说明并遵循它们。 结果——塔达姆! – 我们得到一个在加载阶段挂起的操作系统。 这里我们可能需要一个快照,我们可以通过从恢复分区调用Time machine来恢复,或者从同一个恢复分区我们可以手动从内核扩展目录中删除有病的kext(作者通常不建议这样做)。

为什么会发生这种情况? 因为苹果照顾了我们。 在最新版本的 macOS 中,您无法轻松地将外部代码注入到启动过程中。 优秀的苹果程序员已经阻止了这种破坏性的行为。 更准确地说,他们把它挡在了一半,当司机的期望得到实现时,但司机本身却没有实现,所以一切都冻结了。

在安装驱动程序之前,一个精明的头脑应该做什么? 首先,给出命令:

csrutil status

如果我们收到以下响应:

系统完整性保护状态:已启用。

那么这意味着优秀的苹果程序员关心我们,所以除非我们禁用他们出色的保护,否则任何事情都不会为我们带来好处。 为此,请重新启动到恢复分区 (⌘R),调用终端并发出命令:

csrutil disable

之后,我们重新启动进入工作系统,然后安装驱动程序,同时安装 ATTO 配置实用程序(原则上,配置实用程序仅用于诊断,正常操作期间不需要)。 一路上,当询问时,我们在系统设置中确认 ATTO 授权。 安装后,您可以再次重新启动到恢复分区并给出命令

csrutil enable

苹果又照顾我们了。

现在,我们有一个驱动程序支持的接口来连接外部 SAS 设备(或 FC,如果使用 FC 转换器)。 但如何在逻辑层面上使用磁带呢?

缺乏经验但博学多才的人都知道,任何 Unix 兼容系统都在内核和基本系统实用程序级别支持磁带驱动器,其中主要包括 mt(磁带管理)和 tar(支持在磁带上处理存档的存档器)。 然而,一个成熟的头脑能对此说些什么呢? 任何 Unix 兼容系统, macOS 除外。 苹果为了照顾我们,从代码中删除了对磁带设备的支持。

但是,通过将标准开源 Unix 实用程序移植到 macOS 真的不可能返回此代码吗? 好消息是 Tolis(我没有链接)已经在他们的产品 Tolis Tape Tools 中做到了这一点。 坏消息是,上述公司使用其工作成果的费用为 399 美元。 对这一事实的估计可能会有所不同,但作者个人并没有准备好向某人支付 400 美元来购买大部分由完全不同的人编写并且自 1970 世纪 XNUMX 年代以来一直在公开使用的代码,因此作者为自己提出了这个问题考虑关闭。 (顺便说一句,Github上有一个处于模糊状态的免费项目 IOSCSI磁带 关于同一主题)。

幸运的是,世界上还有IBM公司,其商业欲望的规模完全不同,因此不会体现在每件小事上。 特别是,它开发了开源 LTFS 磁带文件系统,该系统也适用于 macOS。

这里需要注意的是,不同的磁带设备制造商会发布自己的 LTFS 版本来支持他们的设备。 由于作者使用IBM磁带机,因此安装了IBM的LTFS。 第三方驱动器可能需要自己的 LTFS 端口。 Github 和 Homebrew 上有 openLTFS 的通用实现。

对我们来说重要的是,LTFS 使用介质分区功能,因此可以与从 LTO-5 代开始的设备和盒式磁带一起使用。

因此,在我们的示例中,我们从 IBM 网站下载适用于 macOS 的 IBM Spectrum Archive Single Drive Edition,其中包括 LTFS 实现。 没有任何冒险,我们使用它自己的安装程序来安装该产品。 在此过程中,他还安装了 FUSE 软件包,并且在系统设置中,他必须确认一位名叫 Anatol Pomozov 的聪明程序员的授权,在这种情况下,整个 IBM 都依赖于他。 对这个人表示敬意和尊重。

建议立即在文件 /Library/Frameworks/LTFS.framework/Versions/Current/etc/ltfs.conf.local 中写入该行:

选项单驱动器sync_type=time@1

它指定默认安装磁带,并在 1 分钟不活动(默认为 5 分钟)后重置记录缓冲区。

Apple Mac 和精美设备。 LTO、SAS、光纤通道、eSATA

最后,一切准备就绪,可以连接了。 我们连接链:Mac – T3/T2适配器 – Thunderbolt电缆 – ATTO转换器 – SAS电缆 – 磁带驱动器(Mac上的几个端口、转换器和驱动器的选择并不重要)。 打开转换器的电源。 打开磁带机的电源。 我们等待驱动器根据其指示完成初始化。

我们给出命令:

ltfs -o device_list

万岁! 我们得到(以通常的 IBM 诊断方式):

307 LTFS14000I LTFS 正在启动,LTFS 版本 2.4.2.0 (10418),日志级别 2。
307 LTFS14058I LTFS 格式规范版本 2.4.0。
307 LTFS14104I 由“ltfs -o device_list”启动。
307 LTFS14105I 该二进制文件是为 Mac OS X 构建的。
307 LTFS14106I GCC 版本为 4.2.1 兼容 Apple Clang 4.1 ((tags/Apple/clang-421.11.66))。
307 LTFS17087I 内核版本:Darwin 内核版本 19.4.0:4 年 22 月 28 日星期三 40:2020:6153.101.6 PST 15; 根:xnu-86~64/RELEASE_XXNUMX_XNUMX。
307 LTFS17085I 插件:正在加载“iokit”磁带后端。
磁带设备列表:。
设备名称 = 0,供应商 ID = IBM,产品 ID = ULT3580-TD5,序列号 = **********,产品名称 = [ULT3580-TD5]。

插入磁带,等待其加载并格式化:

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

这里的-d参数指定驱动器号(如果是唯一的则始终为零,但在此命令中不能省略),-n是磁带名称(可以省略),-r参数要求放置内容大小不超过 10 MB 的 .DS_Store 文件位于磁带的索引(即用于目录)部分而不是数据部分。

神秘的生命从磁带机开始。 我们等待几分钟并收到以下响应:

LTFS15000I 正在启动 mkltfs,LTFS 版本 2.4.2.0 (10418),日志级别 2。
LTFS15041I 由“mkltfs -d 0 -nTest -r size=10M/name=.DS_Store”启动。
LTFS15042I 该二进制文件是为 Mac OS X 构建的。
LTFS15043I GCC 版本为 4.2.1 兼容 Apple Clang 4.1 ((tags/Apple/clang-421.11.66))。
LTFS17087I 内核版本:Darwin 内核版本 19.4.0:4 年 22 月 28 日星期三 40:2020:6153.101.6 PST 15; 根:xnu-86~64/RELEASE_XXNUMX_XNUMX。
LTFS15003I 正在格式化设备“0”。
LTFS15004I LTFS 卷块大小:524288。
LTFS15005I 索引分区放置策略:大小=10M/名称=.DS_Store。

LTFS11337I 更新索引脏标志 (1) - NO_BARCODE (0x0x1021081e0)。
LTFS17085I 插件:正在加载“iokit”磁带后端。
LTFS30810I 正在通过 iokit 驱动程序打开设备 (0)。
LTFS30814I 供应商 ID 是 IBM。
LTFS30815I 产品 ID 为“ULT3580-TD5”。
LTFS30816I 固件版本为 H976。
LTFS30817I 驱动器序列号为 **********。
LTFS17160I 最大设备块大小为 1048576。
LTFS11330I 正在装入磁带。
LTFS30854I 逻辑块保护已禁用。
LTFS11332I 装入成功。
LTFS17157I 正在将驱动器设置更改为随处写入模式。
LTFS15049I 正在检查介质(装入)。
LTFS30854I 逻辑块保护已禁用。
LTFS15010I 正在 SCSI 分区 1 上创建数据分区 b。
LTFS15011I 正在 SCSI 分区 0 上创建索引分区 a。
LTFS17165I 正在重置介质的容量比例。
LTFS11097I 正在对介质进行分区。
LTFS11100I 正在将标签写入分区 b。
LTFS11278I 正在将索引写入分区 b。
LTFS30808I READ_ATTR (0x8c) 返回 -20501。
LTFS30865I READ_ATTR 返回 CDB 中的无效字段 (-20501) 0。
LTFS30836I 无法读取属性 (-20501)。
LTFS11336I 该属性不存在。 忽略预期的错误。
LTFS17235I 正在将 NO_BARCODE 的索引写入 b(原因:格式,0 个文件)************。
LTFS17236I 已写入 NO_BARCODE 的索引 (b, **********)。
LTFS11337I 更新索引脏标志 (0) - NO_BARCODE (0x0x1021081e0)。
LTFS11100I 正在将标签写入分区 a。
LTFS11278I 正在将索引写入分区 a。
LTFS30808I READ_ATTR (0x8c) 返回 -20501。
LTFS30865I READ_ATTR 返回 CDB 中的无效字段 (-20501) 0。
LTFS30836I 无法读取属性 (-20501)。
LTFS11336I 该属性不存在。 忽略预期的错误。
LTFS17235I 正在将 NO_BARCODE 的索引写入(原因:格式,0 个文件)9068025555。
LTFS17236I 已写入 NO_BARCODE 的索引 (a, **********)。
LTFS15013I Volume UUID is: 3802a70d-bd9f-47a6-a999-eb74ffa67fc1.

LTFS15019I 卷容量为 1425 GB。
LTFS30854I 逻辑块保护已禁用。
LTFS15024I 介质格式化成功。

安装格式化的磁带:

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

我们再花几分钟进行驱动器操作和诊断:

307 LTFS14000I LTFS 正在启动,LTFS 版本 2.4.2.0 (10418),日志级别 2。
307 LTFS14058I LTFS 格式规范版本 2.4.0。
307 LTFS14104I 由“ltfs /Volumes/LTFS/”启动。
307 LTFS14105I 该二进制文件是为 Mac OS X 构建的。
307 LTFS14106I GCC 版本为 4.2.1 兼容 Apple Clang 4.1 ((tags/Apple/clang-421.11.66))。
307 LTFS17087I 内核版本:Darwin 内核版本 19.4.0:4 年 22 月 28 日星期三 40:2020:6153.101.6 PST 15; 根:xnu-86~64/RELEASE_XXNUMX_XNUMX。
307 LTFS14063I 同步类型为“时间”,同步时间为 60 秒。
307 LTFS17085I 插件:正在加载“iokit”磁带后端。
307 LTFS17085I 插件:正在加载“统一”iosched 后端。
307 LTFS14095I 设置磁带设备随处写入模式以避免磁带弹出。
307 LTFS30810I 通过 iokit 驱动程序打开设备 (0)。
307 LTFS30814I 供应商 ID 是 IBM。
307 LTFS30815I 产品 ID 为“ULT3580-TD5”。
307 LTFS30816I 固件版本为 H976。
307 LTFS30817I 驱动器序列号为 **********。
307 LTFS17160I 最大设备块大小为 1048576。
307 LTFS11330I 正在加载磁带。
307 LTFS30854I 逻辑块保护已禁用。
307 LTFS11332I 加载成功。
307 LTFS17157I 将驱动器设置更改为随处写入模式。
307 LTFS11005I 正在装入卷。
307 LTFS30854I 逻辑块保护已禁用。
307 LTFS17227I 磁带属性:供应商 = IBM。
307 LTFS17227I 磁带属性:应用程序名称 = LTFS。
307 LTFS17227I 磁带属性:应用程序版本 = 2.4.2.0。
307 LTFS17227I 磁带属性:介质标签 =。
307 LTFS17228I 磁带属性:文本本地化 ID = 0x81。
307 LTFS17227I 磁带属性:条形码 =。
307 LTFS17227I 磁带属性:应用程序格式版本 = 2.4.0。
307 LTFS17228I 磁带属性:卷锁定状态 = 0x00。
307 LTFS17227I 磁带属性:媒体池名称 =。
307 LTFS14111I 初始设置已成功完成。
307 LTFS14112I 调用“mount”命令来检查最终设置的结果。
307 LTFS14113I 如果成功,则会列出指定的装入点。

这就是桌面上的功能区,名为 Test(ltfs)! 未命名的磁带将被命名为 OSXFUSE Volume 0 (ltfs)。

现在您可以使用它了。

Apple Mac 和精美设备。 LTO、SAS、光纤通道、eSATA

一般来说,您需要记住,建议不要过度使用在查找器窗口中查看磁带目录的内容,因为这对于 LTFS 来说是一个非常昂贵的操作,但最好使用终端命令,或者简单地重置将备份目录批量复制到磁带上,如上窗口所示。

顺便说一句,有一个专门编写的 IBM 实用程序 ltfs_copy 及其克隆,旨在提高磁带和磁盘之间的复制效率,但到目前为止,作者还无法通过肤浅的搜索在公共领域找到它们。

您可以使用以下命令卸载磁带:

umount /Volumes/LTFS

或者直接把它扔进垃圾桶。

事实上,本质上,macOS 上有某种图形 shell 可以方便这些操作,但是在这样的变态之后,我们是否应该害怕在终端中输入几行呢?

副作用是,我们有机会通过 SAS/4*eSATA 电缆连接外部 eSATA 驱动器。

Apple Mac 和精美设备。 LTO、SAS、光纤通道、eSATA

来源: habr.com

添加评论