虚拟磁带库mhvtl的安装与使用
以前在学习Oracle数据库的备份与恢复的时候,一直想测试磁带备份与恢复的方式,以贴近实际应用,但一般磁带机都只有服务器上配备,个人电脑很少用到,所以想找个虚拟磁带机用用看,终于找到有mhvtl这样一个虚拟磁带库,那就来试试吧.
一.安装虚拟磁带库mhvtl.
1.下载mhvtl的源代码或安装包
官方下载站点与文档地址: https://sites.google.com/site/linuxvtl2/
下载以下文件:
mhvtl-2013-06-29.tgz //用于非rpm的模式安装(Debian/Ubuntu)
mhvtl-utils-1.4-8.src.rpm //用于基于rpm的模式安装
mhvtl-utils-1.4-8.i586.rpm //用于基于rpm的模式安装
mhvtl-utils-1.4-8.x86_64.rpm //用于基于rpm的模式安装
2.安装依赖库
# rpm -q gcc lzo mtx mt-st lsscsi zlib-devel kernel-devel kernel-headers
3.基于rpm的模式安装
安装rpm包
# rpm -Uvh mhvtl-utils-1.4-8.src.rpm
# rpm -Uvh mhvtl-utils-1.4-8.x86_64.rpm
重新编译内核(Build kernel module from source),这一段是文档上面的,实际中路径可能不同
RPM home directory
SuSE: /usr/src/packages
Redhat: /usr/src/redhat or $HOME/rpmbuild
# cd /usr/src/packages/BUILD
# tar xvfz ../SOURCES/mhvtl-2013-06-29.tgz
# cd mhvtl-1.4/kernel
# make
# make install
4.基于非rpm的模式安装
# tar xvfz mhvtl-2013-06-29.tgz
# cd mhvtl-1.4
# make
# sudo useradd -c "mhvtl user" vtl
# sudo make install
# cd kernel
# make
# make install
5.运行mhvtl
执行服务进程(Start the daemons)
# /etc/init.d/mhvtl start
查看磁带库设备信息
# lsscsi -g
# ps -ef|grep vtl (default with 10 daemons - 2 vtllibrary & 8 vtltape)
# cat /etc/mhvtl/mhvtl.conf
二.磁带库相关操作
操作磁带库需要使用mtx包,主要用于控制机械手作放磁带换磁带等操作
1.查看磁带库设备相关信息
# lsscsi -g
[0:0:0:0] disk VMware, VMware Virtual S 1.0 /dev/sda /dev/sg0
[2:0:0:0] cd/dvd NECVMWar VMware IDE CDR10 1.00 /dev/sr0 /dev/sg1
[3:0:0:0] mediumx STK L700 0104 /dev/sch0 /dev/sg10
[3:0:1:0] tape IBM ULT3580-TD5 0104 /dev/st0 /dev/sg2
[3:0:2:0] tape IBM ULT3580-TD5 0104 /dev/st1 /dev/sg3
[3:0:3:0] tape IBM ULT3580-TD4 0104 /dev/st2 /dev/sg4
[3:0:4:0] tape IBM ULT3580-TD4 0104 /dev/st3 /dev/sg5
[3:0:8:0] mediumx STK L80 0104 /dev/sch1 /dev/sg11
[3:0:9:0] tape STK T10000B 0104 /dev/st4 /dev/sg6
[3:0:10:0] tape STK T10000B 0104 /dev/st5 /dev/sg7
[3:0:11:0] tape STK T10000B 0104 /dev/st6 /dev/sg8
[3:0:12:0] tape STK T10000B 0104 /dev/st7 /dev/sg9
一般磁带库有一个机械手(sg),四个驱动器(st),多个插槽(slot)
2.查看机械手状态
# mtx -f /dev/sg10 status
Storage Changer /dev/sg10:4 Drives, 43 Slots ( 4 Import/Export )
Data Transfer Element 0:Empty
Data Transfer Element 1:Empty
Data Transfer Element 2:Empty
Data Transfer Element 3:Empty
Storage Element 1:Full :VolumeTag=E01001L4
Storage Element 2:Full :VolumeTag=E01002L4
Storage Element 3:Full :VolumeTag=E01003L4
......
Storage Element 38:Full :VolumeTag=F01038L5
Storage Element 39:Full :VolumeTag=F01039L5
Storage Element 40 IMPORT/EXPORT:Empty
Storage Element 41 IMPORT/EXPORT:Empty
Storage Element 42 IMPORT/EXPORT:Empty
Storage Element 43 IMPORT/EXPORT:Empty
3.装载磁带操作
命令格式为mtx –f 机械手设备号 load slot号 driver号
将磁带从1号插槽装入0号驱动器.
# mtx -f /dev/sg10 load 1 0
# mtx -f /dev/sg10 status
Storage Changer /dev/sg10:4 Drives, 43 Slots ( 4 Import/Export )
Data Transfer Element 0:Full (Storage Element 1 Loaded):VolumeTag = E01001L4
4.卸载磁带库操作
将磁带从0号驱动器拔除放入1号插槽
# mtx -f /dev/sg10 unload 1 0
三.磁带操作
操作磁带需要使用mt-st包
在Linux中磁带机的设备名是: /dev/st*和/dev/nst*, 其中nst*是操作完成后不自动回卷磁带, st*则是自动回卷, 一般常用nst*.
mt的用法: mt [-v] [-h] [ -f device ] command [ count ]
# mt -f /dev/st0 status 查看磁带状态
# mt -f /dev/st0 rewind 磁带倒带
# mt -f /dev/nst0 tel 查看磁带当前磁头位置
# mt -f /dev/st0 erase 清除磁带数据(一般不需要使用)
# mt -f /dev/st0 offline 弹出磁带
四.备份与恢复
1.用tar备份:
# tar -cvf /dev/st0 mhvtl 备份mhvtl目录的文件(使用cvf参数将覆盖磁带上的已有文件)
# tar -rvf /dev/st0 tmp 继续写入数据(使用rvf参数将不覆盖前边的内容)
# tar -tvf /dev/st0 测试文件读取(不自动回卷磁带则必须倒带之后才能读取)
# tar -xvf /dev/st0 恢复到当前目录
# tar -zcvf /dev/st0 mhvtl 写入数据并使用gzip压缩
# tar -zxvf /dev/st0 恢复并解压缩
2.用cpio备份
cpio可以增量备份或恢复数据,可以根据文件名,属主,时间戳,访问权限对归档数据进行排序。
cpio工作的三种模式:copy out mode, copy in mode, copy pass mode。
# find mhvtl | cpio -ocv > /dev/st0 //将mhvtl目录内容备份到磁带机(copy out),经常跟find命令一起使用
# cpio -tvF /dev/st0 //校验磁带
# cpio -icv < /dev/st0 //恢复数据到当前目录下(copy in)
# find mhvtl | cpio -ovH tar > /dev/st0 //使用tar来压缩归档文件
# tar -tvf /dev/st0 //验证磁带的内容
# cpio -ivH tar < /dev/st0 //tar解压缩执行恢复
五.配合使用示例
# lsscsi -g //查看磁带库设备
# mtx -f /dev/sg10 status //查看磁带库机械手状态
# mtx -f /dev/sg10 load 1 0 //将磁带从插槽装入驱动器
# mt -f /dev/st0 status //查看磁带状态
# tar -cvf /dev/st0 mhvtl //备份资料到磁带
# tar -tvf /dev/st0 //测试读取磁带资料
# tar -rvf /dev/st0 tmp //继续写入资料到磁带,不覆盖前面资料
# mt -f /dev/st0 offline //弹出磁带
# mtx -f /dev/sg10 unload 1 0 //将磁带从驱动器拔出放入插槽