タイガー!タイガー!じれったいぞー!(SE編)

AS400,WAS,GlassFish,Java,JavaEE,JSF等の開発における日々の気づきをまとめたブログ(備忘録)。

【AS400】仮想テープ装置を試す

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 AS400IPアドレス
   ユーザー名
   パスワード
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 AS400IPアドレス
   ユーザー名
   パスワード
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)
 仮想テープ・ボリュームは使用できません。
  エラーのためにコマンドが終了した。
  • こちらも当たり前でしょう。ただし、ロード状態のときは、初期化処理ができます。