Answers:
如果您的驱动器是新驱动器且磁带质量良好,则可以期望向磁带中写入的字节数超出了官方容量。从某种意义上讲,您可以调用该备用容量,但它并未被使用。
随着驱动器磁头的磨损,容量将会减少。如果将其与质量不高的磁带结合使用,容量可能会进一步下降。
由于容量会像这样变化,因此需要某种方式向备份应用程序发出信号,告知您容量不足。如果备份应用程序到达了磁带的末端并且没有准备好,则可能会出现问题。最好使用一些预先警告的应用程序,以便它可以使用剩余空间来包装正在执行的操作。
如果您的操作系统恰好是Linux,那么一旦到达磁带的最后一部分,该API就会使所有其他write
系统调用均会失败ENOSPC
。如果您的备份应用程序不知道此功能,它将处理第一个ENOSPC
当作结尾,并且磁带上还会有一些未使用的空间。
我可以想象在其他操作系统上也会发生类似的情况。
感谢@kasperd,我做了进一步的调查,这确实是问题所在。事实证明,此功能称为EWEOM(介质提前警告),它是指磁带制造商在磁带上放置的标记,因此它不是驱动器跟踪已卷取多少磁带。
我为mbuffer
要用于写入磁带的程序编写了一个补丁,可以肯定的是,在到达磁带末端时,ENOSPC
交替write()
调用会 出错,但是我可以继续写入更多数据。就我而言,取决于我的压缩率不是很高的数据,还有更多的数据-8到19 GiB之间。
有趣的是,达到EWEOM标记后,磁带写入速度急剧下降。它几乎从80MB /秒减少到47MB /秒。这似乎不是数据问题,因为在此之前,驱动器已保持80MB / sec的速度。您会听到驱动电机的运行速度较慢,并且在整个磁带上进行重写,因此重写此部分不会提高速度(因此,这不是第一次写入速度较慢的情况,就像磁带开始时那样)。全新磁带。)
我找不到有关EWEOM标记何时应出现在磁带上的任何文档,因此我不确定它是否已标准化。我所能找到的是对LTO-6 / 7驱动器的模糊引用,该驱动器已增加到磁带空间的5%,这似乎很多。由于磁带的高写入速度,这可能是为了允许清除较大的缓冲区。
就Linux API而言,相关行在st.c
SCSI磁带驱动程序源代码中,而有关此行为的说明在st
驱动程序文档中。