确定 LTO 磁带的剩余容量

Mat*_*ark 15 tape lto

如何确定 LTO 磁带上剩余多少空间?

如果我寻找到最后并检查状态,我可以看到我的文件编号为 17,但我不知道每个文件有多大。

$ mt -f /dev/nst1 eod
$ mt -f /dev/nst1 status
SCSI 2 tape drive:
File number=17, block number=0, partition=0.
Tape block size 0 bytes. Density code 0x44 (LTO-3).
Soft error count since last status=0
General status bits on (81010000):
 EOF ONLINE IM_REP_EN
Run Code Online (Sandbox Code Playgroud)

没有读取整个条带,我如何确定磁带的已用/可用容量?

And*_*gge 0

首先:这并不容易。

磁带盒中有一个芯片,可以提供多种信息。该芯片称为 MAM(媒体辅助存储器)。加载磁带时,可以在磁带驱动器上使用 SCSI 命令“READ ATTRIBUTE”读取信息。属性之一是“分区中的剩余容量”。这包含可以写入当前磁带分区的字节数。这就引出了一个问题:什么是磁带分区?最新版本的 LTO(LTO 5 及更新版本)磁带可以进行分区(LTFS 使用两个分区)。

如果您的磁带已分区,则每个分区都将有一定量的可用空间,您将需要循环所有分区以获取每个分区的可用空间信息。

如果您想了解有关 MAM 的更多信息,请查看IBM 的 LTO-8 SCSI Reference,其中详细解释了这一点(从第 355 页开始的第 6.5 节包含有趣的内容)。如果您需要了解如何实现这一点,也许您应该查看maminfosg3_utils Issue Tracker 中的此问题

我不确定该信息在写入磁带后是否立即更新。也许它只是卸载时的更新,这会使检索准确的信息变得更加困难。我也不确定当你覆盖磁带时这会如何表现。您可能必须自己解决这个问题。