Mhvtl

安装配置

下载及文档

https://sites.google.com/site/linuxvtl2/

安装

参考INSTALL文件。

Ubuntu:

git clone https://github.com/markh794/mhvtl.git
sudo apt-get -y install make gcc linux-headers-`uname -r` lsscsi sg3-utils zlib1g-dev liblzo2-dev
cd mhvtl/kernel
make
sudo make install
cd ..
sudo groupadd --system vtl
sudo useradd --system -c "Vitrual Tape Library" -d /opt/vtl -g vtl -m vtl
make
sudo BINGROUP=bin make install
sudo chown -R vtl:vtl /opt/mhvtl
sudo /etc/init.d/mhvtl start
lsscsi -g
  • mhvtl 最近有改动,直接使用 make install 编译报错,需要将 make install 换成 BINGROUP=bin make install 才能成功安装。
  • 如果mhvtl服务启动时报告make_vtl_media失败,等一段时间再重新执行看看,貌似运行多几次就成功了。

配置

编辑/etc/mhvtl/mhvtl.conf 修改单盒磁带的容量,默认500M。

# Default media capacity (500 M)
CAPACITY=500

编辑 /etc/mhvtl/device.conf 修改设备信息,如机械臂和驱动器的型号,数量等。

  • 例如 %{color:red}设置Vendor为IBM、Product为03584L52,可以为Windows所识别。%
    编辑 /etc/mhvtl/library_contents* 修改设备对应的介质信息,如磁带的数量、槽位、条形码、类型等。
  • 在文件中设置slot为NOBAR开头(如NOBAR001L4),则会模拟出无条形码的介质。
    修改完重启 mhvtl 服务可生效。
  • 虚拟介质在/opt/mhvtl目录下,删除条形码对应的目录后重启服务则会重新创建空介质。该方法也可用于释放磁盘空间。

使用iSCSI共享

Ubuntu下stgt安装与配置

安装stgt。与其它iSCSI target软件同时安装(如scst或iscsitarget,目前scutech-nas依赖于iscsitarget)会有端口冲突,应该可以通过修改默认端口解决。

Ubuntu上:

sudo apt-get -y install tgt

使用stgt共享changer和drive,例如lsscsi -g列出的changer和drive分别是/dev/sg9和/dev/sg1,可以创建以下两个文件并保存为脚本并用root运行:

  • tgt-add
# create a new iSCSI target
tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2012-12.scutech:ubuntu-vtl:1

# add changer and drive as LUN to the created target, use passthrough mode
tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 --bstype sg --device-type pt -b /dev/sg9
tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 2 --bstype sg --device-type pt -b /dev/sg1
tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 3 --bstype sg --device-type pt -b /dev/sg2

# allow initiator from ALL address to access the created target
tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL

# show all targets
tgtadm --lld iscsi --op show --mode target
  • tgt-rm
# delete target from access lists
tgtadm --lld iscsi --op unbind --mode target --tid 1 -I ALL
# delete LUNs from target
tgtadm --lld iscsi --op delete --mode logicalunit --tid 1 --lun 1
tgtadm --lld iscsi --op delete --mode logicalunit --tid 1 --lun 2
# delete iSCSI target
tgtadm --lld iscsi --op delete --mode target --tid 1
# show all targets
tgtadm --lld iscsi --op show --mode target
  • 上例中只共享出1个changer和2个drive,其它可类推添加。
  • 应该把changer和与它相关的drive一起共享出来,否则changer把磁带加到未共享的drive之后无法访问。
  • 可以创建多个target,分别共享不同的带库,例如drive sg1-sg4属于changer sg9管理,把它们加入同一个target,而drive sg2-sg5属于changer sg10管理,则把它们加入另一个target。

增加执行权限后,可以分别加入/etc/rc.local及/etc/rc.shutdown(在ubuntu下好像没有rc.shutdown,可以到/etc/rc0.d中创建符号连接指向该脚本)。

Ubuntu下iSCSI initiator安装与配置

sudo apt-get -y install open-iscsi
sudo iscsiadm -m discovery -t sendtargets -p 192.168.88.199
sudo iscsiadm -m node -T iqn.2012-12.scutech:ubuntu-vtl:1 --login
lsscsi -g

discovery命令自动发现指定主机上的target并加入列表,也可以替换为以下命令手动添加指定的target:

iscsiadm -m node -o iqn.2012-12.scutech:ubuntu-vtl:1 -t sendtargets -p 192.168.88.199

可以把登录命令添加到/etc/rc.local,也可以通过以下命令设置为开机自动登录:

iscsiadm -m node -o update -p 192.168.88.199 -T iqn.2012-12.scutech:ubuntu-vtl:1 -n node.startup -v automatic

用以下命令可退出登录(断开连接):

