mhVTL虚拟磁带库

mhVTL部署

概述

No.1: 虚拟磁带库

  1. 简介
    • 虚拟磁带库(Virtual Tape Library ,简称VTL)技术是数据备份领域的里程碑,该技术具备性能高、故障率低、可靠性高、成本投入低以及运营成本低等多项优势,受到各行业用户的青睐。同时,VTL也可以和现有磁带库集成,提高数据保护的整体安全性和性能,降低数据保护成本。采用硬盘虚拟磁带库不仅可以很好解决备份性能问题,资源共享问题也可以很好地解决(虚拟软件可以动态分配磁盘空间到每个虚拟磁带空间)。
    • 虚拟磁带库是通常用于备份和恢复目的的数据存储虚拟化技术。VTL将存储组件(通常是硬盘存储)作为磁带库或磁带机与现有的备份软件配合使用。
    • 将磁盘存储虚拟化为磁带允许将VTL与现有的备份软件以及现有的备份和恢复及策略进行集成。这种虚拟化的好处包括存储整合和更快的数据恢复流程。
  2. 优势
    虚拟磁带库的概念其实非常简单,它在本质上是磁盘阵列硬件设备,但是在软件功能上却模拟磁带备份的形式。因此,对于存储管理员来说,它就是一个磁带库,对它的管理如同管理一个物理磁带库一模一样。虚拟磁带库主要有以下几点优势:

    • 相对于机械磁带,虚拟磁带库使用了兼容磁带备份管理软件以及传统备份流程,这使得设备的可用性以及备份的可靠性得到了大幅提升;
    • 性能大幅提高,可支持接近磁盘阵列极限速度的备份以及恢复速度。而且免疫病毒,数据安全性等同普通磁带库;
    • 恢复工作极为简便,如果所需数据存在VTL当中,则不会涉及任何机械工作,恢复工作就像磁盘备份的速度一样;
    • 虚拟磁带库采用基于RAID保护的磁盘阵列,从而将备份的可靠性较常规磁带备份提高了若干量级。封闭式结构的磁盘介质本身的MTBF(平均无故障间隔)一般为开放式结构磁带介质的5倍以上;
    • 兼容性好,标准的FC、SCSI或iSCSI接口设备,兼容流行的主机设备和操作系统;
    • 实用性好,与现有磁带库应用方式一致,不用更改现有存储应用软件的管理策略,保护用户投资;
    • 虚拟磁带库用电子化的“机械手”和“磁带驱动器”,代替了机械磁带库中裸露、易损的机械装置,基于RAID保护的磁盘阵列具备降级工作能力,且具自动报警和在线热恢复能力。
    • 以上虚拟磁带库的优势可以看出,虚拟磁带库不仅解决了传统磁带库维护负担高、备份失效率高以及备份恢复能力不佳的问题,而且也改变了磁盘备份容易被误删除或被病毒感染以及不便于在SAN环境中统一管理和优化使用的劣势。

No.2: mhVTL

  1. 简介
    虚拟带库的开源产品。
  2. License:
    GPL v2
  3. 备份软件兼容列表
    • NetBackup:
      5.1 (Recommend 5.1MP4 minimum)、6.0、6.5.x、7.0.x、7.1.0.x、7.5.0.x、7.6.x、7.7.x
    • EMC / Legato NetWorker

mhVTL安装配置

No.1: 安装mhVTL

这里主要说的是编译安装,此方法比较通用(官方只提供了RPM包和源码包)

  1. 更新系统并重启服务器
    # yum update
    # reboot
  2. 安装开发工具
    # yum -y install zlib-devel lzo-devel gcc prel kernel-devel
  3. 安装依赖包
    # yum -y install mtx mt-st lsscsi sg3_utils sysstat git

    • lsscsi - 查看SCSI设备信息(必选)
    • mtx - 操作带库机械臂(必选)
    • mt-st - 操作带库的驱动(必选)
    • sg3_utils - Utilities for devices that use SCSI command sets(可选)
    • sysstat - Linux系统管理工具包(可选)
    • git - 直接从github拉取代码,方便mhVTL GUI更新(可选)
  4. 获取源代码包
    可以在http://www.mhvtl.com/download/网站下载源码包

    # mkdir /var/packages
    # cd /var/packages
    # wget http://www.mhvtl.com/downloads/mhvtl-2016-03-10.tgz
    # tar zxvf mhvtl-2016-03-10.tgz
  5. 添加用户‘vtl’
    # useradd -c "mhvtl user" vtl
  6. 构建用户空间Daemons
    # cd mhvtl-1.5/
    # make
    # make install
  7. 从刚刚安装的源代码构建内核模块
    # cd kernel
    # make
    # make install
  8. 更改/opt/mhvtl目录权限
    # chown -R vtl:vtl /opt/mhvtl/
  9. 启动/开机自启mhVTL
    # /etc/init.d/mhvtl start
    # chkconfig mhvtl on

    • 如果你在/etc/init.d下找不到'mhvtl'脚本,可能是交换4和5的顺序。你运行了make install,发现它由于缺少'vtl '用户帐户,并且在创建帐户后没有重新运行'make install'。
  10. 安装stgt以便将磁带机分配给其他服务器上的备份软件使用
    # yum install -y scsi-target-utils
    # service tgtd start 开启iSCSI服务
    # chkconfig tgtd on
  11. 检查它是否全部运行
    # ps -ef|grep vtl
    vtl       3030     1  0 10:13 ?        00:00:00 vtltape -q 11 -v
    略......
    root      3107  1319  0 10:14 pts/0    00:00:00 grep vtl
    • 附: Redhat用RPM包安装
      1. 获取RPM包
        # wget http://www.mhvtl.com/downloads/mhvtl-utils-1.5-4.x86_64.rpm
      2. 安装RPM包
        # yum install mhvtl-utils-1.5-4.x86_64.rpm
      3. 启动mhVTL
        # services mhvtl start
      4. 开机自启
        # chkconfig mhvtl on
      5. 注意:
        它依赖perl,用rpm -iv安装时,需先安装perl。

