PowerVS IBM i 日記(57): 新しいストレージ・ティア -「Tire 0」と「Fixed IOPS」


 # 新しいストレージ・ティア

 日本語のDocsにはまだ記載が無いようですが、英文のDocsにはPowerVS の「[Storage tiers](https://cloud.ibm.com/docs/power-iaas?topic=power-iaas-about-virtual-server&locale=en#storage-tiers)」として`Tier 0`と`Fixed IOPS`が追加されています。
 `Tier 0` は、25 IOPS/GB、`Fixed IOPS` はサイズにかかわらず 5000 IOPS の能力があります。
I/O インテンシブ の IBM i を特に少ないストレージ容量で利用する場合に有用でしょう。

| Tier level|IOPS |
|:-:|:-:|
|Tier 0    | 25 IOPS/GB |
|Tier 1    | 10 IOPS/GB |
|Tier 3    |  3 IOPS/GB | 
|Fixed IOPS|  サイズにかかわらず 5000 IOPS | 

なお、`Fixed IOPS` のサイス上限は 200 GB です。これは `Tier 0` の 200 GB と同じIOPSです(200 GB x 25 IOPS/GB = 5000 IOPS)。
200 GB以上のストレージで高い IOPS が必要な場合は `Tier 0` をご利用ください。
もっとも、200 GB 以下の 複数の `Fixed IOPS` を同じ ASP に追加する方法でもより高い IOPS を利用することもできます。

現在 英文 Docs には OSA21 で利用可能であることの記載はありますが TOK04 の言及がありません。これは Docs の更新が遅れているだけで OSA21 と同様に TOK04 でも利用可能になっています。 

 # Boot ボリュームとして利用可能 

 これまでの Tier 1 / Tier 3 と同様にBoot ボリュームとして利用可能です。 

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/feb637eb-58e8-b711-1443-fca4040b3184.png)

自分のアカウントの`ブート・イメージ`に取り込まれた IBM Stock イメージ は「層:任意」「ストレージ・プール:任意」と表示されていました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/60727153-b4b6-b5a7-b45c-ca7e5eba6612.png)

[昨年 3 月の時点](https://qiita.com/6onoda/items/5c439155d7cb251e5686#%E3%83%96%E3%83%BC%E3%83%88%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E3%81%AE%E7%AE%A1%E7%90%86)では、層は最初にそのイメージから起動したインスタンスのもの、ストレージ・プールも特定のものが表示されていました。

# パフォーマンステスト

Tier の違いが実際のパフォーマンスにどのように影響するかをテストしてみます。

IBM Stock イメージから払い出した 100 GB の Boot ボリュームのみのインスタンスを各 Tier で用意します。
今回は TOK04 に S922、CPU 0.25 コア、メモリー 2 GiB という最小構成で用意しました。

起動後、確認すると 100 GB(実質 95.4GB) の容量で構成され、半分以上が使用済みです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/85bc9bc8-3680-1849-b4c1-106f51c431cc.png)

ここに 40 GB の書き込みを行います。
方法は CRTPF で レコード長 25,000 バイト、レコード数 1,600,000 の物理ファイルを作成します。
25,000 x 1,600,000 = 40,000,000,000 ですね。
`ALLOCATE(*YES)` で作成すると、実際にその領域がストレージ上に展開されます。

具体的なコマンドは、このようになります。

```
CRTPF FILE(QGPL/P1) RCDLEN(25000) SIZE(1600000) ALLOCATE(*YES)
```

これを、SBMJOB でバッチ実行してジョブログから時間を確認します。