sudo iscsiadm -m node -p 192.168.88.199 -T iqn.2012-12.scutech:ubuntu-vtl:1 --logout

用以下命令把target从本机列表中删除,如果以后不再使用该target可以使用该命令,否则不需要运行:

sudo iscsiadm -m node -p 192.168.88.199 -o delete -T iqn.2012-12.scutech:ubuntu-vtl:1

Windows下iSCSI initiator安装与配置

Vista以前的版本需要下载官方的iSCSI initiator。Vista及以后的版本自带。
操作比较简单,输入target的主机地址,发现target后登录,Windows就找到设备了,安装驱动后就可以使用。较新的版本能自动识别一些drive,但很多changer无法识别。可以按上面提及的虚拟IBM的changer,并安装IBM官方驱动即可(附件)。

RHEL下iSCSI initiator安装与配置

yum install  iscsi-initiator-utils
iscsiadm -m discovery -t sendtargets -p 192.168.82.144 (发现)
iscsiadm -m node -T iqn.2004-01.com.storbridge:block01-wt -p 192.168.82.144 -l (登陆)
iscsiadm -m node -T iqn.1994-05.com.redhat:7aa292fa110:mhvtl:tgt:1 -p 192.168.82.144 --logout (登出)

带库常用命令

查看设备

root@ubuntu:~# lsscsi -g
[1:0:0:0]    cd/dvd  NECVMWar VMware IDE CDR10 1.00  /dev/sr0   /dev/sg0 
[2:0:0:0]    tape    IBM      ULT3580-TD3      73P5  /dev/st0   /dev/sg2 
[2:0:1:0]    tape    IBM      ULT3580-TD3      73P5  /dev/st1   /dev/sg3 
[2:0:1:1]    mediumx IBM      ULT3582-TL       310B  /dev/sch0  /dev/sg4 
[3:0:0:0]    disk    VMware   Virtual disk     1.0   /dev/sda   /dev/sg1 

查看机械手的状态

root@ubuntu:~# mtx -f /dev/sg4 status
  Storage Changer /dev/sg4:2 Drives, 24 Slots ( 1 Import/Export )
Data Transfer Element 0:Empty
Data Transfer Element 1:Empty
      Storage Element 1:Full :VolumeTag=SCU002L3                        
      Storage Element 2:Full :VolumeTag=SCU001L3                        
      Storage Element 3:Empty:VolumeTag=                                
      Storage Element 4:Empty:VolumeTag=                                
      Storage Element 5:Empty:VolumeTag=                                
      Storage Element 6:Empty:VolumeTag=                                
      Storage Element 7:Empty:VolumeTag=                                
      Storage Element 8:Empty:VolumeTag=                                
      Storage Element 9:Empty:VolumeTag=                                
      Storage Element 10:Empty:VolumeTag=                                
      Storage Element 11:Empty:VolumeTag=                                
      Storage Element 12:Empty:VolumeTag=                                
      Storage Element 13:Empty:VolumeTag=                                
      Storage Element 14:Empty:VolumeTag=                                
      Storage Element 15:Empty:VolumeTag=                                
      Storage Element 16:Empty:VolumeTag=                                
      Storage Element 17:Empty:VolumeTag=                                
      Storage Element 18:Empty:VolumeTag=                                
      Storage Element 19:Empty:VolumeTag=                                
      Storage Element 20:Empty:VolumeTag=                                
      Storage Element 21:Empty:VolumeTag=                                
      Storage Element 22:Empty:VolumeTag=                                
      Storage Element 23:Empty:VolumeTag=                                
      Storage Element 24 IMPORT/EXPORT:Empty:VolumeTag=   

装载磁带

把槽位 1 的磁带移动到 driver 0上面

root@ubuntu:~# time mtx -f /dev/sg4 load 1 0
Loading media from Storage Element 1 into drive 0...done

装载后查看机械手状态

root@ubuntu:~# mtx -f /dev/sg4 status
  Storage Changer /dev/sg4:2 Drives, 24 Slots ( 1 Import/Export )
