如何创建一个使用 mt 命令的虚拟磁带设备?

问题描述

我在 Centos7 上,我知道 mhvtl。但是,我正在寻找一种更基本的过程来创建可以处理所有 mt-st ioctl 的“磁带”(例如 st3(和 nst3))。我一直在使用 scsi_debug 内核模块来创建像这样的磁带设备:

modprobe scsi_debug ptype=1

这绝对成功地创建了所有合适的字符设备文件。 “磁带”的初始状态检查看起来是正确的 - 像这样:

    [hostname]# mt -f /dev/st3 status
    SCSI 2 tape drive:
    File number=0,block number=0,partition=0.
    Tape block size 0 bytes. Density code 0x0 (default).
    Soft error count since last status=0
    General status bits on (41010000):
    BOT ONLINE IM_REP_EN

但是,如果我第二次运行相同的状态,我会得到这个:

    [hostname]# mt -f /dev/st3 status
    SCSI 2 tape drive:
    File number=-1,block number=-1,partition=0.
    Tape block size 0 bytes. Density code 0x0 (default).
    Soft error count since last status=0
    General status bits on (10000):
    IM_REP_EN

看起来磁带被“加载”,然后被“卸载”。日志中的反馈方式很少,任何交互尝试(倒带/加载/fsf/等)都会挂起并最终因 IO 错误而放弃。来自 dmesg:

[st3] Sense Key : Illegal Request [current]
[st3] Add. Sense: Invalid command operation code

mhvtl 很棒 - 但它对于我需要的东西来说太过分了。我只需要一个虚拟磁带设备(不是整个库)就可以正确地与所有 mt 命令交互。

想法?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)