mtxを介してCentOS 7のテープライブラリと対話する

mtxを介してCentOS 7のテープライブラリと対話する

SASを介してCentOS 7システムにQuantum SuperLoader 3を接続しました。に表示されdmesglsscsi次のように表示されます。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-stmtxBaculaや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

関連情報