我可以在C#中无故障地阅读LTO磁带。
每个墨盒中还有一个墨盒内存(LTO-CM)。 http://en.wikipedia.org/wiki/Linear_Tape-Open
我想读/写这个芯片中的一些字节......我怎么能用C#做什么?
答案 0 :(得分:2)
看起来在C#.NET和其他编程语言/框架中都没有通用/通用方法来读取LTO盒式磁带存储器。
为此目的,只能使用.NET编写的特定驱动器型号特定工具。您可以在制造商的网站上找到它。
为了读取CM [ Cartridge Memory ]内容,我们需要访问 它通过特定的驱动器接口,而不是CM的API 本身。
访问该信息的方法可能使用专有 每个驱动器制造商的扩展。我的是惠普驱动器,惠普有一个 磁带工具包。
尽管如此 - 根据来自ADSM.ORG网站的this的Richard Sims回复 - 您仍然可以使用SCSI命令访问盒式磁带内存:
供应商不认为客户应该需要 访问中型辅助内存( MAM ) - 行业通用名称 盒内非易失性存储器芯片,用于跟踪使用情况和其他信息。
手册“IBM TotalStorage LTO Ultrium磁带机 - SCSI参考” ( GA32-4050 )完整地描述了他们的MAM以及如何通过SCSI读取和写入它 命令。
设备驱动程序编程手册(在本例中为“IBM Ultrium 设备驱动程序 - 编程参考( GC35-0483 ))提供了许多 ioctl 这些函数使程序员更容易调用对SCSI的解析 命令;但在这种情况下,我看不到获取MAM数据的现成操作。
那些ioctl操作就是那些方便的 ntutil 和 tapeutil 命令 调用以获取信息,我在他们的文档中没有看到他们可以说的任何内容 返回它(虽然它可能会从其他操作中隐式返回)。
答案 1 :(得分:1)
这个项目在C:https://github.com/scangeo/lto-cm
用于读取和写入"文本属性"应该由应用程序或用户使用。大多数其他领域是为驱动器和磁带供应商和制造商保留的。
它通过SCSI命令使用集成在磁带机中的阅读器。
目前它已经过HP和IBM LTO-4驱动器的测试,可能需要对其他硬件进行一些调整。出于某种原因,它也只适用于某些SCSI卡。
我们使用它来编写标识磁带的磁带标签,并提供磁带的完整MD5校验和,以便将来完整性检查,我们在写完整个磁带后计算。
答案 2 :(得分:0)
正如Victor在上一篇文章中所建议的那样,“ lto-cm”允许我们通过SCSI命令与LTO盒带存储器进行通信。
Here是另一个用于读取LTO盒式存储器的Linux bash脚本:LTO-CM-Read
基本上,LTO盒式存储器中有许多属性,例如介质制造商,序列号等,并且“ lto-cm”可以将数据写入/读取到“ USER MEDIUM TEXT LABEL”属性字段(属性标识符的0803h )。此特定属性是主机类型属性,客户端可以在其中使用它来存储特定于应用程序的数据。另一方面,“ LTO-CM-Read”可以从LTO盒式存储器中读取所有属性。但是,没有写数据的功能。
我们还有一个software:LTO-CM-Analyzer
此开源软件利用独立的RFID读卡器直接将数据读/写到LTO盒式存储芯片。您不需要昂贵的磁带机。该软件的概念是使用Proxmark3(= RFID读卡器)从芯片中转储数据,然后使用脚本将其转换为人类可读的数据。另外,Proxmark3支持读/写。有关更多详细信息,请访问this链接。