(QA) IBM i の仮想テープ装置でバックアップしたい

過去に何度かあげたはずで、ハイここに・・とご返信したかったのですがどこかに消失してしまったようです・・・泣
再作成しました。

## IBM i のバックアップをストレージ（ASP, IASP）に保管する仮想テープ装置　概要

全体像はこんな感じです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/329af27d-b460-a34c-a767-cdf189f6c35a.png)


まず、LTOテープ装置・ライブラリーに見えるイメージカタログ **IMGCLG** を作成します。そのカタログにIBM i 上の任意のストレージ（ASP1, ASP2,, IASP32,, ）のIFSパスとバックアップデータが保管されるファイル名を紐づけ（指定）します。
仮想のテープ装置記述（TYPE 63B0の*DEVD）を作成し、上記のイメージカタログをロード、マウントします。
以上でバックアップの準備が出来ました。あとは物理的なテープ装置と同じようにバックアップ・復元を実行します。

## IBM i 仮想テープ装置の特徴
わかりにくくなってしまったのですが、世の中に「仮想テープ装置」というのはさまざまあります。この記事の仮想テープ装置は **「IBM i のストレージ（IFS）上にバックアップを保管する物理テープ装置をエミュレートしたバックアップ機能全般」** を指します。

IBM i 仮想テープ装置の特徴として
    **- IBM i OSコマンドでテープメディア複製が可能(DUPTAPコマンドで複製可能)**
    ※仮想テープ装置メディア（ストレージのバイナリファイル）を物理テープ装置にコピーも可能（DUPTAPコマンドで）
    **- バックアップイメージの実態は単一（または連続ボリュームの複数）のIFSバイナリーファイルなので、他システムへFTP他転送して、復元できる。（IBM i OSバージョンの互換性範囲で、別なH/W型式やOSバージョン、オンプレ-クラウドの復元も制限なく可）追加費用もなし**
    - [SAVF](https://qiita.com/gomAnomalocaris/items/bca1ac713891a1fa8d92)ですと1つのSAVFに保管できるのは1保管コマンドのみ（CLRSAVFすれば再利用できる）だが、仮想テープ装置は通常テープと同様に複数コマンドで保管が可能。
    - 同時にオンにできる仮想テープ装置は最大35個（定義はこれより多く作成できる）

結構便利だと思います。

## 仮想テープ装置関連記述の作成ステップ
上記で説明したオブジェクトを作成していきます。

### ①仮想テープ装置の作成
**CRTDEVTAPコマンド**で装置タイプ63B0の仮想テープ装置を作成します。
DEVD（装置名）は任意です。TYPE-63B0, RSCNAME=*VRT を指定します。
`CRTDEVTAP DEVD(TAPVRT_G) TYPE(63B0) RSCNAME(*VRT) ASSIGN(*NO) TEXT('仮想テープ装置記述')`

WRKCFGSTS *DEV TAPVRT_G コマンドで確認すると下図のようにデバイスが作成され、ステータスはオフであることが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/7c466927-4d43-bf1e-c802-490648b8e10b.png)

### ②イメージカタログの作成
**CRTIMGLCGコマンド**でバックアップイメージを保管するIFSパスを指定します。このコマンドで同時にIFSパスを作成することもできます。IMGCLG（イメージカタログ名）、DIR（バックアップイメージ保管先IFSパス）は任意です。
`CRTIMGCLG IMGCLG(CLG01) DIR('/GOMA/IMGCLG/') TYPE(*TAP)`

WRKLNKコマンドで確認すると上記のディレクトリが作成されていることが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/e94521d4-78c3-089e-f7cf-69accfec7e8e.png)

### ③イメージカタログ項目の追加
**ADDIMGCLGEコマンド**でバックアップ先となるイメージカタログ項目（イメージカタログエントリー、実態はIFS上のファイル）を作成・指定します。IMGSIZは一つのIFSファイルの（テープメディアに見える）のサイズ=5GB となります。IFSのファイルは作成時点では8192バイトの最小サイズで作成されます。以後バックアップする都度ファイルサイズが拡張されます。
IMGCLGは②で作成したカタログ名、TOFILEはIFS上に作成されるファイルの名前になります。
`ADDIMGCLGE IMGCLG(CLG01) FROMFILE(*NEW) TOFILE(VOL001) IMGSIZ(5000) VOLNAM(VOL001)`

②で確認したディレクトリにイメージカタログ項目が1つ追加されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/41e49e48-bee8-fb14-98db-82d41d215ee1.png)

※③では5GBのイメージカタログ項目を用意しましたが最大1TBのイメージカタログ項目を作成できます。
例）
`ADDIMGCLGE IMGCLG(CLG01) FROMFILE(*NEW) TOFILE(VOL002) IMGSIZ(100000) VOLNAM(VOL002)`

### ④イメージカタログを仮想テープ装置にロード
**LODIMGコマンド**で③で作成したイメージカタログ項目を①の仮想テープ装置にマウント・ロードします。作業する前に①の仮想テープ装置をオンに構成変更しておきます。VRYCFGコマンドでもできますがここではWRKCFGSTS *DEV TAPVRT* の画面からOPT欄に1=オンを入れてオンにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/281ffd62-c5b4-7f61-f7ee-d5e27c71226a.png)

`LODIMGCLG IMGCLG(CLG01) DEV(TAPVRT_G)`

仮想テープ装置にイメージカタログをロードすると**WRKIMGCLGコマンド -> OPT.12**でマウントされたカタログの状況が確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/9a186e2c-0b53-e336-2585-e977214b95b0.png)

※この状態でDSPTAP TAPVRT_G コマンドを実行するとバックアップテープの中身を見れます。作成したばかりですと当然ですが中身はブランクです。

### ⑤オブジェクトをバックアップする
任意のSAVEコマンド(SAVLIB, SAVOBJコマンド)を使用してバックアップします。
以下の例ではSAVLIB GOMALIB バックアップした後、DSPTAP TAPVRT_G コマンドで中身を確認したものです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/ed07ff26-3b23-1a34-dcf8-6a6714981b0f.png)


また、IFSオブジェクトのVOL001のサイズを見ると下記のように増えています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/ce3b99f8-e56c-04ff-40a4-a47ffb1bf307.png)


## 参考ページ
**IBM i インフォセンター：[仮想磁気テープ記憶装置をセットアップする](https://www.ibm.com/docs/ja/i/7.5?topic=tape-setting-up-virtual-storage)**
※上記マニュアルにはNavigator for i からGUIで作成する方法も記載があります。

Qiitaにも別記事がありました。
こちらの方が作成手順がていねいでわかりやすいかも。
**[IBM i駆け出し日記：仮想テープの作り方と使い方](https://qiita.com/koga39chan/items/73dc0a2771125e43983f)**