如何用 mt 或 tar 确定磁带的剩余容量?一个块有多少空间?

如何用 mt 或 tar 确定磁带的剩余容量?一个块有多少空间?

我目前正在尝试使用以下方法将数据备份到 LTO-4 磁带上mt-st 和 gnu tar1.32,但我想确保在磁带用完之前停止尝试复制内容! LTO-4名义上具有800G或1.6T压缩容量。tapeinfo -f /dev/nst0 | grep Comp回报

DataCompEnabled: yes
DataCompCapable: yes
DataDeCompEnabled: yes
CompType: 0x1
DeCompType: 0x1

我认为这意味着压缩已启用?然后,我再次使用 向磁带添加存档mt-st -f /dev/nst0 eod ; tar -czf /dev/nst0 directoryname,因此我还使用 gzip 压缩该存档。

简而言之,我不知道如何可视化磁带上的档案占用了多少数据,它们以块为单位进行测量,并且我不知道一个块包含多少数据。我已经将大约200G的数据复制到磁带上并mt-st -f /dev/nst0 eod ; mt-st -f /dev/nst0 status ; echo -e "\n" ; mt-st -f /dev/nst0 tell返回:

SCSI 2 tape drive:
File number=1, block number=-1, partition=0.
Tape block size 0 bytes. Density code 0x46 (LTO-4).
Soft error count since last status=0
General status bits on (9010000):
 EOD ONLINE IM_REP_EN


At block 18763534.

tapeinfo -f | grep MaxBlock归来MaxBlock: 16777215。那么看来我已经超过了最大块?但mt-st -f /dev/nst0 rewind ; tar -tzvf /dev/nst0确实返回了我复制到该存档中的所有文件的列表,并将磁带移至数据末尾,因此我不应该用完任何空间。通过查看mt手册,我找不到一种方法可以在不先写的情况下转到磁带的末尾。

这是如果有帮助的话给出的其余部分tapeinfo

Vendor ID: 'HP      '
Product ID: 'Ultrium 4-SCSI  '
Revision: 'U57D'
Attached Changer API: No
SerialNumber: 'HU1104ERC3'
MinBlock: 1
MaxBlock: 16777215
SCSI ID: 0
SCSI LUN: 0
Ready: yes
BufferedMode: yes
Medium Type: Not Loaded
Density Code: 0x46
BlockSize: 0
Block Position: 18763534
Partition 0 Remaining Kbytes: 800226
Partition 0 Size in Kbytes: 800226
ActivePartition: 0
EarlyWarningSize: 0
NumPartitions: 0
MaxPartitions: 0

答案1

MaxBlockfromtapeinfo表示驱动器支持的最大块大小。例如,当您使用tar命令时,您可以通过 tar 选项指定块大小-b。这个大小是有上限的,这个上限对应的是MaxBlock。另一方面,mt-st -f /dev/nst0 tell显示磁带的位置。事实上,如果您查看Block Positionfrom tapeinfo,这个数字与 from 的返回值一致mt-st tell

您可以尝试使用我创建的以下 bash 脚本来读取 LTO-CM 芯片的剩余容量。https://github.com/Kevin-Nakamoto/LTO-CM-Read

相关内容