大数跨境
0
0

深入解析开源虚拟带库mhvtl

深入解析开源虚拟带库mhvtl 云容灾备份安全治理
2021-01-23
2

1.安装基础包

 
  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

 
  1. yum install mhvtl-utils-1.6-3.el7.x86_64.rpm

检查是否安装成功

 
  1. # ls /etc/mhvtl/

  2. device.conf library_contents.10 library_contents.30 mhvtl.conf

  3. #

启动/停止mhvtl

 
  1. 启动mhvtl

  2. systemctl enable mhvtl.target

  3. systemctl start mhvtl.target


  4. 停止mhvtl

  5. systemctl stop mhvtl.target

检查磁带虚拟目录

 
  1. # ls /opt/mhvtl/

  2. CLN101L4 E01003L4 E01008L4 E01013L4 E01018L4 F01032L5 F01037L5 G03003TA G03008TA G03013TA G03018TA G03023TA G03028TA G03033TA G03038TA

  3. CLN102L5 E01004L4 E01009L4 E01014L4 E01019L4 F01033L5 F01038L5 G03004TA G03009TA G03014TA G03019TA G03024TA G03029TA G03034TA G03039TA

  4. CLN303TA E01005L4 E01010L4 E01015L4 E01020L4 F01034L5 F01039L5 G03005TA G03010TA G03015TA G03020TA G03025TA G03030TA G03035TA

  5. E01001L4 E01006L4 E01011L4 E01016L4 F01030L5 F01035L5 G03001TA G03006TA G03011TA G03016TA G03021TA G03026TA G03031TA G03036TA

  6. E01002L4 E01007L4 E01012L4 E01017L4 F01031L5 F01036L5 G03002TA G03007TA G03012TA G03017TA G03022TA G03027TA G03032TA G03037TA

  7. #

检查虚拟磁带库信息

 
  1. # lsscsi -g

  2. [1:0:0:0] cd/dvd QEMU QEMU DVD-ROM 2.5+/dev/sr0 /dev/sg0

  3. #


  4. # lsscsi -l

  5. [1:0:0:0] cd/dvd QEMU QEMU DVD-ROM 2.5+/dev/sr0

  6. state=running queue_depth=1 scsi_level=6 type=5 device_blocked=0 timeout=30

  7. #

 
  1. # mtx -f /dev/sg0 status

  2. mtx:RequestSense:LongReport=yes

  3. mtx:RequestSense:ValidResidual=yes

  4. mtx:RequestSense:ErrorCode=70(Current)

  5. mtx:RequestSense:SenseKey=IllegalRequest

  6. mtx:RequestSense:FileMark=no

  7. mtx:RequestSense: EOM=no

  8. mtx:RequestSense: ILI=no

  9. mtx:RequestSense:Residual=00000000

  10. mtx:RequestSense:AdditionalSenseCode=20

  11. mtx:RequestSense:AdditionalSenseQualifier=00

  12. mtx:RequestSense: BPV=no

  13. mtx:RequestSense:Errorin CDB=no

  14. mtx:RequestSense: SKSV=no

  15. Mode sense (0x1A)forPage0x1D failed

  16. mtx:RequestSense:LongReport=yes

  17. mtx:RequestSense:ValidResidual=no

  18. mtx:RequestSense:ErrorCode=0(Unknown?!)

  19. mtx:RequestSense:SenseKey=NoSense

  20. mtx:RequestSense:FileMark=no

  21. mtx:RequestSense: EOM=no

  22. mtx:RequestSense: ILI=no

  23. mtx:RequestSense:AdditionalSenseCode=00

  24. mtx:RequestSense:AdditionalSenseQualifier=00

  25. mtx:RequestSense: BPV=no

  26. mtx:RequestSense:Errorin CDB=no

  27. mtx:RequestSense: SKSV=no

  28. READ ELEMENT STATUS CommandFailed

  29. #

3.磁带设置

Library就是带库,Drive就是定义有几个drive。

