mtx를 통해 CentOS 7의 테이프 라이브러리와 상호 작용

mtx를 통해 CentOS 7의 테이프 라이브러리와 상호 작용

SAS를 통해 CentOS 7 시스템에 Quantum SuperLoader 3을 연결했습니다. 에 표시되어 dmesg있으며 lsscsi다음과 같이 표시됩니다.ch운전사.

$ lsscsi
[0:2:0:0]    disk    LSI      MR9271-8i        3.24  /dev/sda
[1:0:0:0]    tape    IBM      ULTRIUM-HH6      E4J1  /dev/st0
[1:0:0:1]    mediumx QUANTUM  UHDL             0091  /dev/sch0

커널 초기화는 다음과 같습니다.

$ dmesg
[   13.443589] scsi 1:0:0:0: Attached scsi generic sg2 type 1
[   13.444091] scsi 1:0:0:1: Attached scsi generic sg3 type 8
[   13.463023] SCSI Media Changer driver v0.25
[   13.463121] st: Version 20101219, fixed bufsize 32768, s/g segs 256
[   13.572514] ch0: type #1 (mt): 0x0+1 [medium transport]
[   13.572516] ch0: type #2 (st): 0x100+16 [storage]
[   13.572517] ch0: type #3 (ie): 0x0+0 [import/export]
[   13.572518] ch0: type #4 (dt): 0x20+1 [data transfer]
[   13.697117] ch0: dt 0x20: ch0: ID/LUN unknown
[   13.697119] ch0: INITIALIZE ELEMENT STATUS, may take some time ...
[   67.097903] ch0: ... finished
[   67.097910] ch 1:0:0:1: Attached scsi changer ch0
[   67.098792] st 1:0:0:0: Attached scsi tape st0
[   67.098796] st 1:0:0:0: st0: try direct i/o: yes (alignment 4 B)

이 패키지를 사용하면 테이프 드라이브가 정상적으로 작동합니다 mt-st. mtxBacula나 Amanda에서 사용할 드라이버 도 설치했는데 , mtx그 드라이버는 ch.

확실한 게 있는 것 같더라구요chscsi-changer와 같은 드라이버 도구mtx, 하지만 일반적으로 사용되지 않는 것 같아서 드라이버와 직접 작업할 수 있는 방법이 있을 것이라고 생각했습니다 ch.

명백한 방식으로 호출되는 경우:

$ sudo mtx -f /dev/sch0 status
/dev/sch0 is not an sg device, or old sg driver

/dev/sch0은 다음과 같습니다.

$ ls -lastZ /dev/sch0
crw-rw----. root cdrom system_u:object_r:device_t:s0    /dev/sch0

kraxel.org SCSI 변환기를 사용해 보겠지만 Amanda 내에서 지원이 부족하다는 점을 고려하면 mtx이 문제를 해결하기 위한 제안이 도움이 될 것입니다.

답변1

알아 냈어!

mtx"일반" SCSI 장치에서만 작동합니다. 커널 드라이버 /dev/sch0가 제공하는 장치는 약간 ch붉은 청어입니다.

모든 드라이버가 지원하는 특정 장치를 생성하는 것 외에도 SCSI 장치에는 "일반" 장치 파일이 제공되는 것으로 나타났습니다. 다음 명령을 사용하여 찾을 수 있습니다 lsscsi.

$ lsscsi --generic
[0:0:19:0]   enclosu CISCO    UCS 240          0809  -          /dev/sg0
[0:2:0:0]    disk    LSI      MR9271-8i        3.24  /dev/sda   /dev/sg1
[1:0:0:0]    tape    IBM      ULTRIUM-HH6      E4J1  /dev/st0   /dev/sg2
[1:0:0:1]    mediumx QUANTUM  UHDL             0091  /dev/sch0  /dev/sg3

이것들은 실제로 위의 출력에서 ​​언급되었습니다 dmesg. 범용 장치를 사용하면 mtxCentOS 7의 SuperLoader 3과 함께 사용할 수 있습니다.

