当我们运行 mtx 命令将磁带从自动加载机插槽加载到磁带驱动器时,我们会遇到一些困惑。我们有两个 LTO-5 磁带机连接到我们的备份服务器。它们被操作系统识别为/dev/st0 和/dev/st1。我们还使用 Quantum Scalar-i40 作为磁带自动库,它通过符号链接 /dev/changer 指向 /dev/sg2。
当我通过 mtx 将磁带从插槽 36 加载到磁带驱动器 1 时,mtx 状态似乎正常。
# load tape in slot 36 to tape drive 1
[root@backup ~]# mtx -f /dev/changer load 36 1
Loading media from Storage Element 36 into drive 1...done
[root@backup ~]# mtx -f /dev/changer status
Storage Changer /dev/changer:2 Drives, 38 Slots ( 0 Import/Export )
Data Transfer Element 0:Empty
Data Transfer Element 1:Full (Storage Element 36 Loaded):VolumeTag = JP6650
Storage Element 1:Full :VolumeTag=JP6657
***
Storage Element 36:Empty:VolumeTag=
Storage Element 37:Full :VolumeTag=JP6653
Storage Element 38:Full :VolumeTag=JP6658
但是,磁带机数据传输元素 1 不指向 /dev/st1。它指向 /dev/st0。数据传输元素 1 对应于 /dev/st0,这非常令人困惑。
[root@backup ~]# mt -f /dev/st0 status
SCSI 2 tape drive:
File number=0, block number=0, partition=0.
Tape block size 0 bytes. Density code 0x58 (no translation).
Soft error count since last status=0
General status bits on (41010000):
BOT ONLINE IM_REP_EN
[root@backup ~]# mt -f /dev/st1 status
SCSI 2 tape drive:
File number=-1, block number=-1, partition=0.
Tape block size 0 bytes. Density code 0x0 (default).
Soft error count since last status=0
General status bits on (50000):
DR_OPEN IM_REP_EN
这是我们其余的操作系统 + 内核 + scsi 设备信息。
[root@backup ~]# cat /etc/centos-release
CentOS release 6.1 (Final)
[root@backup ~]# uname -a
Linux backup 2.6.32-131.21.1.el6.x86_64 #1 SMP Tue Nov 22 19:48:09 GMT 2011 x86_64 x86_64 x86_64 GNU/Linux
[root@backup ~]# lsscsi -g
[0:0:0:0] tape HP Ultrium 5-SCSI Z58Z /dev/st0 /dev/sg0
[0:0:1:0] tape HP Ultrium 5-SCSI Z58Z /dev/st1 /dev/sg1
[0:0:1:1] mediumx QUANTUM Scalar i40-i80 135G /dev/sch0 /dev/sg2
[1:0:0:0] cd/dvd HL-DT-ST DVD-ROM GDR-R10N 2.02 /dev/sr0 /dev/sg3
[3:0:0:0] disk ATA Maxtor 6H500F0 HA43 /dev/sda /dev/sg4
[4:0:0:0] disk ATA Maxtor 6H500F0 HA43 /dev/sdb /dev/sg5
有没有办法强制 mtx 以不同的方式识别我的磁带驱动器?我希望 /dev/st* 设备对应于 mtx 下的正确数据传输元素。
答案1
正如您所发现的,像 /dev/st0 这样的设备名称不是持久的;它们按照发现顺序命名。获得在重新启动后仍保留的名称的最佳方法是编写 UDEV 规则来创建所需的符号链接。 Google 先生有很多关于如何编写 UDEV 规则的信息,但本质上,当检测到设备时,内核会向应用规则的 UDEV 子系统提供设备属性,如果规则的谓词全部通过,则规则操作将创建符号链接。