OCIの仮想マシンのBlock Volumeを縮小する

# はじめに
「先日お客様より運用中の仮想マシンにアタッチしているBlock Volumeをあまり使っていないのですがサイズを小さくできませんか?」とご質問を受けました。そのため今回はその質問を実現する運用方法を考えて実施してみたので紹介します。

# 目次
1.Block Volumeのサイズ変更
2.今回の構成
3.注意点
4.移行の実施
5.参考ドキュメント

# 1.Block Volumeのサイズ変更
Block Volumeについての拡大・縮小についてはOracleにてBlock Volumeの詳細資料に記載があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/afe0e1c6-fd3f-8d39-16c0-6cb3bbd6e717.png)
[参照][OCI技術資料 : ブロック・ボリューム 概要](https://speakerdeck.com/ocise/ociji-shu-zi-liao-burotukuboriyumu-gai-yao?slide=9)

オンライン・オフラインともにOCI上から拡大については機能として存在しています。縮小については原則不可となっておりOCI上からはできない仕様となっています。そのため今回はサーバー内のストレージ設定での縮小を実施していきます。

# 2.今回の構成
実施していく運用方法は下記となります。サーバ内でのストレージ間のデータの移行となり、運用中Windows Serverに空き容量分を削ったBlock Volumeをアタッチして既存Block Volumeのデータをコピーします。その後Block Volumeの再設定と150GBの既存BLock Volumeを削除することで実質BloCk Volumeを縮小したことになる手順です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/db2683a3-d600-abf4-56f2-e9ae04ee745d.png)


# 3.注意点
今回の方法はサーバ内のデータはすべてコピーできる前提としてデータの紐づけやストレージの権限、バックアップも再設定が可能なサーバである前提で実施しています。そのため、実際に試す場合は先ほどの事項に注意し自己責任で実施をお願いいたします。

# 4.移行の実施
OCIのコンソールから[ストレージ]→[ブロック・ボリューム]で選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/b5fc0661-4d64-71de-b87f-1898ae86c55f.png)
[ブロック・ボリュームの作成]を選択して必要な分のみのボリュームサイズを入力した後[ブロック・ボリュームの作成]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/7711f65c-3f91-62bf-23ce-ab2bc9a4c7ba.png)
運用中の[Windows Server]を選択します。
OCIのホームに戻り[コンピュート]→[インスタンス]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/e107364b-81f1-02f7-ba61-df8723804af9.png)
インスタンスで下の方を見ると「アタッチされたブロックボリューム」があるので選択します。[ブロックボリュームのアタッチ]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/049d8c87-e64e-c7b2-22df-f16b8b265954.png)
アタッチするボリュームを選択します。それ以外はデフォルトのままで大丈夫です。そのまま「アタッチ」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/c0c2799d-e9ed-3ec6-b9ac-d8ef34b0c723.png)
アタッチが完了したら右側にある点３つのアイコンクリックし、「iSCSIコマンドおよび情報」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/ffbb89bd-cdcb-e065-55f0-d88358114ad8.png)
IPなどの情報が参照できます。 ここのIPとポートはサーバ内で利用するためコピーしてメモ帳などに貼り付けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/c8947db3-f69b-c2f3-55b5-32d4218c2af2.png)
windowsインスタンスにRDPで接続するためVCNのセキュリティリストにRDPのポート許可をしておくことを実施しておいてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/e9349b9f-47dd-83f0-07e2-f6b74e8274c3.png)
RDP接続でWindowsインスタンスにサインインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/d4d63345-e1d5-e861-3f6f-9fad197bf4ed.png)
WindowsサーバにRDP接続したら Block Volumeを接続するためサーバーマネージャーを開き「ツール」から「iSCSIイニシエーター」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/11c66579-c2b6-746a-c459-9a13fd3f58de.png)
検出タブから「Discovery」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/b09923ef-3daf-f042-ba70-155f02756eab.png)

