mt statusの出力を解釈する方法は?

mt statusの出力を解釈する方法は?

私はQuantum DLT-4000テープドライブを使用してOpenSuse 15.5で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

ドライブタイプとドライブステータスコードはどのように解釈されますか?

ベストアンサー1

GNUmtコマンドこれらの値を生成本質的には、struct mtgetioctl呼び出しから直接返されますMTIOCGET

型の値は次のとおりです。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

10進数114は16進数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の16進値は0x19000000なので、次の合計です。

  • 0x10000000= DDS設定フラグ
  • 0x08000000= DDS EOD(データ終了)
  • 0x01000000= GMT_ONLINE(=テープが挿入され、ドライブがコマンドを受信する準備ができました)

最後に用語集HP DDSドライブ技術リファレンスガイド設定タグを次のように定義します。

マークを設定する

マークが設定される前のレコード数やファイルマークがわからなくても、ドライブがすばやく検索できるパーティション内の特殊レコード要素。

したがって、この状態は実際には次のことを意味します。

  • テープが挿入され、ドライブがコマンドを実行する準備が整いました。
  • 現在の場所は、テープの始まりでも終わりでもなく、その間のどこかです。
  • 現在、迅速に検索可能な設定マーカーにあります。
  • この設定マークは特にデータ終了マークであるため、この時点以降にテープに有効なデータがないはずです。

したがって、テープにデータを書き込むために正しい場所に来ました。

おすすめ記事