1.安装基础包
yum install mt-st mtx sg3_utils-libs sg3_utils-libs sg3_utils sg3_utils-devel lsscsi iscsi-initiator-utils kernel kernel-devel kernel-headers lzo-devel zlib-devel -y
2.安装 mhvtl
mhvtl-utils-1.6-3.el7.x86_64.rpm
mhvtl-utils-1.6-3.el7.x86_64.rpm
yum install mhvtl-utils-1.6-3.el7.x86_64.rpm
检查是否安装成功
# ls /etc/mhvtl/
device.conf library_contents.10 library_contents.30 mhvtl.conf
#
启动/停止mhvtl
启动mhvtl
systemctl enable mhvtl.target
systemctl start mhvtl.target
停止mhvtl
systemctl stop mhvtl.target
检查磁带虚拟目录
# ls /opt/mhvtl/
CLN101L4 E01003L4 E01008L4 E01013L4 E01018L4 F01032L5 F01037L5 G03003TA G03008TA G03013TA G03018TA G03023TA G03028TA G03033TA G03038TA
CLN102L5 E01004L4 E01009L4 E01014L4 E01019L4 F01033L5 F01038L5 G03004TA G03009TA G03014TA G03019TA G03024TA G03029TA G03034TA G03039TA
CLN303TA E01005L4 E01010L4 E01015L4 E01020L4 F01034L5 F01039L5 G03005TA G03010TA G03015TA G03020TA G03025TA G03030TA G03035TA
E01001L4 E01006L4 E01011L4 E01016L4 F01030L5 F01035L5 G03001TA G03006TA G03011TA G03016TA G03021TA G03026TA G03031TA G03036TA
E01002L4 E01007L4 E01012L4 E01017L4 F01031L5 F01036L5 G03002TA G03007TA G03012TA G03017TA G03022TA G03027TA G03032TA G03037TA
#
检查虚拟磁带库信息
# lsscsi -g
[1:0:0:0] cd/dvd QEMU QEMU DVD-ROM 2.5+/dev/sr0 /dev/sg0
#
# lsscsi -l
[1:0:0:0] cd/dvd QEMU QEMU DVD-ROM 2.5+/dev/sr0
state=running queue_depth=1 scsi_level=6 type=5 device_blocked=0 timeout=30
#
# mtx -f /dev/sg0 status
mtx:RequestSense:LongReport=yes
mtx:RequestSense:ValidResidual=yes
mtx:RequestSense:ErrorCode=70(Current)
mtx:RequestSense:SenseKey=IllegalRequest
mtx:RequestSense:FileMark=no
mtx:RequestSense: EOM=no
mtx:RequestSense: ILI=no
mtx:RequestSense:Residual=00000000
mtx:RequestSense:AdditionalSenseCode=20
mtx:RequestSense:AdditionalSenseQualifier=00
mtx:RequestSense: BPV=no
mtx:RequestSense:Errorin CDB=no
mtx:RequestSense: SKSV=no
Mode sense (0x1A)forPage0x1D failed
mtx:RequestSense:LongReport=yes
mtx:RequestSense:ValidResidual=no
mtx:RequestSense:ErrorCode=0(Unknown?!)
mtx:RequestSense:SenseKey=NoSense
mtx:RequestSense:FileMark=no
mtx:RequestSense: EOM=no
mtx:RequestSense: ILI=no
mtx:RequestSense:AdditionalSenseCode=00
mtx:RequestSense:AdditionalSenseQualifier=00
mtx:RequestSense: BPV=no
mtx:RequestSense:Errorin CDB=no
mtx:RequestSense: SKSV=no
READ ELEMENT STATUS CommandFailed
#
3.磁带设置
Library就是带库,Drive就是定义有几个drive。
可以通过编辑/etc/mhvtl/device.conf来选择不同的路径来存储每个库的VTL磁带,以包括不同的主目录路径(针对每个库) 。下面的示例将库10从 /opt/mhvtl 更改为 /VTL
[root@netbackup-server mhvtl]# cat /etc/mhvtl/device.conf
VERSION:5
# VPD page format:
# <page #> <Length> <x> <x+1>... <x+n>
# NAA format is an 8 hex byte value seperated by ':'
# Note: NAA is part of inquiry VPD 0x83
#
# Each 'record' is separated by one (or more) blank lines.
# Each 'record' starts at column 1
# Serial num max len is 10.
# Compression: factor X enabled 0|1
# Where X is zlib compression factor 1 = Fastest compression
# 9 = Best compression
# enabled 0 == off, 1 == on
#
# fifo: /var/tmp/mhvtl
# If enabled, data must be read from fifo, otherwise daemon will block
# trying to write.
# e.g. cat /var/tmp/mhvtl (in another terminal)
Library:10 CHANNEL:00 TARGET:00 LUN:00
Vendor identification: STK
Product identification: L700
Unit serial number: XYZZY_A
NAA:10:22:33:44:ab:00:00:00
Home directory:/opt/mhvtl
PERSIST:False
Backoff:400
# fifo: /var/tmp/mhvtl
Drive:11 CHANNEL:00 TARGET:01 LUN:00
Library ID:10Slot:01
Vendor identification: IBM
Product identification: ULT3580-TD5
Unit serial number: XYZZY_A1
NAA:10:22:33:44:ab:00:01:00
Compression: factor 1 enabled 1
Compression type: lzo
Backoff:400
# fifo: /var/tmp/mhvtl
Drive:12 CHANNEL:00 TARGET:02 LUN:00
Library ID:10Slot:02
Vendor identification: IBM
Product identification: ULT3580-TD5
Unit serial number: XYZZY_A2
NAA:10:22:33:44:ab:00:02:00
Compression: factor 1 enabled 1
Compression type: lzo
Backoff:400
# fifo: /var/tmp/mhvtl
Drive:13 CHANNEL:00 TARGET:03 LUN:00
Library ID:10Slot:03
Vendor identification: IBM
Product identification: ULT3580-TD4
Unit serial number: XYZZY_A3
NAA:10:22:33:44:ab:00:03:00
Compression: factor 1 enabled 1
Compression type: lzo
Backoff:400
# fifo: /var/tmp/mhvtl
Drive:14 CHANNEL:00 TARGET:04 LUN:00
Library ID:10Slot:04
Vendor identification: IBM
Product identification: ULT3580-TD4
Unit serial number: XYZZY_A4
NAA:10:22:33:44:ab:00:04:00
Compression: factor 1 enabled 1
Compression type: lzo
Backoff:400
# fifo: /var/tmp/mhvtl
[root@netbackup-server mhvtl]#
查看mhvtl内核版本
cat /sys/modules/mhvtl/version
4.Adding a Web GUI to the mhVTL
按照CentOS上mhVTL中概述的步骤安装mhVTL,此指南将基于Web的mhVTL-GUI添加到组合中。
经过多年的努力和大力支持,Nia在mhVTL-GUI上的原始开发已被暂停。GUI的一个分支现在可以在https://github.com/markh794/mhvtl-gui获得,但是目前尚未积极开发。
step 1.安装依赖包
lsscsi (yum install lsscsi) (Required)
mtx (yum install mtx) (Required)
mt-st (yum install mt-st) (Required)
git version 1.7.4.1 or higher yum install git (Optional - for LIVE UPDATE Feature)
sysstat (yum install sysstat) (Optional)
sg3_utils (Optional) yum install sg3_utils
yum install php lsscsi mtx mt-st git sysstat sg3_utils scsi-target-utils
下面两个包,不包括在Centos 光盘中,需要单独下载
scsi-target-utils-1.0.55-4.el7.x86_64.rpm
perl-Config-General-2.61-1.el7.noarch.rpm
ote :
scsi-target-utils-1.0.55-4.el7.x86_64.rpm包需要依赖 perl-Config-General-2.61-1.el7.noarch.rpm
step 2.Start tgtd (iSCSI) and register to start on boot:
systemctl start tgtd.service
step 3.Setup sudo (Required ) :
允许您的Web服务器用户ID以root用户身份在本地运行命令
# echo“ apache ALL =(ALL)NOPASSWD:ALL”>>/etc/sudoers
释掉/etc/sudoers中的“ Defaults requiretty”行,可能需要禁用selinux才能从httpd运行sudo
step 4.在Web服务器配置文件中为MHVTL GUI添加目录别名:
Alias/mhvtl "/var/www/html/mhvtl"
<Directory"/var/www/html/mhvtl">
OptionsNone
AllowOverrideNone
Order allow,deny
Allowfrom all
</Directory>
将所有MHVTL GUI文件复制到上面指定的别名目录中
https://codeload.github.com/markh794/mhvtl-gui/tar.gz/1.4.4
step 5.Starting the GUI
Confirm both the mhVTL and iSCSI (tgtd) are started:
systemctl restart mhvtl.target
systemctl restart tgtd.service
Reload apache configuration:
systemctl reload httpd
step 6.浏览器访问MHVTL GUI,
例如 http:// localhost / mhvtl /或http://10.0.0.10/mhvtl/
使用密码“ mhvtl”登录
***要更改密码,请更新文件〜go.php,其中显示“ if($ password ==“ mhvtl”)“
5.管理磁带
5.1.磁带文件标记和块大小?
每个磁带设备能存储多个备份文件。磁带备份文件通过 cpio,tar,dd 等命令创建。同时,磁带设备可以由多种程序打开、写入数据、及关闭。你可以存储若干备份(磁带文件)到一个物理磁带上。在每个磁带文件之间有个“磁带文件标记”。这用来指示一个物理磁带上磁带文件的结尾以及另一个文件的开始。你需要使用 mt 命令来定位磁带(快进,倒带和标记)。
5.2.磁带上的数据是如何存储的?

