LoginSignup
7
2

More than 3 years have passed since last update.

Oracle Cloud Infrastructureでボリュームのオンラインリサイズが可能になったよ

Last updated at Posted at 2020-06-02

1. 新機能ボリュームのオンラインリサイズ

いままでボリュームのサイズを変更するには、ボリュームをオフラインにする必要があった。2020年6月にリリースされた新機能によって、ダウンタイムなしにボリュームのサイズを変更できるようになった。ニュースリリースのブログは以下のとおり。

ブロック・ボリュームとブート・ボリュームの両方に対応し、LinuxだけでなくWindowsでも利用できる。とくにブート・ボリュームは手順が複雑だったのでメリットは大きい。

1-1. 前提条件

  • Oracle Cloud Infrastructure Compute
  • Linux, Windows。ただしWindowsの詳細手順はマニュアル参照

2. ボリュームの拡張をふりかえる

新機能によって何が変わるかを理解するために、いままでの機能と比較してみよう。なお、筆者は以前サイズ変更の記事を書いている。

2-1. ボリュームの拡張方法の種類

いままでボリュームの大きさを変更するには、次の1から3の方法が利用できた。今回新たに4の方法も可能になった。

  1. 既存のボリュームをオフラインにして拡張する
  2. ボリュームのバックアップを、より大きなサイズのボリュームにリストアする
  3. 既存のボリュームを、より大きなサイズのボリュームにクローンする
  4. 既存のボリュームをオンラインのまま拡張する(New)

新しい機能ではボリュームをオフラインにするなどのダウンタイムが不要になるのに加え、手順も大幅に簡略化できる。

2-2. ボリュームの拡張手順

ブロック・ボリュームとブート・ボリュームの拡張手順を説明したのが以下の表だ。ボリュームをデタッチする必要が無いので、オンラインのまま作業を継続できる。

ブロック・ボリュームの場合

No 従来のオフラインリサイズ 新しいオンラインリサイズ
1 ボリュームのアンマウント
2 ボリュームのデタッチ
3 ボリュームの拡張 ボリュームの拡張
4 ボリュームのアタッチ
5 ボリュームの再スキャン
6 パーティションの拡張 パーティションの拡張
7 ファイルシステム破損の確認 ファイルシステム破損の確認(省略可)
8 ボリュームのマウント
9 ファイルシステムの拡張 ファイルシステムの拡張

※xfs_repair/fsckによるファイルシステム破損の確認は省略できる。ただしファイルシステムが破損していると、9の「ファイルシステムの拡張」に失敗する。そのときにはボリュームをアンマウントしてxfs_repairを実行する必要がある。

ブート・ボリュームの場合

No 従来のオフラインリサイズ 新しいオンラインリサイズ
1 インスタンスの停止
2 ボリュームのデタッチ
3 ボリュームの拡張 ボリュームの拡張
4 ボリュームの再スキャン
5 ボリュームのアタッチ
6 インスタンスの起動
7 パーティションの拡張 パーティションの拡張
8 ファイルシステムの拡張 ファイルシステムの拡張

※ブロック・ボリュームと同様にxfs_repair/fsckの問題はある。エラーでファイルシステムを拡張できないときは、オフラインの方法を試みる。

3. 実際に変更してみる

それでは実際に試してみよう。新しい方法ではブート・ボリュームでもインスタンスを停止する必要はない。そのためブート・ボリュームでもブロック・ボリュームでも途中まで手順は同じだ。異なるのはパーティション拡張以降の手順である。

  1. 管理コンソールでブート・ボリュームもしくはブロック・ボリュームを選択し、[Edit Size or Performance]をクリックして変更画面を表示する。 blockvol_resize06.PNG
  2. 変更後の大きさを入力して[Save Changes]をクリックする。 blockvol_resize07.PNG
  3. すると再スキャンに必要なコマンドが表示されるのでコピーしておく。サイズ変更は瞬間に終わる。 blockvol_resize08.PNG
  4. 該当のインスタンスに接続して確認する。ボリュームサイズの変更は直ちに反映されるが、OSでは認識していないので確認できない。
$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   0   50G  0 disk       ★50Gのまま
└─sdb1   8:17   0   50G  0 part /mnt/vol01
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/ef

4.さきほどコピーした再スキャンのコマンドを実行する。

$ sudo dd iflag=direct if=/dev/sdb of=/dev/null count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.0012274 s, 417 kB/s

$ echo "1" | sudo tee /sys/class/block/sdb/device/rescan
1

4.再スキャンによってボリュームサイズが更新された。しかしパーティションサイズは変更されていない。

$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  100G  0 disk        ★100Gに変更された
└─sdb1   8:17   0   50G  0 part /mnt/vol01 ★パーティションは50Gのまま
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

5.これ以降の手順は従来と同じだ。以下のリンクを参考に、パーティションとファイルシステムの拡張を行ってほしい。

Qiita記事

OCIマニュアル

3. おわりに

いやー、便利になったものである。AWSのEBSでも2017年にはオンライン変更ができたのだから、今後はより機能的に近づいていくのだろう。そういえばOracle Databaseに対して、PostgreSQLなどの機能が近づいているのと同じ現象だろう。

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2