AS400のバックアップでは、物理テープ(LTO)を使うシーンもまだまだありますが、物理テープ装置がシングルの場合では、テープの入替の手間も発生し、SAVFを使う選択肢もあったかと思います。
ただし、SAVFでは1つのライブラリーしかやり取りできず、複数のライブラリーを一括でバックアップができません。
そこで、それを実現する方法が「仮想テープ装置」であることを取引先様に教えていただいたので、仮想テープ装置についての導入手順や保管と復元について手順をまとめておきたいと思います。
あくまでも個人的な備忘録になります(IBM iのVersionは V7R01)。
全体像
- 基本的には、仮想テープと言っても、物理テープ装置と同じ使い方になります。
- 下記の画面は「WRKDEVD *TAP」コマンドの結果ですが、TAP01が物理テープ装置、TAPVRT01が仮想テープ装置となっています。
装置記述の処理 位置指定 . . . . . . . 開始文字 オプションを入力して,実行キーを押してください。 2= 変更 3= コピー 4= 削除 5= 表示 6= 印刷 7= 名前の変更 8= 状況の処理 9= ソースの検索 OPT 装置 タイプ テキスト TAPVRT01 63B0 TAP01 3580 自動構成によって作成された
- 新規で作成した仮想テープ装置に、イメージカタログというIFS上のファイルと連動する保管庫を紐づけます。仮想テープ装置に保管されたライブラリーやオブジェクトは、結果、IFS(AS400のHDD)に保管されます。よって、ディスクの空き容量がとても重要になります。
- DB2 for i とのやり取りは、仮想テープ装置を使い、外部へのバックアップとしては(私の場合は)FTPを使って、データの出し入れをIFS上のファイル操作で行うようにしました。
保管フロー
原理・原則を理解するためには、手を動かすことが最善の方法ですね。
まずは、テスト系のライブラリー群を保管してみましょう。上記の図の通り、進めていきます。
①仮想テープ装置の作成
CRTDEVTAP DEVD(TAPVRT01) RSRCNAME(*VRT)
②仮想テープ装置を有効化
VRYCFG CFGOBJ(TAPVRT01) CFGTYPE(*DEV) STATUS(*ON)
③イメージ・カタログの作成
- IFSでは「/TAPEIMAGE」のパスに保管されるようにしました。
CRTIMGCLG IMGCLG(DAILYSAVE) DIR('/TAPEIMAGE') TYPE(*TAP)
④仮想テープ・ボリュームの追加
- せっかくなので、2つ作ってみました。FROMFILE(*NEW) で、新規作成となります。
- また、ALCSTGオプションの指定も重要で、テープ・イメージ・ファイルの初期設定に必要な記憶域のみが割り振られます。
ADDIMGCLGE IMGCLG(DAILYSAVE) FROMFILE(*NEW) TOFILE('VOL001') VOLNAM('VOL001') ALCSTG(*MIN) ADDIMGCLGE IMGCLG(DAILYSAVE) FROMFILE(*NEW) TOFILE('VOL002') VOLNAM('VOL002') ALCSTG(*MIN)
※ 追記 2018-06-08 ※
作成される仮想テープ・ボリュームは、最大サイズが設定されるようです。上記コマンドでは、1GBでした。
IMZSIZオプションで最大サイズを指定することができ、有効な範囲は 48 から 1,000,000 MB となっていました。
// サイズ10GB のボリュームを作る ADDIMGCLGE IMGCLG(DAILYSAVE) FROMFILE(*NEW) TOFILE('VOL003') IMGSIZ(10000) ALCSTG(*MIN) VOLNAM('VOL003')
⑤テープ初期化
- お試しで初期化してみました。物理テープ装置とやり方は一緒ですね。
- ここでのVOLは、ボリューム IDのことで、④で作成した仮想テープ・ボリューム名を指定しています。
INZTAP DEV(TAPVRT01) NEWVOL(VOL001) VOL(VOL001) CHECK(*NO)
⑥イメージ・カタログのロード
- ③で作成したイメージカタログと①で作成した仮想テープ装置を連携させます。これで、仮想テープ装置が使えるようになりました!
LODIMGCLG IMGCLG(DAILYSAVE) DEV(TAPVRT01)
⑦保管(ライブラリ、オブジェクト)
- ただ単に、DEVに仮想テープ装置を、VOLでボリューム名を指定しました。
- ライブラリーは、2つ指定しました。
SAVLIB LIB(TIGERDB TIGERDB2) DEV(TAPVRT01) VOL(VOL001)
⑧リモート先へバックアップ(FTP)
- リモート先は、とりあえず自分のパソコン上にしました(C:¥temp)。
> ftp AS400のIPアドレス ユーザー名 パスワード ftp> bin ftp> get /TAPEIMAGE/VOL001 C:\temp\VOL001.stmf ftp> quit
復元フロー
次に、外部に保管したストリームファイルよりライブラリーを復元してみます。
①仮想テープ・ボリュームをアンロード
- これを実施せず、何度もFTPでIFS上のファイルを上書きしようと試みましたが、「UNABLE TO OPEN OR CREATE FILE」とメッセージに。
- 結果的には、仮想テープ・ボリュームのマウントは外してやればオッケーでした。
LODIMGCLGE IMGCLG(DAILYSAVE) IMGCLGIDX(1) OPTION(*UNLOAD)
②リモート先からIFSファイルを更新(FTP)
- 仕切り直しで、FTPでPUT!
> ftp AS400のIPアドレス ユーザー名 パスワード ftp> bin ftp> put C:\temp\VOL001.stmf /TAPEIMAGE/VOL001 ftp> quit
③仮想テープ・ボリュームをマウント
- ①でアンロードしたままなので、再度マウントします。
LODIMGCLGE IMGCLG(DAILYSAVE) IMGCLGIDX(1) OPTION(*MOUNT)
④ライブラリーを消去
- ライブラリ内をクリーナップしました。
CLRLIB TIGERDB2
⑤ライブラリを復元
- 仮想テープ装置では、「TIGERDB」と「TIGERDB2」の2つのライブラリが入っていますが、そのうちの1つを復元してみました。
RSTLIB SAVLIB(TIGERDB2) DEV(TAPVRT01) VOL(VOL001) MBROPT(*ALL) ALWOBJDIF(*ALL)
これで、復元完了です!!
今回は、1つ1つコマンド化して、説明しましたが、実際に対話型で行う場合には、下記のツールが使いやすいです。
WRKIMGCLG //イメージ・カタログの処理
このコマンドでは、存在するイメージカタログが表示されますが、OPTION=12で、カタログ内のボリューム操作も可能です。これは、最高ですね!
イメージ・カタログ項目の処理 カタログ . . : DAILYSAVE 状況 . . . . : 作動可 タイプ . . . : テープ 装置 . . . . : TAPVRT01 次の VOL . . : *NONE ディレクトリー . . : /TAPEIMAGE オプションを入力して,実行キーを押してください。 1= 追加 2= 変更 4= 除去 6= マウント 8= ロード 9= アンロード 10= ボリュームの初期化 11= テープの表示 13= ダンプ 14= 複写 OPT 索引 状況 ボリューム 名 密度 タイプ 書き込み保護 *AVAIL 1 ロード VOL001 *VRT256K *SL いいえ 2 マウント VOL002 *VRT256K *SL いいえ 終わり F3= 終了 F5= 最新表示 F6= イメージ・カタログのロード/アンロード F8= 索引別に再配列 F11= サイズ情報の表示 F12= 取り消し F24= キーの続き
最後に、注意事項を紹介して、終わりにします。
注意事項
イメージカタログ内に仮想テープボリュームが存在しないと、イメージカタログをロードできない
LODIMGCLG IMGCLG(DAILYSAVE) OPTION(*LOAD) DEV(TAPVRT01) ロード状況のイメージ・カタログ項目がない。 イメージ・カタログ DAILYSAVE が装置 TAPVRT01 にロードされなかった。
- イメージカタログ内には、ボリュームは必ず必要です。当然ですね。
同一の名前のイメージファイルがIFS上に残っている場合、仮想テープボリュームが新規作成できない
ADDIMGCLGE IMGCLG(DAILYSAVE) FROMFILE(*NEW) TOFILE('VOL002') VOLNAM('VOL002') ALCSTG(*MIN) イメージ・ファイルは既にイメージ・カタログ・ディレクトリーに存在しています。 イメージ・カタログ項目がイメージ・カタログ DAILYSAVE に追加されなかった。
- この場合、WRKLNKコマンド等で、「VOL002.stmf」を削除してあげれば、うまくいきました。
仮想テープ・ボリュームがアンロード中の場合、 仮想テープ・ボリュームの初期化はできない
INZTAP DEV(TAPVRT01) NEWVOL(VOL001) VOL(VOL001) CHECK(*NO) 仮想テープ・ボリュームは使用できません。 エラーのためにコマンドが終了した。
- こちらも当たり前でしょう。ただし、ロード状態のときは、初期化処理ができます。