可以通过编辑/etc/mhvtl/device.conf来选择不同的路径来存储每个库的VTL磁带,以包括不同的主目录路径(针对每个库) 。下面的示例将库10从 /opt/mhvtl 更改为 /VTL

 
  1. [root@netbackup-server mhvtl]# cat /etc/mhvtl/device.conf


  2. VERSION:5


  3. # VPD page format:

  4. # <page #> <Length> <x> <x+1>... <x+n>

  5. # NAA format is an 8 hex byte value seperated by ':'

  6. # Note: NAA is part of inquiry VPD 0x83

  7. #

  8. # Each 'record' is separated by one (or more) blank lines.

  9. # Each 'record' starts at column 1

  10. # Serial num max len is 10.

  11. # Compression: factor X enabled 0|1

  12. # Where X is zlib compression factor 1 = Fastest compression

  13. # 9 = Best compression

  14. # enabled 0 == off, 1 == on

  15. #

  16. # fifo: /var/tmp/mhvtl

  17. # If enabled, data must be read from fifo, otherwise daemon will block

  18. # trying to write.

  19. # e.g. cat /var/tmp/mhvtl (in another terminal)


  20. Library:10 CHANNEL:00 TARGET:00 LUN:00

  21. Vendor identification: STK

  22. Product identification: L700

  23. Unit serial number: XYZZY_A

  24. NAA:10:22:33:44:ab:00:00:00

  25. Home directory:/opt/mhvtl

  26. PERSIST:False

  27. Backoff:400

  28. # fifo: /var/tmp/mhvtl


  29. Drive:11 CHANNEL:00 TARGET:01 LUN:00

  30. Library ID:10Slot:01

  31. Vendor identification: IBM

  32. Product identification: ULT3580-TD5

  33. Unit serial number: XYZZY_A1

  34. NAA:10:22:33:44:ab:00:01:00

  35. Compression: factor 1 enabled 1

  36. Compression type: lzo

  37. Backoff:400

  38. # fifo: /var/tmp/mhvtl


  39. Drive:12 CHANNEL:00 TARGET:02 LUN:00

  40. Library ID:10Slot:02

  41. Vendor identification: IBM

  42. Product identification: ULT3580-TD5

  43. Unit serial number: XYZZY_A2

  44. NAA:10:22:33:44:ab:00:02:00

  45. Compression: factor 1 enabled 1

  46. Compression type: lzo

  47. Backoff:400

  48. # fifo: /var/tmp/mhvtl


  49. Drive:13 CHANNEL:00 TARGET:03 LUN:00

  50. Library ID:10Slot:03

  51. Vendor identification: IBM

  52. Product identification: ULT3580-TD4

  53. Unit serial number: XYZZY_A3

  54. NAA:10:22:33:44:ab:00:03:00

  55. Compression: factor 1 enabled 1

  56. Compression type: lzo

  57. Backoff:400

  58. # fifo: /var/tmp/mhvtl


  59. Drive:14 CHANNEL:00 TARGET:04 LUN:00

  60. Library ID:10Slot:04

  61. Vendor identification: IBM

  62. Product identification: ULT3580-TD4

  63. Unit serial number: XYZZY_A4

  64. NAA:10:22:33:44:ab:00:04:00

  65. Compression: factor 1 enabled 1

  66. Compression type: lzo

  67. Backoff:400

  68. # fifo: /var/tmp/mhvtl


  69. [root@netbackup-server mhvtl]#

查看mhvtl内核版本

 
  1. 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

 
  1. yum install php lsscsi mtx mt-st git sysstat sg3_utils scsi-target-utils

下面两个包,不包括在Centos 光盘中,需要单独下载

 
  1. scsi-target-utils-1.0.55-4.el7.x86_64.rpm

  2. 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:

 
  1. systemctl start tgtd.service