Data Transfer Element 0:Full (Storage Element 1 Loaded):VolumeTag = SCU002L3                        
Data Transfer Element 1:Empty
      Storage Element 1:Empty:VolumeTag=                                
      Storage Element 2:Full :VolumeTag=SCU001L3                        
      Storage Element 3:Empty:VolumeTag=                                
      Storage Element 4:Empty:VolumeTag=                                
      Storage Element 5:Empty:VolumeTag=                                
      Storage Element 6:Empty:VolumeTag=                                
      Storage Element 7:Empty:VolumeTag=                                
      Storage Element 8:Empty:VolumeTag=                                
      Storage Element 9:Empty:VolumeTag=                                
      Storage Element 10:Empty:VolumeTag=                                
      Storage Element 11:Empty:VolumeTag=                                
      Storage Element 12:Empty:VolumeTag=                                
      Storage Element 13:Empty:VolumeTag=                                
      Storage Element 14:Empty:VolumeTag=                                
      Storage Element 15:Empty:VolumeTag=                                
      Storage Element 16:Empty:VolumeTag=                                
      Storage Element 17:Empty:VolumeTag=                                
      Storage Element 18:Empty:VolumeTag=                                
      Storage Element 19:Empty:VolumeTag=                                
      Storage Element 20:Empty:VolumeTag=                                
      Storage Element 21:Empty:VolumeTag=                                
      Storage Element 22:Empty:VolumeTag=                                
      Storage Element 23:Empty:VolumeTag=                                
      Storage Element 24 IMPORT/EXPORT:Empty:VolumeTag=

卸载磁带

root@ubuntu:~# time mtx -f /dev/sg4 unload 1 0
Unloading drive 0 into Storage Element 1...done

查看驱动器装载磁带的状态

root@ubuntu:~# sg_turs /dev/st0
device not ready
root@ubuntu:~# sg_turs /dev/st1
root@ubuntu:~# 

向驱动器写数据

root@ubuntu:~#tar -cf /dev/st1 Oracle-Linux-Release-7-for-x86_64.iso

磁带库常用命令集

  1. 查看磁带库设备相关信息:lsscsi -g
  2. 查看机械手状态:mtx -f /dev/sg1 status
  3. 装载磁带:mtx –f 机械手设备号 load slot号 driver号
  4. 如将磁带从1号插槽装入0号驱动器:mtx -f /dev/sg1 load 1 0
  5. 卸载磁带:mtx -f 机械手设备号 unload slot号 driver号
    如:mtx -f /dev/sg1 unload 1 0
  6. 查看磁带状态:mt -f /dev/st0 status
  7. 磁带倒带:mt -f /dev/st0 rewind
  8. 向驱动器写数据:tar -cvf /dev/st1 xxx 或者 tar -rvf /dev/st1 xxx
    参数
    c :将覆盖磁带上已有文件
    r:将不覆盖前边的内容
  9. 向驱动器读数据:tar -tvf /dev/st1
    在Linux中磁带机的设备名是: /dev/st*和/dev/nst*, 其中nst*是操作完成后不自动回卷磁带, st*则是自动回卷, 一般常用nst*.
  10. 查看带的信息:tapeinfo -f /dev/st0

存在问题

操作频繁时偶尔会出现vtl没有响应的情况,可以:

  • 先重启服务
  • 如果出现有进程未退出而无法重启,杀掉这些进程:sudo pkill vtl*
  • 仍然不行,则强制杀死进程:sudo pkill -9 vtl*
  • 如果进程还未退出,重启系统

安装问题

root@ubuntu:~/mhvtl# make install
make usr
make[1]: Entering directory `/root/mhvtl'
make -C usr USR=vtl GROUP=vtl MHVTL_HOME_PATH=/opt/mhvtl MHVTL_CONFIG_PATH=/etc/mhvtl
make[2]: Entering directory `/root/mhvtl/usr'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/root/mhvtl/usr'
make[1]: Leaving directory `/root/mhvtl'
make -C usr install /usr/lib /usr 
make[1]: Entering directory `/root/mhvtl/usr'
install -d -m 755 /usr/lib
install -o root -g  -m 755 libvtlscsi.so /usr/lib/
install: invalid group '-m'
make[1]: *** [install] Error 1
make[1]: Leaving directory `/root/mhvtl/usr'
make: *** [install] Error 2

错误原因, -g 后应该加组名,但此处组名获取为空,导致 make install 失败。

install -o root -g  -m 755 libvtlscsi.so /usr/lib/
install: invalid group '-m'

查看 mhvtl/usr/Makefile 发现组名由 BINGROUP 参数决定,再全目录搜索 BINGROUP , gren BINGROUP *,发现 BINGROUP ?= bin,于是先手动设置 BINGROUP 环境变量再运行 make install

install -o $(SUSER) -g $(BINGROUP) -m 755

解决方案:

BINGROUP=bin make install

实例
往磁带里面写数据

for i in {0..1000}
do
  echo "$i" 
  mtx -f /dev/sg1 load 1 0
  mt -f /dev/nst0 rewind
  mt -f /dev/nst0 fsf $i
  dd if=/dev/urandom of=/dev/nst0 bs=8192 count=$(($i + 1))
  mtx -f /dev/sg1 unload 1 0
done

从磁带里面读数据

mtx -f /dev/sg1 load 1 0
mt -f /dev/nst0 rewind
mt -f /dev/nst0 fsf 1000
cat /dev/nst0 > file1000

你可能感兴趣的:(Linux)