$ sudo mtx -f /dev/sg3 status
  Storage Changer /dev/sg3:1 Drives, 16 Slots ( 0 Import/Export )
Data Transfer Element 0:Empty
      Storage Element 1:Empty
      Storage Element 2:Empty
      Storage Element 3:Empty
      Storage Element 4:Empty
      Storage Element 5:Empty
      Storage Element 6:Empty
      Storage Element 7:Empty
      Storage Element 8:Empty
      Storage Element 9:Empty
      Storage Element 10:Empty
      Storage Element 11:Empty
      Storage Element 12:Empty
      Storage Element 13:Empty
      Storage Element 14:Empty
      Storage Element 15:Empty
      Storage Element 16:Empty

편의상 이제 남은 작업은 /dev/changer심볼릭 링크 뿐입니다 /dev/sg3.

답변2

디스크 및 기타 SCSI 장치를 추가하거나 제거하는 운영자를 위해 몇 가지 추가 정보와 해결 방법을 추가하고 싶었지만 이전에 bacula에서 구성한 /dev/sgX 장치가 재부팅 후 변경되었음을 발견했습니다. Bacula에는 쉘 명령을 실행하여 다른 구성 파일을 가져오는 구문이 있으며, 이는 필요한 것을 얻는 데 도움이 됩니다. 이 구문은 Bacula 9.4에 대한 "기본" 매뉴얼의 섹션 18.2.3에 나열되어 있습니다.

먼저 스크립트를 작성하십시오.

cat > /usr/local/libexec/bacula-get-generic-changer-device << XYZZY
#!/bin/sh
echo -n Changer Device = \$(/usr/bin/lsscsi -g |/usr/bin/grep 'mediumx.*IBM.*3573-TL.*/dev/sch' |/usr/bin/sed 's|^.*/dev/\(sg[0-9]\)|/dev/\1|')
XYZZY
chmod 700 /usr/local/libexec/bacula-get-generic-changer-device

라이브러리와 일치하도록 위 정규식을 수정해야 합니다. 저는 실제로 IBM 3573-TL 브랜드가 변경된 Dell TL2000을 가지고 있습니다. lsscsi를 통해 쿼리하면 다음과 같이 표시됩니다.

[6:0:0:1]    mediumx IBM      3573-TL          F.11  /dev/sch0  /dev/sg6

스크립트를 실행하면 출력이 다음과 유사하게 나타나야 합니다. 시스템에서 작동하는지 확인하세요.

# /usr/local/libexec/bacula-get-changer-generic-device
Changer Device = /dev/sg6# 

뒤에 줄바꿈 문자가 없고 일반 장치 이름 뒤에 프롬프트가 표시된다는 것을 알 수 있습니다. 이것이 우리가 원하는 것입니다. 이제 남은 것은 bacula-sd.conf의 "Changer Device" 행을 변경하는 것뿐입니다. 이를 다음으로 바꾸십시오.

@|"sh -c /usr/local/libexec/bacula-get-changer-generic-device"

이제 Bacula는 다른 SCSI 장치가 시스템에 추가되거나 제거된 경우에도 부팅할 때마다 라이브러리/오토체인저에 대한 올바른 일반 SCSI 장치를 갖게 됩니다.

편집: 물론, 이것을 알아낸 후에는 더 쉬운 방법이 있는 것 같습니다. /dev/tape/by-id/적합한 장비를 확인하고 사용할 수 있습니다 . 내 경우에는 다음과 같습니다.

/dev/tape/by-id/scsi-1IBM_3573-TL_00X2U49P1785_LL0 -> ../../sg6

또한 논리적 라이브러리를 구별할 수 있다는 추가 이점도 있습니다( _LL0).

답변3

Centos 7에서 커널 모듈 sg를 로드해야 합니다(버그로 보고됨).

# modprobe sg
# lsscsi --generic
# mtx -f /dev/sgX status

(부팅 시 SCSI 일반 드라이버가 로드되지 않음)https://www.centos.org/forums/viewtopic.php?f=48&t=52357

관련 정보