step 3.Setup sudo (Required ) :
允许您的Web服务器用户ID以root用户身份在本地运行命令

 
  1. echo apache ALL =(ALLNOPASSWDALL>>/etc/sudoers

释掉/etc/sudoers中的“ Defaults requiretty”行,可能需要禁用selinux才能从httpd运行sudo

step 4.在Web服务器配置文件中为MHVTL GUI添加目录别名:

 
  1. Alias/mhvtl "/var/www/html/mhvtl"

  2. <Directory"/var/www/html/mhvtl">

  3. OptionsNone

  4. AllowOverrideNone

  5. Order allow,deny

  6. Allowfrom all

  7. </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:

 
  1. systemctl restart mhvtl.target

  2. systemctl restart tgtd.service

Reload apache configuration:

 
  1. 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 。

 
  1. [root@netbackup-server mhvtl]# mt

  2. mt: unknown command "?"

  3. usage: mt [-v][--version][-h][-f device ] command [ count ]

  4. commands: weof, wset, eof, fsf, fsfm, bsf, bsfm, fsr, bsr, fss, bss, rewind,

  5. offline, rewoffl, eject, retension, eod, seod, seek, tell, status,

  6. erase, setblk,lock, unlock, load, compression, setdensity,

  7. drvbuffer, stwrthreshold, stoptions, stsetoptions, stclearoptions,

  8. defblksize, defdensity, defdrvbuffer, defcompression, stsetcln,

  9. sttimeout, stlongtimeout, densities, setpartition, mkpartition,

  10. partseek, asf, stshowopt.

  11. [root@netbackup-server mhvtl]#

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

 
  1. [root@centos1 opt]# lsscsi -g

  2. [0:0:0:0] disk ATA VBOX HARDDISK 1.0/dev/sda /dev/sg0

  3. [1:0:0:0] mediumx STK L700 0104-/dev/sg9

  4. [1:0:1:0] tape IBM ULT3580-TD5 0104/dev/st0 /dev/sg1

  5. [1:0:2:0] tape IBM ULT3580-TD5 0104/dev/st1 /dev/sg2

  6. [1:0:3:0] tape IBM ULT3580-TD4 0104/dev/st2 /dev/sg3

  7. [1:0:4:0] tape IBM ULT3580-TD4 0104/dev/st3 /dev/sg4

  8. [1:0:8:0] mediumx STK L80 0104-/dev/sg10

  9. [1:0:9:0] tape STK T10000B 0104/dev/st4 /dev/sg5

  10. [1:0:10:0] tape STK T10000B 0104/dev/st5 /dev/sg6

  11. [1:0:11:0] tape STK T10000B 0104/dev/st6 /dev/sg7

  12. [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机械手状态:

 
  1. [root@centos1 ~]# mtx -f /dev/sg9 status

  2. StorageChanger/dev/sg9:4Drives,43Slots(4Import/Export)

  3. DataTransferElement0:Empty

  4. DataTransferElement1:Empty

  5. DataTransferElement2:Empty

  6. DataTransferElement3:Empty

  7. StorageElement1:Full:VolumeTag=E01001L4

  8. StorageElement2:Full:VolumeTag=E01002L4

  9. StorageElement3:Full:VolumeTag=E01003L4

  10. StorageElement4:Full:VolumeTag=E01004L4

  11. StorageElement5:Full:VolumeTag=E01005L4

  12. StorageElement6:Full:VolumeTag=E01006L4

  13. StorageElement7:Full:VolumeTag=E01007L4

  14. StorageElement8:Full:VolumeTag=E01008L4

  15. StorageElement9:Full:VolumeTag=E01009L4

  16. StorageElement10:Full:VolumeTag=E01010L4

  17. StorageElement11:Full:VolumeTag=E01011L4

  18. StorageElement12:Full:VolumeTag=E01012L4

  19. StorageElement13:Full:VolumeTag=E01013L4

  20. StorageElement14:Full:VolumeTag=E01014L4

  21. StorageElement15:Full:VolumeTag=E01015L4

  22. StorageElement16:Full:VolumeTag=E01016L4

  23. StorageElement17:Full:VolumeTag=E01017L4

  24. StorageElement18:Full:VolumeTag=E01018L4

  25. StorageElement19:Full:VolumeTag=E01019L4

  26. StorageElement20:Full:VolumeTag=E01020L4

  27. StorageElement21:Empty

  28. StorageElement22:Full:VolumeTag=CLN101L4

  29. StorageElement23:Full:VolumeTag=CLN102L5

  30. StorageElement24:Empty

  31. StorageElement25:Empty

  32. StorageElement26:Empty

  33. StorageElement27:Empty

  34. StorageElement28:Empty

  35. StorageElement29:Empty

  36. StorageElement30:Full:VolumeTag=F01030L5

  37. StorageElement31:Full:VolumeTag=F01031L5

  38. StorageElement32:Full:VolumeTag=F01032L5

  39. StorageElement33:Full:VolumeTag=F01033L5

  40. StorageElement34:Full:VolumeTag=F01034L5

  41. StorageElement35:Full:VolumeTag=F01035L5

  42. StorageElement36:Full:VolumeTag=F01036L5

  43. StorageElement37:Full:VolumeTag=F01037L5

  44. StorageElement38:Full:VolumeTag=F01038L5

  45. StorageElement39:Full:VolumeTag=F01039L5

  46. StorageElement40 IMPORT/EXPORT:Empty

  47. StorageElement41 IMPORT/EXPORT:Empty

  48. StorageElement42 IMPORT/EXPORT:Empty

  49. StorageElement43 IMPORT/EXPORT:Empty

4个驱动器中没有磁带。

2).将磁带从39号插槽装入0号驱动器:

 
  1. [root@centos1 ~]# mtx -f /dev/sg9 load 390

  2. [root@centos1 ~]# mtx -f /dev/sg9 status

  3. StorageChanger/dev/sg9:4Drives,43Slots(4Import/Export)

  4. DataTransferElement0:Full(StorageElement39Loaded):VolumeTag= F01039L5

  5. DataTransferElement1:Empty

  6. DataTransferElement2:Empty

  7. DataTransferElement3:Empty

  8. .....

成功将39号槽位的磁带装入0号磁带驱动器。

3).检查0号驱动器里磁带的状态:

 
  1. [root@centos1 ~]# mt -f /dev/st0 status

  2. SCSI 2 tape drive:

  3. File number=0, block number=0, partition=0.

  4. Tape block size 0 bytes.Density code 0x58(no translation).

  5. Soft error count since last status=0

  6. General status bits on (41010000):

  7. BOT ONLINE IM_REP_EN