所有的数据使用 tar 以连续磁带存储格式连续地存储。第一个磁带归档会从磁带的物理开始端开始存储(tar #0)。接下来的就是 tar #1,以此类推。
Unix 上的磁带设备名
/dev/rmt/0 或 /dev/rmt/1 或 /dev/rmt/[0-127] :Unix 上的常规磁带设备名。磁带自动倒回。
/dev/rmt/0n :以无倒回为特征,换言之,磁带使用之后,停留在当前状态等待下个命令。
/dev/rmt/0b :使用磁带接口,也就是 BSD 的行为。各种类型的操作系统比如 AIX,Windows,Linux,FreeBSD 等的行为更有可读性。
/dev/rmt/0l :设置密度为低。
/dev/rmt/0m :设置密度为中。
/dev/rmt/0u :设置密度为高。
/dev/rmt/0c :设置密度为压缩。
/dev/st[0-9] :Linux 特定 SCSI 磁带设备名。
/dev/sa[0-9] :FreeBSD 特定 SCSI 磁带设备名。
/dev/esa0 :FreeBSD 特定 SCSI 磁带设备名,在关闭时弹出(如果可以的话)。
磁带设备名示例
/dev/rmt/1cn 指明正在使用 unity 1,压缩密度,无倒回。
/dev/rmt/0hb 指明正在使用 unity 0,高密度,BSD 行为。
Linux 上的自动倒回 SCSI 磁带设备名:/dev/st0
Linux 上的无倒回 SCSI 磁带设备名:/dev/nst0
FreeBSD 上的自动倒回 SCSI 磁带设备名:/dev/sa0
FreeBSD 上的无倒回 SCSI 磁带设备名:/dev/nsa0
5.3.控制磁带驱动器
在 Linux 和类 Unix 系统上,mt 命令用来控制磁带驱动器的操作,比如查看状态或查找磁带上的文件或写入磁带控制标记。下列大多数命令需要作为 root 用户执行。
磁带控制(magnetic tape control), mt传送命令到磁带驱动器。如果磁带名没有指定,环境变量磁带被使用.如果磁带不存在, mt使用设备 /dev/rmt/0n 。
[root@netbackup-server mhvtl]# mt ?
mt: unknown command "?"
usage: mt [-v][--version][-h][-f device ] command [ count ]
commands: weof, wset, eof, fsf, fsfm, bsf, bsfm, fsr, bsr, fss, bss, rewind,
offline, rewoffl, eject, retension, eod, seod, seek, tell, status,
erase, setblk,lock, unlock, load, compression, setdensity,
drvbuffer, stwrthreshold, stoptions, stsetoptions, stclearoptions,
defblksize, defdensity, defdrvbuffer, defcompression, stsetcln,
sttimeout, stlongtimeout, densities, setpartition, mkpartition,
partseek, asf, stshowopt.
[root@netbackup-server mhvtl]#
1.查看磁带库设备相关信息
[root@centos1 opt]# lsscsi -g
[0:0:0:0] disk ATA VBOX HARDDISK 1.0/dev/sda /dev/sg0
[1:0:0:0] mediumx STK L700 0104-/dev/sg9
[1:0:1:0] tape IBM ULT3580-TD5 0104/dev/st0 /dev/sg1
[1:0:2:0] tape IBM ULT3580-TD5 0104/dev/st1 /dev/sg2
[1:0:3:0] tape IBM ULT3580-TD4 0104/dev/st2 /dev/sg3
[1:0:4:0] tape IBM ULT3580-TD4 0104/dev/st3 /dev/sg4
[1:0:8:0] mediumx STK L80 0104-/dev/sg10
[1:0:9:0] tape STK T10000B 0104/dev/st4 /dev/sg5
[1:0:10:0] tape STK T10000B 0104/dev/st5 /dev/sg6
[1:0:11:0] tape STK T10000B 0104/dev/st6 /dev/sg7
[1:0:12:0] tape STK T10000B 0104/dev/st7 /dev/sg8
mediumx是机械臂,一般磁带库有两个机械手(sg)
tape就是drive,八个驱动器(/dev/st*)
slot多个插槽(slot),插槽中的磁带被放入了驱动之后才能被正常的读写,每盘磁带读写完毕,或读写满了需要手动更换下一盘磁带。
2.装载磁带操作。
装载磁带命令格式:mtx -f <机械手设备号> load
1).查看sg9机械手状态:
[root@centos1 ~]# mtx -f /dev/sg9 status
StorageChanger/dev/sg9:4Drives,43Slots(4Import/Export)
DataTransferElement0:Empty
DataTransferElement1:Empty
DataTransferElement2:Empty
DataTransferElement3:Empty
StorageElement1:Full:VolumeTag=E01001L4
StorageElement2:Full:VolumeTag=E01002L4
StorageElement3:Full:VolumeTag=E01003L4
StorageElement4:Full:VolumeTag=E01004L4
StorageElement5:Full:VolumeTag=E01005L4
StorageElement6:Full:VolumeTag=E01006L4
StorageElement7:Full:VolumeTag=E01007L4
StorageElement8:Full:VolumeTag=E01008L4
StorageElement9:Full:VolumeTag=E01009L4
StorageElement10:Full:VolumeTag=E01010L4
StorageElement11:Full:VolumeTag=E01011L4
StorageElement12:Full:VolumeTag=E01012L4
StorageElement13:Full:VolumeTag=E01013L4
StorageElement14:Full:VolumeTag=E01014L4
StorageElement15:Full:VolumeTag=E01015L4
StorageElement16:Full:VolumeTag=E01016L4
StorageElement17:Full:VolumeTag=E01017L4
StorageElement18:Full:VolumeTag=E01018L4
StorageElement19:Full:VolumeTag=E01019L4
StorageElement20:Full:VolumeTag=E01020L4
StorageElement21:Empty
StorageElement22:Full:VolumeTag=CLN101L4
StorageElement23:Full:VolumeTag=CLN102L5
StorageElement24:Empty
StorageElement25:Empty
StorageElement26:Empty
StorageElement27:Empty
StorageElement28:Empty
StorageElement29:Empty
StorageElement30:Full:VolumeTag=F01030L5
StorageElement31:Full:VolumeTag=F01031L5
StorageElement32:Full:VolumeTag=F01032L5
StorageElement33:Full:VolumeTag=F01033L5
StorageElement34:Full:VolumeTag=F01034L5
StorageElement35:Full:VolumeTag=F01035L5
StorageElement36:Full:VolumeTag=F01036L5
StorageElement37:Full:VolumeTag=F01037L5
StorageElement38:Full:VolumeTag=F01038L5
StorageElement39:Full:VolumeTag=F01039L5
StorageElement40 IMPORT/EXPORT:Empty
StorageElement41 IMPORT/EXPORT:Empty
StorageElement42 IMPORT/EXPORT:Empty
StorageElement43 IMPORT/EXPORT:Empty
4个驱动器中没有磁带。
2).将磁带从39号插槽装入0号驱动器:
[root@centos1 ~]# mtx -f /dev/sg9 load 390
[root@centos1 ~]# mtx -f /dev/sg9 status
StorageChanger/dev/sg9:4Drives,43Slots(4Import/Export)
DataTransferElement0:Full(StorageElement39Loaded):VolumeTag= F01039L5
DataTransferElement1:Empty
DataTransferElement2:Empty
DataTransferElement3:Empty
.....
成功将39号槽位的磁带装入0号磁带驱动器。
3).检查0号驱动器里磁带的状态:
[root@centos1 ~]# 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
4).检查0号驱动器中磁头的位置:
[root@centos1 ~]# mt -f /dev/st0 tell
At block 0.
5).向磁带中写入数据:
[root@centos1 ~]# ls
anaconda-ks.cfg Desktop install.log install.log.syslog
[root@centos1 ~]# tar -cvf /dev/st0 Desktop
Desktop/
[root@centos1 ~]# mt -f /dev/st0 tell
At block 0.
st打头的表示写入完成后会自动倒带,下次写入会覆盖之前的数据。
[root@centos1 ~]# tar -cvf /dev/nst0 Desktop
Desktop/
[root@centos1 ~]# mt -f /dev/st0 tell
At block 2.
nst打头的表示写入完成后不会自动倒带。
4.卸载磁带库操作。
将磁带从0号驱动器拔出放入39号插槽:
[root@centos1 ~]# mtx -f /dev/sg9 unload 390
UnloadingDataTransferElementintoStorageElement39...done
5.倒带
mt rew
mt rewind
mt -f /dev/mt/0 rewind
mt -f /dev/st0 rewind
6.弹出磁带
mt off
mt offline
mt eject
mt -f /dev/mt/0 off
mt -f /dev/st0 eject
7.擦除磁带(倒带,在支持的情况下卸载磁带)
mt erase
mt -f /dev/st0 erase #Linux
mt -f /dev/rmt/0 erase #Unix
8.张紧磁带盒
如果磁带在读取时发生错误,你重新张紧磁带,清洁磁带驱动器,像下面这样再试一次:
mt retension
mt -f /dev/rmt/1 retension #Unix
mt -f /dev/st0 retension #Linux
9.磁带当前位置写入 EOF 标记
mt eof
mt weof
mt -f /dev/st0 eof
10.前进指定的文件标记数目,即跳过指定个 EOF 标记
磁带定位在下一个文件的第一个块,即磁带会定位在下一区域的第一个块(见图01):
mt fsf
mt -f /dev/rmt/0 fsf
mt -f /dev/rmt/1 fsf 1#go 1 forward file/tape (see fig.01)
11.后退指定的文件标记数目,即倒带指定个 EOF 标记
磁带定位在下一个文件的第一个块,即磁带会定位在 EOF 标记之后(见图01):
mt bsf
mt -f /dev/rmt/1 bsf
mt -f /dev/rmt/1 bsf 1#go 1 backward file/tape (see fig.01)
磁带定位命令列表:
fsf 前进指定的文件标记数目。磁带定位在下一个文件的第一块。
fsfm 前进指定的文件标记数目。磁带定位在前一文件的最后一块。
bsf 后退指定的文件标记数目。磁带定位在前一文件的最后一块。
bsfm 后退指定的文件标记数目。磁带定位在下一个文件的第一块。
asf 磁带定位在指定文件标记数目的开始位置。定位通过先倒带,再前进指定的文件标记数目来实现。
fsr 前进指定的记录数。
bsr 后退指定的记录数。
fss (SCSI tapes)前进指定的 setmarks。
bss (SCSI tapes)后退指定的 setmarks。
5.4.mtx
控制SCSI介质转换设备(control SCSI media changer devices), 控制单一或者多个SCSI介质转换器例如tape changers(磁带转换器) autoloaders(自动装填器), tape libraries(磁带库)或者optical media jukeboxes(光盘库)。
介质(侧重于存存储设备)切换工具,常用于SCSI设备的备份控制,目前已可以支持磁带库和DVD/CD库。
[root@netbackup-server mhvtl]# mtx --help
Usage:
mtx --version
mtx [-f <loader-dev>] noattach <more commands>
mtx [-f <loader-dev>] inquiry | inventory
mtx [-f <loader-dev>][altres][nobarcode] status
mtx [-f <loader-dev>][altres] first [<drive#>]
mtx [-f <loader-dev>][altres]last[<drive#>]
mtx [-f <loader-dev>][altres] previous [<drive#>]
mtx [-f <loader-dev>][altres]next[<drive#>]
mtx [-f <loader-dev>][altres][invert] load <storage-element-number>[<drive#>]
mtx [-f <loader-dev>][altres][invert] unload [<storage-element-number>][<drive#>]
mtx [-f <loader-dev>][altres][eepos eepos-number] transfer <storage-element-number><storage-element-number>
mtx [-f <loader-dev>][altres][eepos eepos-number][invert][invert2] exchange <storage-element-number><storage-element-number>
mtx [-f <loader-dev>][altres] position <storage-element-number>
mtx [-f <loader-dev>] eject
[root@netbackup-server mhvtl]#

