1. はじめに
ブロック・ボリュームの新機能としてElastic Performanceが追加された(2019/11/14)。ブロック・ボリュームは、Computeのコア・コンポーネントなので、どのようなものなのか調べてみた。
- Oracle Cloud Infrastructure Blog: Elastic Performance with the Next Generation Block Storage on Oracle Cloud
- [OCIマニュアル: Block Volume Elastic Performance]
(https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/blockvolumeelasticperformance.htm)
2. Elastic Performanceとは
Elastic Performanceとは、ブロック・ボリュームの性能にLower Cost、Balanced(デフォルト)、Higher Performanceという三つの性能レベルを導入することで、コスト最適化を図る機能だ。
性能数値の違いは表を見てもらうとして、おもな違いは以下のとおり。
- Balanced
- 従来と同じデフォルト設定で、ほとんどのワークロードに適している。
- Higher Performance
- 大規模データベースなど、高いIOPS性能を求められるときに適している。
- Lower Cost
- ログやストリーミング、DHWなど、IOPSよりもスループットを重視する用途に適している。
下表はマニュアルから引用
2021/06/10追記
上記に加え、現在はUltra High Performanceが追加されています。
3. Elastic Performanceの使いこなし
スペックだけ見せられても「フーン」で終わってしまうかもしれない。使いこなしを考えるには、ストレージの性能特性や価格も合わせて考える必要がある。
3-1. ストレージ性能に関する基礎知識
基礎知識として、以下のことを理解する必要がある。
- ストレージの性能指標には、IOPS(ランダム・アクセス指向)と帯域幅/スループット(シーケンシャル・アクセス指向)がある
- VMシェイプでは、シェイプごとにネットワークの帯域幅が制限されている。例えば、VM.Standard2.1(1 Gbps)、VM.Standard2.2(2 Gbps)。Compute Shapes→
- StandardIOシェイプは外部ストレージを利用しているので、ストレージの最大スループットはシェイプに依存する。例えば、高いスループットが必要なときは、CPUが低使用率でも大きなシェイプに変更する必要がある
- IOPS性能はストレージ・サイズに依存する。デフォルトは1GBytesあたり60 IOPS
3-2. ストレージ価格も合わせて考える
次に価格も合わせて考えてみよう。比率列は、Block Volume(Balanced)を100としたときの割合である。
ストレージの種類 | 1GB単価/月 | 比率 |
---|---|---|
Block Volume (Balanced) | $ 0.0425 | 100 |
Block Volume (Higher Performance) | $ 0.0595 | 140 |
Block Volume (Lower Cost) | $ 0.0255 | 60 |
Object Storage | $ 0.0255 | 60 |
Archived Storage | $ 0.0026 | 6 |
Archived Storageは直接アクセスできないので、そもそも用途が異なる(事前にリストアが必要)。したがって比較対象から除外する。
注目すべきはLower Costだ。Object Storageと同じ価格になっている。Balancedと比べてIOPSは開きがあるが、スループットの差は少ない。ログやDHWなどのシーケンシャル・アクセス・データや、安価なので、あまり使用しないデータに適している。
Level | IOPS/GB | MAX Throughput/GB |
---|---|---|
Lower Cost | 2 | 240 |
Balanced | 60 | 480 |
次にHigher Performanceだ。スペックは以下のとおり。Balancedと比べて、性能は1.25倍になり、価格は1.4倍になる。スループットはシェイプに依存するので、高いIOPSが必要なときに適している。
Level | IOPS/GB | MAX IOPS | MAX Throughput/GB |
---|---|---|---|
Higher Performance | 75 | 35,000 | 600 |
Balanced | 60 | 25,000 | 480 |
最後にObject StorageとLower Costの使い分けだ。価格は同じだが、特性は大きく異なる。
Object Storageの特徴は「容量制限が無い」「可用性が高い」「比較的安価」「REST APIでアクセス」などがある。これらのメリットがある反面、一般的なアプリケーションからはアクセスできない、もしくはアクセスしづらいことが課題だ。
一般的なアプリケーションからオブジェクト・ストレージ上のデータに直接アクセスするには以下の方法がある。前者は安定性に課題があり、後者は追加のサーバーが必要になる。
- goofysやs3fs-fuseのような、S3互換マウントツールを使用する
- Storage Gatewayを利用し、NFSサーバーのようにアクセスする
バックアップやログ、画像など、アクセス頻度が低いものや、高可用性が必要なデータが適している。
3.3. コストの計算方法
Elastic Performanceによって、Block Volume Performance Units(VPUs)という価格が導入された。先ほどは説明しないで単価を紹介したが、実際の計算式は次のとおり。
一カ月のコスト
=ストレージサイズ[GB]×ストレージ単価+ストレージサイズ[GB]×VPUs値×VPUs単価[GB]
=ストレージサイズ[GB]×(ストレージ単価+(VPUs値×VPUs単価[GB]))
Balancedの場合、VPUs値が10なので、1000GBのときは以下のように計算できる。
1000 * ($0.0255 + (10 * $0.0017))
= 1000 * ($0.0255 + $0.017)
= 1000 * ($0.0425)
= $42.5
Cost Estimatorでは、次のように入力する。
3-4. ストレージの使い分けまとめ
これまでの検討内容をまとめると、次のようになるだろうか。
- 通常 → Block Volume (Balanced)
- アクセス頻度が少ない、シーケンシャル中心 → Block Volume (Lower Cost)
- 高いIOPSが必要 → Block Volume (Higher Performance)
- 高可用性・低価格 → Object Storage
- 高いスループット/帯域幅 → シェイプのアップグレード
4. 管理コンソールで確かめる
ボリュームのパフォーマンスは「新規作成時に指定」もしくは「既存のボリュームを変更」が可能だ。管理コンソールでブート・ボリュームもしくはブロック・ボリュームを選択し、**[Edit Size or Performance]**をクリックすると変更画面を表示できる。
ブロック・ボリュームでは、Lower Cost、Balanced、Higher Performanceが選択できる。
ブート・ボリュームではBalanced、Higher Performanceが選択できる。
それぞれの画面で**[Save Changes]**をクリックすると動的に設定を変更できる。インスタンスの再起動は不要だ。
6. Auto Tuneについて
2020年7月からAuto Tune機能が付いた。これを有効にすると、ボリュームをデタッチすると自動でパフォーマンスがLower Costに変更されコスト削減できる。デタッチしたブロックボリュームを長期間保持するユースケースは少ないと思うが、そのようなときに便利だ。
7. まとめ
- ブロック・ボリュームの新機能Elastic Performanceはコスト最適化に役立つ
- 新たにLower Cost、Balanced(デフォルト)、Higher Performanceという三種類の性能レベルが導入
- 新規作成ボリュームだけで無く、既存のボリュームも動的に変更できる
- Lower Costは、Object Storageと同じ価格で、シーケンシャル・アクセス・データに適している
- Higher Performanceは、IOPS性能が必要なときに適している。性能は1.25倍、価格は1.4倍