4).检查0号驱动器中磁头的位置:

 
  1. [root@centos1 ~]# mt -f /dev/st0 tell

  2. At block 0.

5).向磁带中写入数据:

 
  1. [root@centos1 ~]# ls

  2. anaconda-ks.cfg Desktop install.log install.log.syslog

  3. [root@centos1 ~]# tar -cvf /dev/st0 Desktop

  4. Desktop/

  5. [root@centos1 ~]# mt -f /dev/st0 tell

  6. At block 0.

st打头的表示写入完成后会自动倒带,下次写入会覆盖之前的数据。

 
  1. [root@centos1 ~]# tar -cvf /dev/nst0 Desktop

  2. Desktop/

  3. [root@centos1 ~]# mt -f /dev/st0 tell

  4. At block 2.

nst打头的表示写入完成后不会自动倒带。

4.卸载磁带库操作。
将磁带从0号驱动器拔出放入39号插槽:

 
  1. [root@centos1 ~]# mtx -f /dev/sg9 unload 390

  2. UnloadingDataTransferElementintoStorageElement39...done

5.倒带

 
  1. mt rew

  2. mt rewind

  3. mt -f /dev/mt/0 rewind

  4. mt -f /dev/st0 rewind

6.弹出磁带

 
  1. mt off

  2. mt offline

  3. mt eject

  4. mt -f /dev/mt/0 off

  5. mt -f /dev/st0 eject

7.擦除磁带(倒带,在支持的情况下卸载磁带)

 
  1. mt erase

  2. mt -f /dev/st0 erase #Linux

  3. mt -f /dev/rmt/0 erase #Unix

8.张紧磁带盒
如果磁带在读取时发生错误,你重新张紧磁带,清洁磁带驱动器,像下面这样再试一次:

 
  1. mt retension

  2. mt -f /dev/rmt/1 retension #Unix

  3. mt -f /dev/st0 retension #Linux

9.磁带当前位置写入 EOF 标记

 
  1. mt eof

  2. mt weof

  3. mt -f /dev/st0 eof

10.前进指定的文件标记数目,即跳过指定个 EOF 标记
磁带定位在下一个文件的第一个块,即磁带会定位在下一区域的第一个块(见图01):

 
  1. mt fsf

  2. mt -f /dev/rmt/0 fsf

  3. mt -f /dev/rmt/1 fsf 1#go 1 forward file/tape (see fig.01)

11.后退指定的文件标记数目,即倒带指定个 EOF 标记
磁带定位在下一个文件的第一个块,即磁带会定位在 EOF 标记之后(见图01):

 
  1. mt bsf

  2. mt -f /dev/rmt/1 bsf

  3. 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库。

 
  1. [root@netbackup-server mhvtl]# mtx --help

  2. Usage:

  3. mtx --version

  4. mtx [-f <loader-dev>] noattach <more commands>

  5. mtx [-f <loader-dev>] inquiry | inventory

  6. mtx [-f <loader-dev>][altres][nobarcode] status

  7. mtx [-f <loader-dev>][altres] first [<drive#>]

  8. mtx [-f <loader-dev>][altres]last[<drive#>]

  9. mtx [-f <loader-dev>][altres] previous [<drive#>]

  10. mtx [-f <loader-dev>][altres]next[<drive#>]

  11. mtx [-f <loader-dev>][altres][invert] load <storage-element-number>[<drive#>]

  12. mtx [-f <loader-dev>][altres][invert] unload [<storage-element-number>][<drive#>]

  13. mtx [-f <loader-dev>][altres][eepos eepos-number] transfer <storage-element-number><storage-element-number>

  14. mtx [-f <loader-dev>][altres][eepos eepos-number][invert][invert2] exchange <storage-element-number><storage-element-number>

  15. mtx [-f <loader-dev>][altres] position <storage-element-number>

  16. mtx [-f <loader-dev>] eject

  17. [root@netbackup-server mhvtl]#


【声明】内容源于网络
0
0
云容灾备份安全治理
分享云灾备规划、实施、运营、备份与恢复、数据安全、数据治理;窥视国内外备份软件与监控软件知识前沿水平线; 越努力,越幸运!
内容 2171
粉丝 0
云容灾备份安全治理 分享云灾备规划、实施、运营、备份与恢复、数据安全、数据治理;窥视国内外备份软件与监控软件知识前沿水平线; 越努力,越幸运!
总阅读4.7k
粉丝0
内容2.2k