在linux上学习备份命令tar的时候,有提到使用磁带机将数据备份到磁带,但对于学习者来说,很少有机会使用真正的磁带机,只有在归档海量数据的时候,磁带机会比较常见,在使用Oracle rman进行备份和恢复的时候也需要磁带机,因而本章介绍下如何在rhel6 64位操作系统下模拟磁带机和模拟磁带机的简单使用。
一:配置相关环境,编译安装mhvtl.tgz(linux 虚拟带库)
[root@rhel6 src]# tar -zxvf mhvtl.tgz
[root@rhel6 src]# cd mhvtl-0.18/
[root@rhel6 mhvtl-0.18]# yum -y install zlib-devel mtx mt-st lsscsi
[root@rhel6 mhvtl-0.18]# useradd vtl
[root@rhel6 mhvtl-0.18]# echo '123456' |passwd --stdin vtl
Changing password for user vtl.
passwd: all authentication tokens updated successfully.
[root@rhel6 mhvtl-0.18]# mkdir /opt/mhvtl//虚拟带库存储路径
[root@rhel6 mhvtl-0.18]# mkdir /etc/mhvtl//配置文件路径
[root@rhel6 mhvtl-0.18]# chown -R vtl.vtl /opt/mhvtl/ /etc/mhvtl/
[root@rhel6 mhvtl-0.18]# cd kernel/ //需要安装kernel-devel和kernke-headers软件包,否则以下编译会报错
[root@rhel6 kernel]# ls
fetch24.c fetch26.c fetch27.c fetch.c Makefile mhvtl.c mhvtl-kmod.spec vtl_common.h
[root@rhel6 kernel]# make && make install
[root@rhel6 kernel]# modprobe mhvtl
[root@rhel6 kernel]# lsmod |grep mhvtl
mhvtl 26165 0
[root@rhel6 kernel]# cd ..
[root@rhel6 mhvtl-0.18]# make && make install
[root@rhel6 mhvtl-0.18]# /etc/init.d/mhvtl start //启动mhvtl程序
vtltape: version 0.18.10
vtltape: version 0.18.10
vtltape: version 0.18.10
vtltape: version 0.18.10
vtltape: version 0.18.10
vtltape: version 0.18.10
vtltape: version 0.18.10
vtltape: version 0.18.10
vtllibrary: version 0.18.10
vtllibrary process PID is 14448
vtllibrary: version 0.18.10
vtllibrary process PID is 14451
[root@rhel6 mhvtl-0.18]# ls /etc/mhvtl/
device.conf library_contents.10 library_contents.30 mhvtl.conf
[root@rhel6 mhvtl-0.18]# ls /opt/mhvtl/
CLN101L4 E01002L4 E01007L4 E01012L4 E01017L4 E03002L4 E03007L4 E03012L4 E03017L4 F01031L5 F01036L5 F03031L5 F03036L5
CLN102L5 E01003L4 E01008L4 E01013L4 E01018L4 E03003L4 E03008L4 E03013L4 E03018L4 F01032L5 F01037L5 F03032L5 F03037L5
CLN301L4 E01004L4 E01009L4 E01014L4 E01019L4 E03004L4 E03009L4 E03014L4 E03019L4 F01033L5 F01038L5 F03033L5 F03038L5
CLN302L5 E01005L4 E01010L4 E01015L4 E01020L4 E03005L4 E03010L4 E03015L4 E03020L4 F01034L5 F01039L5 F03034L5 F03039L5
E01001L4 E01006L4 E01011L4 E01016L4 E03001L4 E03006L4 E03011L4 E03016L4 F01030L5 F01035L5 F03030L5 F03035L5
二:查看带库相关信息
[root@rhel6 mhvtl-0.18]# lsscsi -g
[0:0:0:0]diskATA ST3160815AS 4.AA /dev/sda /dev/sg0
[8:0:0:0]storage IET Controller 0001 - /dev/sg1
[8:0:0:1]diskIET VIRTUAL-DISK 0001 /dev/sdb /dev/sg2
[9:0:0:0]mediumx STK L700 550V /dev/sch0 /dev/sg11 //为带库机械手
[9:0:1:0]tapeIBM ULT3580-TD5 550V /dev/st0 /dev/sg3
[9:0:2:0]tapeIBM ULT3580-TD5 550V /dev/st1 /dev/sg4
[9:0:3:0]tapeIBM ULT3580-TD4 550V /dev/st2 /dev/sg5
[9:0:4:0]tapeIBM ULT3580-TD4 550V /dev/st3 /dev/sg6
[9:0:8:0]mediumx SPECTRA PYTHON 550V /dev/sch1 /dev/sg12 //为带库机械手
[9:0:9:0]tapeIBM ULT3580-TD4 550V /dev/st4 /dev/sg7
[9:0:10:0] tapeIBM ULT3580-TD4 550V /dev/st5 /dev/sg8
[9:0:11:0] tapeIBM ULT3580-TD4 550V /dev/st6 /dev/sg9
[9:0:12:0] tapeIBM ULT3580-TD4 550V /dev/st7 /dev/sg10
[root@rhel6 mhvtl-0.18]# lsscsi -l
[0:0:0:0]diskATA ST3160815AS 4.AA /dev/sda
state=running queue_depth=31 scsi_level=6 type=0 device_blocked=0 timeout=30
[8:0:0:0]storage IET Controller 0001 -
state=running queue_depth=32 scsi_level=6 type=12 device_blocked=0 timeout=0
[8:0:0:1]diskIET VIRTUAL-DISK 0001 /dev/sdb
state=running queue_depth=32 scsi_level=6 type=0 device_blocked=0 timeout=30
[9:0:0:0]mediumx STK L700 550V /dev/sch0
state=running queue_depth=32 scsi_level=6 type=8 device_blocked=0 timeout=0
[9:0:1:0]tapeIBM ULT3580-TD5 550V /dev/st0
state=running queue_depth=32 scsi_level=6 type=1 device_blocked=0 timeout=900
[9:0:2:0]tapeIBM ULT3580-TD5 550V /dev/st1
state=running queue_depth=32 scsi_level=6 type=1 device_blocked=0 timeout=900
[9:0:3:0]tapeIBM ULT3580-TD4 550V /dev/st2
state=running queue_depth=32 scsi_level=6 type=1 device_blocked=0 timeout=900
[9:0:4:0]tapeIBM ULT3580-TD4 550V /dev/st3
state=running queue_depth=32 scsi_level=6 type=1 device_blocked=0 timeout=900
[9:0:8:0]mediumx SPECTRA PYTHON 550V /dev/sch1
state=running queue_depth=32 scsi_level=6 type=8 device_blocked=0 timeout=0
[9:0:9:0]tapeIBM ULT3580-TD4 550V /dev/st4
state=running queue_depth=32 scsi_level=6 type=1 device_blocked=0 timeout=900
[9:0:10:0] tapeIBM ULT3580-TD4 550V /dev/st5
state=running queue_depth=32 scsi_level=6 type=1 device_blocked=0 timeout=900
[9:0:11:0] tapeIBM ULT3580-TD4 550V /dev/st6
state=running queue_depth=32 scsi_level=6 type=1 device_blocked=0 timeout=900
[9:0:12:0] tapeIBM ULT3580-TD4 550V /dev/st7
state=running queue_depth=32 scsi_level=6 type=1 device_blocked=0 timeout=900
[root@rhel6 ~]# mtx -f /dev/sg11 status
Storage Changer /dev/sg11: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
————————输出省略————————————
[root@rhel6 ~]# mtx -f /dev/sg11 load 1 0 //将磁带从1号槽位装入driver 0
Loading media from Storage Element 1 into drive 0...done
[root@rhel6 ~]# mtx -f /dev/sg11 status
Storage Changer /dev/sg11:4 Drives, 43 Slots ( 4 Import/Export )
Data Transfer Element 0:Full (Storage Element 1 Loaded):VolumeTag = E01001L4
Data Transfer Element 1:Empty
Data Transfer Element 2:Empty
Data Transfer Element 3:Empty
————————输出省略————————————
三:使用磁带机,nst0代表不回卷设备
1.将数据归档到模拟磁带机
[root@rhel6 media]# mt -f /dev/nst0 tel
At block 0.
[root@rhel6 media]# tar -cvf /dev/nst0 张敬轩\ -\ 定局\ -\ 盛世仁杰主题曲.mp3
张敬轩 - 定局 - 盛世仁杰主题曲.mp3
[root@rhel6 media]# mt -f /dev/nst0 tel
At block 350.
2.倒带至磁带头并查看磁带内容,查看完内容后,会把磁带指针停止在内容位置后
[root@rhel6 media]# mt -f /dev/nst0 rewind
[root@rhel6 media]# mt -f /dev/nst0 tel
At block 0.
[root@rhel6 media]# tar -tvf /dev/nst0
-rw-r--r-- nobody/nobody 3569715 2010-07-26 04:54 张敬轩 - 定局 - 盛世仁杰主题曲.mp3
[root@rhel6 media]# mt -f /dev/nst0 tel
At block 349.
3.继续添加文件至磁带机
[root@rhel6 media]# tar -cvf /dev/nst0 /boot/vmlinuz-2.6.32-71.el6.x86_64
/boot/vmlinuz-2.6.32-71.el6.x86_64
[root@rhel6 media]# mt -f /dev/nst0 tel
At block 721.
4.从磁带机中导出归档文件
[root@rhel6 media]# mt -f /dev/nst0 rewind
[root@rhel6 media]# tar -tvf /dev/nst0
-rw-r--r-- nobody/nobody 3569715 2010-07-26 04:54 张敬轩 - 定局 - 盛世仁杰主题曲.mp3
[root@rhel6 media]# mt -f /dev/nst0 rewind
[root@rhel6 media]# rm -i 张敬轩\ -\ 定局\ -\ 盛世仁杰主题曲.mp3//删除本地文件
rm: remove regular file `张敬轩 - 定局 - 盛世仁杰主题曲.mp3'? y
[[root@rhel6 media]# tar -xvf /dev/nst0 //导出第一个文件
张敬轩 - 定局 - 盛世仁杰主题曲.mp3
[root@rhel6 media]# tar -xvf /dev/nst0 //导出第二个文件
boot/vmlinuz-2.6.32-71.el6.x86_64
验证:
[root@rhel6 media]# ls
boot 张敬轩 - 定局 - 盛世仁杰主题曲.mp3
[root@rhel6 media]# ls boot/
vmlinuz-2.6.32-71.el6.x86_64
5.清除磁带机中的数据并倒带至磁带头
[root@rhel6 media]# mt -f /dev/nst0 erase
[root@rhel6 media]# mt -f /dev/nst0 tel
At block 0.
四:卸载磁带机
[root@rhel6 media]# mtx -f /dev/sg11 unload 1 0
Unloading drive 0 into Storage Element 1...done
【注意事项】
【本文档所带来的系列数据风险作者不予承担】
################################################
# HP380 G3 DAT72 磁带机启用简明
# DB 2.2
################################################
# 说明:
#echo "engage scsi" >> /proc/driver/cciss/cciss0 (0 or 1)与启用的阵列卡有关
#cat /proc/scsi/scsi查看设备是否已经启用
/dev/st0回卷设备名
/dev/nst0不回卷设备名
mt -f /dev/st0 tel查看当前位置后回卷
mt -f /dev/nst0 tel查看当前位置后不回卷
mt -f /dev/nst0 status查看当前状态后不回卷
mt -f /dev/nst0 asf 1前往block 1处后不回卷【一般不用】
tar tvf /dev/nst0查看目录树后不回卷
tar tvf /dev/st0查看目录树后回卷至0
mt -f /dev/nst0 rewindrewind 它可以使磁带快倒至磁带头
mt -f /dev/nst0 eodeod 定位磁带到最后可进行追加写入
mt -f /dev/nst0 fsf [欲前进的记录段数]fsf 它可以使磁带快速前进若干段记录[默认一段]
mt -f /dev/nst0 bsf [欲退回的记录段数]bsf 它可以使磁带快速后退若干段记录[默认一段]
mt -f /dev/nst0 offlineoffline 使磁带快倒至磁带头并弹出磁带机
mt -f /dev/st0 erase清除数据后倒至磁带头【危险操作、时间较长】
mt -f /dev/st0 retension拉紧磁带
################################################
1.1ERP全备份
#################
#echo "engage scsi" >> /proc/driver/cciss/cciss0 (0 or 1)与启用的阵列卡有关
#cat /proc/scsi/scsi查看磁带机启用状态
#mt -f /dev/nst0 rewind回卷至磁带最开头
#nohup tar cf /dev/nst0 /ora1159/prod &备份/ora1159/prod后不回卷【大约3小时】
#mt -f /dev/nst0 offlineoffline 使磁带快倒至磁带头并弹出磁带机
1.2ERP全恢复
#################
#echo "engage scsi" >> /proc/driver/cciss/cciss0 (0 or 1)与启用的阵列卡有关
#cat /proc/scsi/scsi查看磁带机启用状态
#df -h查看/XXXXX/YYYYY可用空间大于70GB
#cd /XXXXX/YYYYY进入目标恢复目录
#mt -f /dev/nst0 rewind回卷至磁带最开头
#nohup tar -xpf /dev/nst0 &恢复开始【大约3小时】
#mt -f /dev/nst0 offlineoffline 使磁带快倒至磁带头并弹出磁带机
1.3ERP proddata备份
########################
#echo "engage scsi" >> /proc/driver/cciss/cciss0 (0 or 1)与启用的阵列卡有关
#cat /proc/scsi/scsi查看磁带机启用状态
#nohup tar cf /dev/nst0 /ora1159/prod/proddata &【注意使用不回卷设备名,一盘磁带备份2次,第二次备份完后再取出磁带】
1.4ERP proddata恢复【注意:恢复磁带第1段数据】
##################################################
#echo "engage scsi" >> /proc/driver/cciss/cciss0 (0 or 1)与启用的阵列卡有关
#cat /proc/scsi/scsi查看磁带机启用状态
#df -h查看/XXXXX/YYYYY可用空间大于40GB
#cd /XXXXX/YYYYY进入目标恢复目录
#mt -f /dev/nst0 rewind回卷至磁带最开头
#nohup tar -xpf /dev/nst0 &恢复开始【大约2小时】
1.5ERP proddata恢复【注意:恢复磁带第2段数据】
##################################################
#echo "engage scsi" >> /proc/driver/cciss/cciss0 (0 or 1)与启用的阵列卡有关
#cat /proc/scsi/scsi查看磁带机启用状态
#df -h查看/XXXXX/YYYYY可用空间大于40GB
#cd /XXXXX/YYYYY进入目标恢复目录
#mt -f /dev/nst0 rewind回卷至磁带最开头
#mt -f /dev/nst0 fsf前进至第2段记录的开始【与1.4的差别所在】
#nohup tar -xpf /dev/nst0 &恢复开始【大约2小时】
################################################
[root@erpapp diskA]# cat /proc/scsi/scsi
Attached devices: none
[root@erpapp diskA]# echo "engage scsi" >> /proc/driver/cciss/cciss0
[root@erpapp diskA]# cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: HP Model: C7438A Rev: V312
Type: Sequential-AccessANSI SCSI revision: 03
[root@erpapp diskA]#
################################################
异地使用磁带机(必须为可信任用户)
1)备份数据至异地磁带机
tar cvf - dirname|rsh remote dd of=/dev/rmt/0
2)从异地磁带机读取数据
rsh remote dd if=/dev/rmt/0 tar xvf -