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

GNU mt명령이러한 값을 생성본질적으로 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 드라이브 기술 참조 설명서설정 태그를 다음과 같이 정의하십시오.

마크를 설정하다

마크가 설정되기 전의 레코드 수나 파일 마크를 알지 못해도 드라이브가 빠르게 검색할 수 있는 파티션 내의 특수 레코드 요소입니다.

따라서 이 상태는 실제로 다음을 의미합니다.

  • 테이프가 삽입되었으며 드라이브가 명령을 실행할 준비가 되었습니다.
  • 현재 위치는 테이프의 시작도 끝도 아닌 그 사이 어딘가입니다.
  • 현재 빠르게 검색 가능한 설정 마커에 있습니다.
  • 이 설정 표시는 특히 데이터 끝 표시이므로 이 지점 이후에는 테이프에 더 이상 유효한 데이터가 없어야 합니다.

따라서 테이프에 더 많은 데이터를 쓰기 시작하려면 올바른 위치에 오셨습니다.

관련 정보