AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 759138
Accepted
Wildcat Matt
Wildcat Matt
Asked: 2023-10-17 07:43:48 +0800 CST2023-10-17 07:43:48 +0800 CST 2023-10-17 07:43:48 +0800 CST

如何解释 mt status 的输出?

  • 772

我正在 OpenSuse 15.5 上使用 Quantum DLT-4000 磁带机运行 mt 版本 2.13。

当我运行时,mt -f /dev/st0 status我得到以下输出:

drive type = 114
drive status = 419430400
sense key error = 0
residue count = 0
file number = 0
block number = 0

如何解释硬盘类型和硬盘状态代码?

tape
  • 1 1 个回答
  • 28 Views

1 个回答

  • Voted
  1. Best Answer
    telcoM
    2023-10-17T20:01:54+08:002023-10-17T20:01:54+08:00

    GNUmt命令基本上直接从ioctl调用返回的值生成这些值。struct mtgetMTIOCGET

    include/uapi/linux/mtio.hLinux 内核源代码中列出了类型值:

    /*
     * Constants for mt_type. Not all of these are supported,
     * and these are not all of the ones that are supported.
     */
    #define MT_ISUNKNOWN        0x01
    #define MT_ISQIC02      0x02    /* Generic QIC-02 tape streamer */
    #define MT_ISWT5150     0x03    /* Wangtek 5150EQ, QIC-150, QIC-02 */
    #define MT_ISARCHIVE_5945L2 0x04    /* Archive 5945L-2, QIC-24, QIC-02? */
    #define MT_ISCMSJ500        0x05    /* CMS Jumbo 500 (QIC-02?) */
    #define MT_ISTDC3610        0x06    /* Tandberg 6310, QIC-24 */
    #define MT_ISARCHIVE_VP60I  0x07    /* Archive VP60i, QIC-02 */
    #define MT_ISARCHIVE_2150L  0x08    /* Archive Viper 2150L */
    #define MT_ISARCHIVE_2060L  0x09    /* Archive Viper 2060L */
    #define MT_ISARCHIVESC499   0x0A    /* Archive SC-499 QIC-36 controller */
    #define MT_ISQIC02_ALL_FEATURES 0x0F    /* Generic QIC-02 with all features */
    #define MT_ISWT5099EEN24    0x11    /* Wangtek 5099-een24, 60MB, QIC-24 */
    #define MT_ISTEAC_MT2ST     0x12    /* Teac MT-2ST 155mb drive, Teac DC-1 card (Wangtek type) */
    #define MT_ISEVEREX_FT40A   0x32    /* Everex FT40A (QIC-40) */
    #define MT_ISDDS1       0x51    /* DDS device without partitions */
    #define MT_ISDDS2       0x52    /* DDS device with partitions */
    #define MT_ISONSTREAM_SC        0x61   /* OnStream SCSI tape drives (SC-x0)
                          and SCSI emulated (DI, DP, USB) */
    #define MT_ISSCSI1      0x71    /* Generic ANSI SCSI-1 tape unit */
    #define MT_ISSCSI2      0x72    /* Generic ANSI SCSI-2 tape unit */
    
    /* QIC-40/80/3010/3020 ftape supported drives.
     * 20bit vendor ID + 0x800000 (see ftape-vendors.h)
     */
    #define MT_ISFTAPE_UNKNOWN  0x800000 /* obsolete */
    #define MT_ISFTAPE_FLAG 0x800000
    

    十进制的 114 是十六进制的 0x72,因此该值表示您的磁带驱动器是“通用 ANSI SCSI-2 磁带单元”,这可能是大多数现代磁带驱动器的类型。

    状态值是一个位字段,各个位也列在include/uapi/linux/mtio.h:

    /* Generic Mag Tape (device independent) status macros for examining
     * mt_gstat -- HP-UX compatible.
     * There is room for more generic status bits here, but I don't
     * know which of them are reserved. At least three or so should
     * be added to make this really useful.
     */
    #define GMT_EOF(x)              ((x) & 0x80000000)
    #define GMT_BOT(x)              ((x) & 0x40000000)
    #define GMT_EOT(x)              ((x) & 0x20000000)
    #define GMT_SM(x)               ((x) & 0x10000000)  /* DDS setmark */
    #define GMT_EOD(x)              ((x) & 0x08000000)  /* DDS EOD */
    #define GMT_WR_PROT(x)          ((x) & 0x04000000)
    /* #define GMT_ ?       ((x) & 0x02000000) */
    #define GMT_ONLINE(x)           ((x) & 0x01000000)
    #define GMT_D_6250(x)           ((x) & 0x00800000)
    #define GMT_D_1600(x)           ((x) & 0x00400000)
    #define GMT_D_800(x)            ((x) & 0x00200000)
    /* #define GMT_ ?       ((x) & 0x00100000) */
    /* #define GMT_ ?       ((x) & 0x00080000) */
    #define GMT_DR_OPEN(x)          ((x) & 0x00040000)  /* door open (no tape) */
    /* #define GMT_ ?       ((x) & 0x00020000) */
    #define GMT_IM_REP_EN(x)        ((x) & 0x00010000)  /* immediate report mode */
    #define GMT_CLN(x)              ((x) & 0x00008000)  /* cleaning requested */
    /* 15 generic status bits unused */
    

    状态 419430400 的十六进制值为 0x19000000,因此它是以下各项的总和:

    • 0x10000000= DDS 设定标记
    • 0x08000000= DDS EOD(数据结束)
    • 0x01000000= GMT_ONLINE(= 已插入磁带并且驱动器已准备好接收命令)

    HP DDS 驱动器技术参考手册末尾的术语表将设置标记定义为:

    设定标记

    分区内的特殊记录元素,驱动器可以快速搜索到该元素,而无需知道设置标记之前的记录或文件标记的数量。

    因此,该状态实际上意味着:

    • 磁带已插入,驱动器已准备好执行命令
    • 当前位置既不是磁带的开头也不是结尾,而是介于两者之间
    • 当前位置位于可快速搜索的设置标记处
    • 该设置标记专门是数据结束标记,因此磁带上不应再有超过此点的有效数据。

    因此,如果您想开始向磁带写入更多数据,那么您就处于正确的位置。

    • 1

相关问题

  • 从 LTO 磁带读取芯片数据

  • 当您不完全确定里面有什么时,从磁带驱动器中转储数据的安全方法是什么?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve