お手軽バックアップ検証環境構築(MHVTL on EC2)

エンタープライズな環境であったりすると、
バックアップも高価なテープライブラリを使ったりするわけですが、
その検証をやりたくても、個人ではなかなか出来ませんでした。

と思っていたのですが、MHVTLという仮想テープライブラリ(https://sites.google.com/site/linuxvtl2/)がオープンソースで公開されていることを知り、早速試してみました。


環境
仮想テープライブラリ側(MHVTL+iSCSIターゲット) Amazon Linux AMI 2012.09.1 (ami-5d7dfa5c) マイクロインスタンス
バックアップホスト (ARCserve16.5*+iSCSIイニシエータ) Windows2008 R2 マイクロインスタンス



*バックアップソフトはなんでも良かったんですが、
体験版のダウンロードが簡単だったのでARCserveにしました。
(バックアップソフトは、お好みに合わせてNetbackup、BackupExec,DataProtector,Netvault等使えば良いかと思います
以下の4までの手順はどのバックアップソフトでも共通です)


1.仮想テープライブラリ側にてパッケージインストール&ダウンロード
Amazon Linuxリポジトリでは何故かscsi-target-utilsが用意されていないので、
CentOS6のリポジトリからscsi-target-utilsを引っ張ってきます。
また、yum -y updateでカーネルのアップデートも行うので、
一旦リブートします。


packages.sh

#!/bin/bash
yum -y update
cat > /etc/yum.repos.d/CentOS-Base.repo <<'EOF'
[centbase]
name=CentOS-6 - Base
mirrorlist=http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os
enabled=0
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
EOF
curl https://sites.google.com/site/linuxvtl2/mhvtl-2013-01-31.tgz -O -L
curl https://sites.google.com/site/linuxvtl2/mhvtl-utils-1.4-6.x86_64.rpm -O -L
yum -y install --enablerepo=centbase scsi-target-utils zlib-devel sg3_utils lsscsi mt-st mtx lzo lzo-devel make gcc kernel-devel
reboot

$sudo sh ./packages.sh



*CentOS6(64bit)であれば、Amazon Linuxでなくてもyum -y installの部分のパッケージ名は同じでいけると思います。


2.仮想テープライブラリ側にてmhvtlのmake&install
RedHat/CentOS/OracleLinuxであれば、elrepoというリポジトリを使えば、
mhvtl(カーネルモジュール)をyum経由でインストールできるのですが、
このリポジストリはカーネルバージョンに依存するため、
RedHat/CentOS/OracleLinuxと異なるカーネルバージョンであるAmazon Linuxでは、
mhvtlのサイトからtgzを落としてきてmakeする必要があります。


install_mhvtl.sh

#!/bin/bash
rpm -ivh mhvtl-utils-1.4-6.x86_64.rpm
tar zxvf mhvtl-2013-01-31.tgz
cd mhvtl-1.4
cd kernel
make
make install
/etc/init.d/mhvtl start
chkconfig mhvtl on

$sudo sh ./install_mhvtl.sh


このタイミングでAmazon Linux側では、仮想テープライブラリが使用できる状態になっています。

[ec2-user@ip-10-0-0-69 ~]$ lsscsi -g
[0:0:0:0]    mediumx STK      L700             0104  /dev/sch0  /dev/sg8
[0:0:1:0]    tape    IBM      ULT3580-TD5      0104  /dev/st0   /dev/sg0
[0:0:2:0]    tape    IBM      ULT3580-TD5      0104  /dev/st1   /dev/sg1
[0:0:3:0]    tape    IBM      ULT3580-TD4      0104  /dev/st2   /dev/sg2
[0:0:4:0]    tape    IBM      ULT3580-TD4      0104  /dev/st3   /dev/sg3
[0:0:8:0]    mediumx STK      L80              0104  /dev/sch1  /dev/sg9
[0:0:9:0]    tape    STK      T10000B          0104  /dev/st4   /dev/sg4
[0:0:10:0]   tape    STK      T10000B          0104  /dev/st5   /dev/sg5
[0:0:11:0]   tape    STK      T10000B          0104  /dev/st6   /dev/sg6
[0:0:12:0]   tape    STK      T10000B          0104  /dev/st7   /dev/sg7


mhvtl(1.4)ではデフォルトで二つのライブラリ(L700とL80)にそれぞれ、4つのテープドライブがぶら下がった状態
で設定されるようです。
この後、Amazon Linux側で認識している仮想テープライブラリをiSCSI経由で公開します。


3.仮想テープライブラリ側にてiSCSIターゲットの設定


scsi_target.sh

#!/bin/bash
cat > /etc/tgt/targets.conf <<'EOF'
<target iqn.2013-03.org.jpoug:vtl1-changer>
        <backing-store /dev/sg8>
                device-type pt
                bs-type sg
                lun 1
        </backing-store>

        <backing-store /dev/sg0>
                device-type pt
                bs-type sg
                lun 2
        </backing-store>

        <backing-store /dev/sg1>
                device-type pt
                bs-type sg
                lun 3
        </backing-store>

        <backing-store /dev/sg2>
                device-type pt
                bs-type sg
                lun 4
        </backing-store>

        <backing-store /dev/sg3>
                device-type pt
                bs-type sg
                lun 5
        </backing-store>

</target>

<target iqn.2013-03.org.jpoug:vtl2-changer>
        <backing-store /dev/sg9>
                device-type pt
                bs-type sg
                lun 1
        </backing-store>

        <backing-store /dev/sg4>
                device-type pt
                bs-type sg
                lun 2
        </backing-store>

        <backing-store /dev/sg5>
                device-type pt
                bs-type sg
                lun 3
        </backing-store>

        <backing-store /dev/sg6>
                device-type pt
                bs-type sg
                lun 4
        </backing-store>

        <backing-store /dev/sg7>
                device-type pt
                bs-type sg
                lun 5
        </backing-store>

</target>
EOF

/etc/init.d/tgtd start
chkconfig tgtd on

$sudo sh ./scsi_target.sh



scsiターゲットの状態は、tgt-admin --showで確認できます。
$sudo tgt-admin --show

[ec2-user@ip-10-0-0-69 ~]$ sudo tgt-admin --show
Target 1: iqn.2013-03.org.jpoug:vtl1-changer
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: null
            Backing store path: None
            Backing store flags: 
        LUN: 1
            Type: passthrough
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: sg
            Backing store path: /dev/sg8
            Backing store flags: 
        LUN: 2
            Type: passthrough
            SCSI ID: IET     00010002
            SCSI SN: beaf12
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: sg
            Backing store path: /dev/sg0
            Backing store flags: 
        LUN: 3
            Type: passthrough
            SCSI ID: IET     00010003
            SCSI SN: beaf13
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: sg
            Backing store path: /dev/sg1
            Backing store flags: 
        LUN: 4
            Type: passthrough
            SCSI ID: IET     00010004
            SCSI SN: beaf14
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: sg
            Backing store path: /dev/sg2
            Backing store flags: 
        LUN: 5
            Type: passthrough
            SCSI ID: IET     00010005
            SCSI SN: beaf15
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: sg
            Backing store path: /dev/sg3
            Backing store flags: 
    Account information:
    ACL information:
        ALL
Target 2: iqn.2013-03.org.jpoug:vtl2-changer
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00020000
            SCSI SN: beaf20
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: null
            Backing store path: None
            Backing store flags: 
        LUN: 1
            Type: passthrough
            SCSI ID: IET     00020001
            SCSI SN: beaf21
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: sg
            Backing store path: /dev/sg9
            Backing store flags: 
        LUN: 2
            Type: passthrough
            SCSI ID: IET     00020002
            SCSI SN: beaf22
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: sg
            Backing store path: /dev/sg4
            Backing store flags: 
        LUN: 3
            Type: passthrough
            SCSI ID: IET     00020003
            SCSI SN: beaf23
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: sg
            Backing store path: /dev/sg5
            Backing store flags: 
        LUN: 4
            Type: passthrough
            SCSI ID: IET     00020004
            SCSI SN: beaf24
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: sg
            Backing store path: /dev/sg6
            Backing store flags: 
        LUN: 5
            Type: passthrough
            SCSI ID: IET     00020005
            SCSI SN: beaf25
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: sg
            Backing store path: /dev/sg7
            Backing store flags: 
    Account information:
    ACL information:
        ALL

以上で、仮想テープライブラリ側の設定は完了です。



4.iSCSIイニシエータの設定
スタート→管理ツールiSCSIイニシエータ→Microsoft iSCSIサービスが〜と表示されるので、はいを押す→クイック接続のターゲットに仮想テープライブラリのIPを入力しクイック接続をクリックする。→iqn.xxxx-が2つ検出されるので、それぞれ接続をクリックした後、完了をクリックする


この段階でデバイスマネージャ(OS)からはこのように見えます。


5.Windows2008R2側でバックアップソフト&仮想CD/DVDドライブソフトのインストール
ARCserveの体験版はisoで公開されていたので、isoをマウント出来るソフトが必要です。
今回は、WinCDEmu(http://wincdemu.sysprogs.org/)を使いました。


ARCserveの体験版は以下のURLからダウンロード出来ます。
https://www.arcserve.com/us/register/forms/ca-arcserve-backup.aspx


*日本のサイトからもダウンロードできるみたいなんですが、日本のサイトの方がアンケート項目多くて面倒なので、
USのサイトにしています。


6.ARCserveのインストール
5でダウンロードしたisoをWinCDEmuでマウントします。


インストールはウィザードにしたがってできますので、こまかい手順は割愛します。


7.ARCserveからデバイスの認識状態を確認
スタート→すべてのプログラム→CA→マネージャ を選択するとARCserveのマネージャが起動します。
ナビゲーションバー→管理→デバイスにてデバイスの認識状態が確認できます


あとは、通常のテープライブラリと同じように使用できるはずです。



参考サイト
MHVTL関連
http://hi.baidu.com/imyerik/item/3ab8682fb209b08b9d63d116
http://mhvtl-linux-virtual-tape-library-community-forums.966029.n3.nabble.com/NBU-keep-mounting-tape-forever-td3787713.html


Amazon LinuxCentOSのリボジトリ追加
http://fdbklp.blogspot.jp/2012/05/amazon-linux-yum.html


iSCSI関連
http://www.asahi-net.or.jp/~aa4t-nngk/iscsi.html