No.2: 安装mhVTL-GUI

  1. 安装HTTPD与PHP环境
    # yum install httpd php
  2. git拉去github上mhVTL的php代码到指定目录
    # cd /var/www/html && git clone https://github.com/walterfrs/mhvtl-gui.git

    • 也可以去github下载zip包
  3. 配置sudo
    • 允许您的Web服务器用户拥有root权限运行命令
      # echo "apache ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
    • 注释掉 Defaults requiretty选项
      # visudo 找到Defaults requiretty选项,在其前面加#
  4. 防火墙和SELinux配置
    • 在HTTPD中运行sudo,需要配置selinux,这里关闭SELinux
    • 立即关闭,重启后将失效
      # setenforce 0
    • 永久关闭,需要重启生效
      # sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
    • 防火墙这里也选择关闭
    • 关闭防火墙: # service iptables stop
    • 取消防火墙开机自启: # chkconfig iptables off
  5. 配置httpd服务
    在/etc/httpd/conf.d目录下增加mhvtl的配置文件

    # echo 'Alias /mhvtl "/var/www/html/mhvtl-gui"
    <Directory "/var/www/html/mhvtl-gui">
       Options None
       AllowOverride None
       Order allow,deny
       Allow from all
    </Directory>'> /etc/httpd/conf.d/mhvtl.conf
  6. 启动httpd服务
    # /etc/init.d/httpd start
    # chkconfig httpd on
  7. 访问mhVTL Web GUI
    http://ip/mhvtl-gui //缺省密码为mhvtl

No.3FAQ's

  1. 问题一
  • 问题描述: 构建内核模块在make执行时报错

    # make
    make -C /lib/modules/2.6.32-431.el6.x86_64/build SUBDIRS=/var/packages/mhvtl-1.5/kernel modules
    make: *** /lib/modules/2.6.32-431.el6.x86_64/build: 没有那个文件或目录。 停止。
    make: *** [default] 错误 2
  • 问题原因:

    • 问题原因1: 没有安装kernel-devel
    • 问题解决1: # yum install kernel-devel
    • 问题原因2: 安装了kernel-devel且/lib/modules/2.6.32-431.el6.x86_64目录下有build
    • 问题解决2: 删除build,重新创建软连接
      # cd /lib/modules/2.6.32-431.el6.x86_64/
      # rm build 
      # ln -s /usr/src/kernels/2.6.32-696.20.1.el6.x86_64/ build
  1. 问题二
  • 启动服务时报错,同时查看messages日志

    # /etc/init.d/mhvtl start
    FATAL: Error inserting mhvtl (/lib/modules/2.6.32-431.el6.x86_64/kernel/drivers/scsi/mhvtl.ko): Unknown symbol in module, or unknown parameter (see dmesg)
    No kernel module loaded to feed these daemons.
    
    Need mhvtl kernel module version at least 0.18.11
    
    Did you remember to compile the 'mhvtl' kernel module ?
    
    Please see http://sites.google.com/site/linuxvtl2/
    #
    # tailf -n 20 /var/log/messages
    ......
    Jan 29 09:43:15 mhVTL kernel: mhvtl: disagrees about version of symbol sg_miter_next
    Jan 29 09:43:15 mhVTL kernel: mhvtl: Unknown symbol sg_miter_next
    Jan 29 09:43:15 mhVTL kernel: mhvtl: disagrees about version of symbol sg_miter_stop
    Jan 29 09:43:15 mhVTL kernel: mhvtl: Unknown symbol sg_miter_stop
    Jan 29 09:43:15 mhVTL kernel: mhvtl: disagrees about version of symbol sg_miter_start
    Jan 29 09:43:15 mhVTL kernel: mhvtl: Unknown symbol sg_miter_start
  • 问题原因: 没找到

  • 解决方法: 更新系统之后重启
    # yum update
    # reboot

  1. 问题三
  • 问题描述: 解决问题二后启动服务任然报错:

    # service mhvtl start
    FATAL: Module mhvtl not found.
    No kernel module loaded to feed these daemons.
    
    Need mhvtl kernel module version at least 0.18.11
    
    Did you remember to compile the 'mhvtl' kernel module ?
    
    Please see http://sites.google.com/site/linuxvtl2/
    # lsmod |grep mhvtl
    # modprobe mhvtl
    FATAL: Module mhvtl not found.
  • 问题解决: 重新安装内核模块
    # cd /var/packages/mhvtl-1.5/
    # make install
    # modprobe mhvtl

  1. 问题四
  • 问题描述: Web GUI登录报错
  • 问题原因
    • 问题原因1: sudo未配置
    • 问题解决1: 配置sudo
    • 问题原因2: SELinux未配置允许web服务的用户去执行sudo命令
    • 问题解决2: 配置或关闭SELinux

