访问LTO盒式存储器(C/C#)的源代码



我可以在C#中毫无问题地读取LTO磁带。

每个盒带中还有一个盒带存储器(LTO-CM)。http://en.wikipedia.org/wiki/Linear_Tape-Open

我如何在C#或C中读/写这个芯片中的一些字节?

C中有一个项目:https://github.com/scangeo/lto-cm

它是用来读写应用程序或用户应该使用的"文本属性"的。大多数其他字段是为驱动器和磁带供应商及制造商保留的。

它通过SCSI命令使用集成在磁带驱动器中的读卡器。

目前,它已经在HP和IBM LTO-4驱动器上进行了测试,可能需要对其他硬件进行一些调整。由于某些原因,它也只能与某些SCSI卡配合使用。

我们用它来写一个标识磁带的磁带标签,并提供磁带的完整MD5校验和,以便在写入整个磁带后进行未来的完整性检查。

在C#和其他编程语言/框架中,似乎都没有读取LTO盒式内存的通用方法。

只有在.NET中编写的特定驱动器型号的工具才能用于此目的。你可以在制造商的网站上找到它。

根据这篇来自ADSM.ORG的帖子:

为了读取CM[CartridgeMemory]内容,我们需要访问它通过特定驱动器的接口,而不是CM的API它本身

访问该信息的方法可能使用专有每个驱动器制造商的扩展。我的是HP驱动器,HP有磁带工具包。

尽管如此,根据ADSM.ORG网站Richard Sims的回答,您仍然可以使用SCSI命令访问盒式存储器:

供应商不认为客户应该访问介质辅助存储器MAM)-的行业通用名称一种盒式非易失性存储芯片,用于跟踪使用情况和其他信息。

手册"IBM TotalStorage LTO Ultrium磁带机-SCSI参考"(GA32-4050)充分描述了他们的MAM以及如何通过SCSI读写它命令。

设备驱动程序编程手册(在本例中为"IBM Ultrium设备驱动程序-编程参考(GC35-0483))提供了许多ioctl使程序员更容易调用SCSI解析的函数命令;但在这种情况下,我没有看到用于获取MAM数据的准备好的操作。

这些ioctl操作是方便的dandyntutiltapeutil命令调用以获取信息,我在他们的文档中没有看到任何内容表明他们可以返回它(尽管它可能是从其他操作隐式返回的)。

这里是另一个用于读取LTO盒式内存的Linux软件。该软件支持超过lto-cm的更多属性。

此外,您可以使用通用RFID读卡器,如Proxmark3或ACR122u,而不是LTO驱动器。

https://github.com/RfidResearchGroup/proxmark3

https://github.com/philpem/nfc-ltocm

最新更新