```
SBMJOB CMD(CRTPF FILE(QGPL/P1) RCDLEN(25000) SIZE(1600000) ALLOCATE(*YES)) LOG(4 0 *SECLVL) LOGCLPGM(*YES) LOGOUTPUT(*JOBEND)
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/cebea806-3364-aac1-8437-e6c000c91235.png)

実行後、システム利用率が 93% を超えています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/d100462b-ff98-6b2e-2817-62334ef911ae.png)

約 40GB の物理ファイルが作成されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/2fa93e83-fd5b-ae1c-801b-77ca36212e11.png)

ジョブログで、CRTPF の開示要求時刻から、メンバーの追加が完了するまでの時間を確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/00325bb2-49b0-1091-b758-9e9a7b5fc901.png)

結果は、下記のとおりです。
`Tier 3`を 1 にした IOPS 比と処理性能比(Tier 3の何倍速く処理できたか)も計算してみました。論理上の IOPS より多少良い結果が出ました。

|   |容量(GB)|IOPS/GB|IOPS|IOPS比|処理時間(秒)|処理性能比|
|:-:|:-:     |:-:|    -:|     -:|          -:|       -:|
|Tier 0|100|25|2500|8.33|17.334664|8.91| 
|Tier 1|100|10|1000|3.33|45.289091|3.41| 
|Tier 3|100|3|300|1.00|154.463180|1.00| 
|Fixed|100|N/A|5000|16.67|8.205620|18.82| 

# 後から Tier の変更が可能

作成したストレージ・ボリュームは、後から Tier の変更が可能です。

一つ目は`ストレージ・ボリューム`の「編集」から変更する方法です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/85982d42-453f-ffa9-d470-60c1c9babcde.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/f7ccb79a-2611-1cd7-f70e-3c7ca1adb50b.png)

もう一つは`仮想サーバー・インスタンスの詳細`で`接続されているボリューム`のリンクをクリックし、編集する方法です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/1dccd222-55bc-732a-dff1-40c5070065e2.png)

IBM i の稼働中に `Tier 1` に変更してみました。
メッセージが表示され、一瞬、ブート可能が「オフ」になりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/bacde19a-9c41-bd10-35d7-305f0cb9a196.png)

その後、直ぐにブート可能が「オン」になりました。
コンソールでの操作の中断はなく、QSYSOPR にも特別なメッセージは出ていません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/a6f8b927-756d-0feb-0151-fa409863b86c.png)

## 新しい Tier モデルではストレージ・プールが共通

どうして、このような変更が停止せずにできるのでしょうか?
以前から、PowerVS をご利用されている方は `Tier 1` は NVMe が `Tier 3` は SSD が使われていて、全く異なるストレージ・プールだと聞かれたことがあるかもしれません。

しかし、今回デプロイした4つのインスタンスは、同一のストレージ・プールを使っています。
単に、IOPS の制限値を変更するだけで Tier を切り替えているようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/23cb8427-c9b6-ba2c-49ef-2f9ce775285e.png)

# Boot イメージと Tier

## ユーザー作成の Boot イメージの Tier は変更できない

`Tier 1` のインスタンスから Boot イメージをエクスポートしました。Tier 共通のストレージ・プールにエクスポートされましたが、Tier の変更はできませんでした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/32266f7c-aceb-b13d-429d-64695a7c2d17.png)

## ユーザー作成の Boot イメージでも別 Tier のインスタンスのデプロイが可能

以前、[自分のイメージからインスタンスを作成](https://qiita.com/6onoda/items/2bd5f45206ccbbd657b4#%E8%87%AA%E5%88%86%E3%81%AE%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E3%81%8B%E3%82%89%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%82%92%E4%BD%9C%E6%88%90)した時は、イメージの Tier でしかデプロイできず、異なるストレージ・タイプのインスタンスを作成したい場合は、いったん ICOS にエクスポートし、ICOS から 再度インポートする時に、希望するストレージ・タイプを指定して対応していました。

今回の共通Tierストレージプールの場合、別のTierにデプロイする事も可能になっていました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/9f585860-d83e-e748-a146-80d549503e42.png)

## イメージの課金を削減するために

仮想サーバーのキャプチャー・エクスポート先として ICOS を指定するのが、一番安価なのですがイメージカタログに置きながらできるだけ安くしたいという場合もあるかもしれません。
この場合、下記のような手順を実行するとイメージへの課金を削減できると思います。

1. インスタンスのストレージボリュームの Tier を `Tier 3` に変更する
1. キャプチャー・エクスポートを実行する
1. ストレージボリュームの Tier を元に戻す

---
当日記のIndexは[こちら](https://qiita.com/6onoda/items/f146c78c0c1bbe905a42)です。

---
許可の無い転載を禁じます。
この記事は筆者の個人的な責任で無保証で提供しています。
当記事に関してIBMやビジネスパートナーに問い合わせることは、固くお断りします。