OCIのブロックボリュームをリストアする

OCIでインスタンスにアタッチしたブロックボリュームのリストア手順を記載していきます。

## 前提

* ブロックボリュームはインスタンスにアタッチ済みである。

## 実施手順

大まかな流れは以下のようになっています。

1. ブロックボリュームのバックアップを取得
2. バックアップから新しいブロックボリュームを作成
3. 作成したブロックボリュームをインスタンスにアタッチ


### 1. ブロックボリュームのバックアップを取得

今回のブロックボリュームは以下のような状態になっています。

* ボリューム名 `restore_test`
* /mnt/demopoint にマウント
* demopoint 配下に restore.txt を作成

ブロックボリュームのバックアップは手動での取得とポリシーによる自動取得の2種類があります。
今回は手動での取得を実施します。
ポリシーベースのバックアップについては参考ドキュメントを参照ください。

OCIのコンソール画面から OCIコンソール > ブロックボリューム > 対象のブロックボリューム(今回はrestore_test) > 左下のリソース内の ブロック・ボリュームのバックアップ と遷移していきます。
画面内の `ブロック・ボリュームのバックアップの作成` を実行します。

![restore1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62936/17a19315-b437-aa14-25f2-fc0b19d82d10.png)

バックアップの名称を決定し、今回は完全バックアップを選択します。

![restore2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62936/d9338a27-3f9b-2d3f-2aa4-5b37bfe2c9df.png)

バックアップが取得できました。

![restore3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62936/0c4c445e-c128-07be-ca19-838a8ab0b2fb.png)




### 2.バックアップから新しいブロックボリュームを作成

取得できたバックアップから新しいブロックボリュームを作成します。
バックアップの右側の `・・・` をクリックし、ブロック・ボリュームの作成を選択します。

![restore4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62936/31dd8e79-24fb-197d-ae0b-039c77eb0951.png)

名称などの必要な情報を入力しブロックボリュームを作成します。

リストアしたブロックボリュームの詳細からソースタイプが `volumeBackup` なのが確認できます。
これでバックアップからのリストアは完了です。

![restore5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62936/c5ab7e77-9e12-5c76-bd99-1a2d05c2fd95.png)


### 3. 作成したブロックボリュームをインスタンスにアタッチ 

リストアしたブロックボリュームは通常のブロックボリュームと同様に扱えるためアタッチします。
ただし、1点注意点としてリストアもとになったブロックボリュームがアタッチされているインスタンスにはアタッチできないです。
参考ドキュメントの「新しいボリュームへのバックアップのリストア」にも記載があります。

アタッチは別のインスタンスに対して行います。

OCIコンソール > コンピュート > インスタンス > 対象のインスタンスを指定 > 左下のリソースのアタッチされたブロック・ボリューム を選択し、ブロック・ボリュームのアタッチを選択を押下、先程リストアしたブロックボリュームを指定します。

アタッチ完了後に右側の `・・・` をクリックし、iSCSIコマンドおよび情報を選択しコマンドをコピーします。

インスタンスにSSHでアクセス、コピーしたiSCSIコマンドを実行します。

実行後 lsblk で アタッチされていることを確認します。

```
[opc@instance-20190725-2 ~]$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  100G  0 disk
sda      8:0    0 46.6G  0 disk
├─sda2   8:2    0    8G  0 part [SWAP]
├─sda3   8:3    0 38.4G  0 part /
└─sda1   8:1    0  200M  0 part /boot/efi
```

また、今回は既にファイルシステムを作成したボリュームのバックアップからリストアしているため、ファイルシステムの作成はいりません。
念の為ファイルシステムが作成されているか確認します。

```
[opc@instance-20190725-2 ~]$ sudo parted -l
モデル: ORACLE BlockVolume (scsi)
ディスク /dev/sda: 50.0GB
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: gpt

モデル: ORACLE BlockVolume (scsi)
ディスク /dev/sdb: 107GB
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: loop
ディスクフラグ:

番号  開始   終了   サイズ  ファイルシステム  フラグ
 1    0.00B  107GB  107GB   xfs
```

ファイルシステムが作成されている確認が取れたので、 `/etc/fstab` を編集し、 `mount` を実行します。
今回は `/mnt/demoafter` に マウントします。
マウント実行後以下のようになっているはずです。

```
[opc@instance-20190725-2 ~]$ df -hT
ファイルシス   タイプ   サイズ  使用  残り 使用% マウント位置
devtmpfs       devtmpfs   7.2G     0  7.2G    0% /dev
tmpfs          tmpfs      7.3G     0  7.3G    0% /dev/shm
tmpfs          tmpfs      7.3G   17M  7.2G    1% /run
tmpfs          tmpfs      7.3G     0  7.3G    0% /sys/fs/cgroup
/dev/sda3      xfs         39G  1.9G   37G    5% /
/dev/sda1      vfat       200M  9.7M  191M    5% /boot/efi
tmpfs          tmpfs      1.5G     0  1.5G    0% /run/user/1000
/dev/sdb       xfs        100G   33M  100G    1% /mnt/demoafter
```

`/mnt/demoafter` の配下にrestore.txt が配置されているのが確認できたらリストア完了です。


## 参考ドキュメント

[新しいボリュームへのバックアップのリストア](https://docs.oracle.com/cd/E97706_01/Content/Block/Tasks/restoringavolumefromabackup.htm)

[ポリシー・ベースのバックアップ](https://docs.oracle.com/cd/E97706_01/Content/Block/Tasks/schedulingvolumebackups.htm)