mhVTL使用

CLI模式

No.1: 查看磁带库设备相关信息

```shell
# lsscsi -g
[0:0:0:0]    cd/dvd  QEMU     QEMU DVD-ROM     2.5+  /dev/sr0   /dev/sg0
[2:0:0:0]    mediumx STK      L700             0105  /dev/sch0  /dev/sg9
[2:0:1:0]    tape    IBM      ULT3580-TD5      0105  /dev/st0   /dev/sg1
[2:0:2:0]    tape    IBM      ULT3580-TD5      0105  /dev/st1   /dev/sg2
[2:0:3:0]    tape    IBM      ULT3580-TD4      0105  /dev/st2   /dev/sg3
[2:0:4:0]    tape    IBM      ULT3580-TD4      0105  /dev/st3   /dev/sg4
[2:0:8:0]    mediumx STK      L80              0105  /dev/sch1  /dev/sg10
[2:0:9:0]    tape    STK      T10000B          0105  /dev/st4   /dev/sg5
[2:0:10:0]   tape    STK      T10000B          0105  /dev/st5   /dev/sg6
[2:0:11:0]   tape    STK      T10000B          0105  /dev/st6   /dev/sg7
[2:0:12:0]   tape    STK      T10000B          0105  /dev/st7   /dev/sg8
```

No.2: 装载磁带操作

装载磁带命令格式:mtx -f <机械手设备号> load <slots> <drive>

  1. 先查看sg9机械手状态

    # mtx -f /dev/sg9 status
    Storage Changer /dev/sg9: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 20:Full :VolumeTag=E01020L4 
      Storage Element 21:Empty
      Storage Element 22:Full :VolumeTag=CLN101L4 
      Storage Element 23:Full :VolumeTag=CLN102L5  
      Storage Element 24:Empty
      Storage Element 25:Empty
      Storage Element 26:Empty
      Storage Element 27:Empty
      Storage Element 28:Empty
      Storage Element 29:Empty
      Storage Element 30:Full :VolumeTag=F01030L5 
      Storage Element 31:Full :VolumeTag=F01031L5 
      略......
      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
    • 4个驱动器中没有磁带。
  2. 用sg9机械手将磁带从1号插槽装入0号驱动器

    # mtx -f /dev/sg9 load 1 0
    Loading media from Storage Element 1 into drive 0...done
    
    # mtx -f /dev/sg9 status
    Storage Changer /dev/sg9: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
          Storage Element 1:Empty
          Storage Element 2:Full :VolumeTag=E01002L4  
          略......
  3. 检查0号驱动器里磁带的状态

    # mt -f /dev/st0 status
    SCSI 2 tape drive:
    File number=0, block number=0, partition=0.
    Tape block size 0 bytes. Density code 0x46 (LTO-4).
    Soft error count since last status=0
    General status bits on (41010000):
    BOT ONLINE IM_REP_EN
  4. 检查0号驱动器中磁头的位置

    # mt -f /dev/st0 tell
    At block 0.

No.3: 卸载磁带库操作。

  1. 用sg9机械手将磁带从0号驱动器拔出放回1号插槽:

    # mtx -f /dev/sg9 unload 1 0
    Unloading drive 0 into Storage Element 1...done
    [root@mhVTL html]# mtx -f /dev/sg9 status
      Storage Changer /dev/sg9: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 
          略......

Web GUI模式

  1. 登录mhVTL web管理界面
  2. Console

配置mhVTL在NBU上使用

  1. 在Master Sever或Media Server的服务器上启动ISCSI发起程序

    图:如果ISCSI服务未运行(一般初次使用)时,会有如下提示
  2. 选择发现
    图丢了。。。

微信扫一扫,分享到朋友圈

mhVTL虚拟磁带库
0
别把想做的事情,留给遥不可及的未来!

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片
返回顶部