IBM Cloud VPCのイメージ関連所要時間

# はじめに
IBM CloudのVPCで作成したインスタンスのイメージをICOS(IBM Cloud Object Storage)にExportできるようになったのが2023年4月になります。

https://qiita.com/y_tama/items/09878971d718f1a99397

バックアップの運用等で検討される方もおられると思いますが、気になるのはその所要時間が、システム運用にマッチするかどうかと思います。

というわけで、以下のステップでどの程度時間がかかるのか計測してみました。
1. 停止したインスタンス(サーバ)からイメージの作成
1. 作成したイメージをICOSにExport
1. ICOSのイメージをVPCのイメージにImport
1. Importしたイメージからインスタンス(サーバ)の作成

:::note warn
こちらの計測時間はあくまで私が確認した実績値であり、IBM Cloudで保証された時間ではない点に注意してください。
:::

# 1.停止したインスタンス(サーバ)からイメージの作成
利用したサーバ情報は以下になります。
- リージョン：東京
- プロファイル：2 vCPU | 4 GiB 
- OS：Ubuntu Linux 22.04 LTS Jammy Jellyfish Minimal Install (amd64)
- Boot Volume：100GB
- Volume使用状況：7GBほどシステムで利用、90GB以上の空きがある状態

## 計測方法
サーバを停止した状態でAPIからイメージの作成を指示。APIからAcceptedの応答が得られた時間を開始時刻としています。
プログラムで5秒おきにイメージの一覧で作成中のイメージ情報を取得し、イメージのステータスが `available` になったタイミングの時刻を終了時刻として計測しています。(イメージ作成中は `pending` のステータスになります)

## 計測結果
イメージサイズは `19GB` になりました。

||経過時間|経過秒数|容量(GB)|イメージ作成速度(MB/秒)|
|---|---|---|---|---|
|1|0:21:54|1314|19|14.46|
|2|0:22:32|1352|19|14.05|
|3|0:20:04|1204|19|15.78|
|4|0:22:01|1321|19|14.38|
|5|0:22:23|1343|19|14.15|

割とスピードは安定しているかと思いますが、この作業が一番時間がかかりますね。

# 2.作成したイメージをICOSにExport
利用したICOSの情報は以下になります。
- ロケーション：jp-tok (Regional)
- ストレージクラス：Standard

## 計測方法
APIからイメージのICOSへのExportを指示。APIからAcceptedの応答が得られた時間を開始時刻としています。
プログラムで5秒おきにICOSのオブジェクト一覧で、イメージのオブジェクトの `Etag`情報が作成されたタイミングの時刻を終了時刻として計測しています。(`Etag`ではオブジェクトのMd5ハッシュ値が格納されるため、全ての情報がICOS側に保存されたと判断できます)

## 計測結果
||経過時間|経過秒数|容量(GB)|Export速度(MB/秒)|
|---|---|---|---|---|
|1|0:00:36|36|19|527.78|
|2|0:00:34|34|19|558.82|
|3|0:00:34|34|19|558.82|
|4|0:00:33|33|19|575.76|
|5|0:00:35|35|19|542.86|

めっちゃ早いですね。想像の10倍くらい早かったです。

# 3.ICOSのイメージをVPCのイメージにImport

## 計測方法
APIでICOSからイメージファイルのImportを指示。APIからAcceptedの応答が得られた時間を開始時刻としています。
プログラムで5秒おきにイメージの一覧で作成中のイメージ情報を取得し、イメージのステータスが `available` になったタイミングの時刻を終了時刻として計測しています。(再掲：イメージ作成中は `pending` のステータスになります)

## 計測結果
||経過時間|経過秒数|容量(GB)|Import速度(MB/秒)|
|---|---|---|---|---|
|1|0:12:11|731|19|25.99|
|2|0:14:53|893|19|21.28|
|3|0:14:20|860|19|22.09|
|4|0:14:12|852|19|22.30|
|5|0:14:57|897|19|21.18|

ICOSにExportしたバックアップから復元という場合は、ここで一番時間がかかりそうな部分ですね。なお1ショット目が早いのは日本時間の夜中2時くらいに実施したものなので、その影響があるかもしれません。2～5ショットは平日日中に実施しました。

# 4.Importしたイメージからインスタンス(サーバ)の作成
作成するインスタンスの情報は以下です。元と同じです。
- リージョン：東京
- プロファイル：2 vCPU | 4 GiB 
- OS：Ubuntu Linux 22.04 LTS Jammy Jellyfish Minimal Install (amd64)
- Boot Volume：100GB

## 計測方法
APIで先ほどICOSからImportしたイメージからインスタンス(サーバ)の作成を指示。APIからAcceptedの応答が得られた時間を開始時刻としています。
プログラムで1秒おきにインスタンスの一覧で作成中のインスタンス情報を取得し、インスタンスのステータスが `running` になったタイミングの時刻を終了時刻として計測しています。(インスタンス作成中は `starting` のステータスになります)

## 計測結果
||経過時間|経過秒数|
|---|---|---|
|1|0:00:05|5|
|2|0:00:06|6|
|3|0:00:06|6|
|4|0:00:06|6|
|5|0:00:05|5|

はやーい。
さすがVPC環境と言いたいくらいに早いですね。プログラムも最初は他と同じように5秒おきで動かしていましたが、あまりに早いので1秒おきに動作するようにしました。

# 余談
今回はインスタンスもICOSも同じ東京で行いましたが、例えばバックアップになるExport先は少しでも単価の安い海外のDCを利用するのも手ですよね。
というわけで、1ショットだけ、イメージをダラスのICOSにExport、またダラスのICOSから東京のVPCのイメージにImportしてみました。

## イメージをダラスのICOSにExport
||経過時間|経過秒数|容量(GB)|Export速度(MB/秒)|
|---|---|---|---|---|
|1|0:04:04|244|19|77.87|

Export速度で言うと、約1/8程度になりました。東京での時間と比べると遅い感はありますが、使えないわけではない時間にも思いますね。

## ダラスのICOSからイメージをImport
||経過時間|経過秒数|容量(GB)|Import速度(MB/秒)|
|---|---|---|---|---|
|1|0:16:43|1003|19|18.94|

こちらはExportほど大きな影響はなく、東京と比べて20%ほど遅くなっている、というところでしょうか？Exportは時間がかかりますが、ICOSに保管さえしてしまえば、ダラスからのインスタンスの再作成も、極端な時間差なく復元できるように思えます。

# さいごに
いかがでしたでしょうか？実績値の紹介なので、何かを担保するわけではないですが、システム運用を検討する上で参考になりそうな情報を紹介させて頂きました。
サードパーティのバックアップツールはもちろん便利ですが、IBM Cloudで提供されている標準のツールもうまく利用して頂けたら幸いです。