先ほどメモしたブロックボリュームのIPとポートを入力し「OK」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/ff68912f-52f7-f4ee-bc1d-028c10f4c895.png)
Addressが追加されたのが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/b6aeaf92-0d0e-45b2-80f5-1d19724dce0e.png)
「検出されたターゲット」に表示されたブロックボリュームを選択し、「Connect」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/4a454f30-5fc8-b566-5526-bf5686775c20.png)
そのまま「OK」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/d48fbde8-4cd0-4014-8e5c-e7e8b08b51de.png)
DefaultからConnectedにStatusが変化したことが確認できます。これで接続は完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/0667f909-fb8d-fc36-e629-f3a4463ec824.png)
次にVolumeを割り当てるため サーバーマネージャーの「サーバ」>「ディスク」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/cf6d6185-568d-c82d-138c-b1e901b397a1.png)
接続されたディスクから新しいドライブを割り当てるため、 ボリュームの中で右クリックし「New Volume」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/2ac53e7e-e1b8-58fa-a737-1fc8be866a75.png)
[next]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/ebed5526-c919-dee7-7163-5349ce8c7f5f.png)
サーバとディスクで、先ほどアタッチしておいたディスクを選択し、「Next」 を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/9ed9f890-55b8-8829-c8c6-ad85328df137.png)
確認警告がポップアップされますがそのまま「OK」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/d80c212d-7b99-ac74-3434-2b5162d29ae6.png)
ディスク容量のうち何GBを利用するか聞かれるので設定します。 ここでは100GBアタッチしたディスク全部を新しいドライブにするつもりなので このまま「Next」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/6fa22d05-1706-2e60-fa2c-2f174022aa8d.png)
今回は移行後ストレージを分かりやすくするためxドライブではなくsmallというドライブ名で入力しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/df32d53b-6aa9-dafa-cd7a-c822e1cef172.png)
ファイルシステムの設定もそのまま「Next」 最後に確認画面が表示されるので「Create」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/576917d2-33c9-fe24-24cc-fb2093c690e7.png)
すべて完了したら、「Close」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/b13ae6f1-d7c9-f720-e308-955af51dbb01.png)
次に新しく作成したSmall100GBディスクに既存の150GBディスクのデータをコピーしていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/16fdcd03-099f-22c6-eaa0-7928fd9d84d3.png)
無事コピーが完了しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/70fb9657-edff-0021-609f-4db847af205b.png)
コピー後の状態はDisk Managementを開くことで確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/5c818ba8-dd3e-8f87-3898-3076761536f8.png)
最後に既存のBlock volumeを削除していきます。サーバーマネージャーをもう一度開き「ツール」から「iSCSIイニシエーター」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/d91c0e1d-cad4-21b2-665f-38fdda704026.png)
既存のBlock Volumeを選択し[Dissconnet]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/29157d14-5d17-8221-8370-f099830906fe.png)
警告が出るので[Yes]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/fc4bdd70-9f4c-a5da-fb86-3241bc8840c4.png)
無事切り離されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/65b299d4-1133-bd74-a73e-e2fd1d1db681.png)
[Favorite Targets]項目から[Remove]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/864260f1-1bb2-dcdf-d33a-228aa97c0716.png)
[Volume and Devices]項目から対象ボリュームを選択し[Remove]を選択します。これで安全にOCIコンソール上からデタッチができるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/51d237aa-5179-90ff-48a7-49d072e872c6.png)
[エクスプローラー]→[This PC]より最初のドライブが消えたことが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/49940ab5-38f1-1dd2-be8d-810b4182189a.png)
RDPを切断し、OCIコンソールを開きます。「コンピュート」をクリックし、「コンピュート」で、先ほどの「インスタンス」を選択します。
「インスタンスの詳細」ページで、「アタッチされたブロック・ボリューム」を選択します。
デタッチするボリュームの横にある「アクション」メニューをクリックし、「デタッチ」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/aa960cb1-2fda-8b1c-16e5-97348cab95f1.png)
[ボリュームのデタッチ]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/80344f48-5838-4775-8065-43874f6bdd27.png)
ブロックボリュームがデタッチされたことが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/8b4da1c3-d292-c30e-6730-f7f5c0666bff.png)
デタッチしたBlock Volumeを確認するため、[ストレージ]→[ブロック・ボリューム]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/0431e4c1-3f58-f4ed-cf17-997a46e3358e.png)
今回はもう利用しないため「アクション」メニューをクリックし、「終了」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/47f18fba-731c-aac6-b5a7-824ae406704b.png)
警告画面で再度[終了]を選択します。これでBlock Volumeサイズの縮小の完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/c78c8be5-8d9b-3c63-0acf-c7372a9f1762.png)

# 5.参考ドキュメント
下記ドキュメントに公式手順の記載があります。
・[ブロック・ボリュームのアタッチ](https://docs.oracle.com/ja-jp/iaas/Content/Block/Tasks/attachingavolume.htm)
・[Windowsインスタンスへのブロック・ボリュームの接続](https://docs.oracle.com/ja-jp/iaas/Content/GSG/Tasks/addingstorageForWindows.htm#:~:text=%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82-,%E3%83%9C%E3%83%AA%E3%83%A5%E3%83%BC%E3%83%A0%E3%81%B8%E3%81%AE%E6%8E%A5%E7%B6%9A,-%E3%83%9C%E3%83%AA%E3%83%A5%E3%83%BC%E3%83%A0%E3%81%8C%E3%82%A2%E3%82%BF%E3%83%83%E3%83%81)
・[ブロック・ボリュームのデタッチ](https://docs.oracle.com/ja-jp/iaas/Content/Block/Tasks/detachingavolume.htm)
・[インスタンスのブロック・ボリュームの切断](https://docs.oracle.com/ja-jp/iaas/Content/Block/Tasks/disconnectingfromavolume.htm)
・[LinuxインスタンスへのBlock Volumeのアタッチと接続](https://oracle-japan.github.io/ocitutorials/beginners/attaching-block-volume/)
・[Block Volumeをバックアップする](https://oracle-japan.github.io/ocitutorials/intermediates/taking-block-volume-backups/)