我有一个 Quantum SuperLoader 3 通过 SAS 插入 CentOS 7 系统。它显示在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
。我还安装了mtx
与 Bacula 或 Amanda 一起使用的驱动程序,但mtx
似乎期望使用与ch
.
看来有一定的驱动程序工具ch
,例如 scsi-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
。使用通用设备,mtx
可以在 CentOS 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 有运行 shell 命令的语法来导入其他配置文件,这将帮助我们获得我们需要的东西。该语法列于 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
您必须修改上面的正则表达式以匹配您的磁带库。我有一台 Dell TL2000,它实际上是重新命名的 IBM 3573-TL。通过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(它被报告为bug):
# modprobe sg
# lsscsi --generic
# mtx -f /dev/sgX status
(SCSI 通用驱动程序在启动时未加载)https://www.centos.org/forums/viewtopic.php?f=48&t=52357