GCE(Google Compute Engine)のインスタンスのディスクを拡張する

GCEのインスタンスを使っていてディスク不足になること、たまにあります。

インスタンスを作成する時点でディスクサイズを適切に決定できればいいのですが、なかなかそうはいかないですし、ディスクを後から拡張できるのがクラウドの良さでもありますので、実際にディスク拡張を試してみます。

ディスク拡張手順

公式ドキュメントにも手順は記載されていますが、この記事では画面キャプチャ付きで紹介します。

「Compute Engine」→「ディスク」を選択します。

ディスクの一覧が表示されるので、今回拡張したいディスクをクリックします。

ディスクの詳細が表示されるので、「編集」をクリックします。

ディスクサイズを変更し、「保存」をクリックします。(画面キャプチャでは50GB→100GBに拡張)

すると、実際にディスクサイズが拡張されます!

ただ、ここまでの手順だけではOSから見えるディスクサイズは変わらないため、OS上での操作が必要となります。

ここから先の手順はDebianベースである点、ご了承下さい。

まずはOSから見えるディスクサイズを確認します。ここで確認する限りはまだ増えていません。

$ sudo df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
udev           devtmpfs  3.9G     0  3.9G   0% /dev
tmpfs          tmpfs     799M  8.4M  790M   2% /run
/dev/sda1      ext4       50G   43G  4.7G  91% /
tmpfs          tmpfs     3.9G     0  3.9G   0% /dev/shm
tmpfs          tmpfs     5.0M     0  5.0M   0% /run/lock
tmpfs          tmpfs     3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda15     vfat      124M  7.9M  116M   7% /boot/efi
tmpfs          tmpfs     799M     0  799M   0% /run/user/1002

ブロックデバイスを表示します。ディスクsdaは100GBとなっていますが、その下にぶら下がるパーティションsda1は50GBのままです。この後の作業でパーティションsda1を100GBに拡張したいです。

$ sudo lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda       8:0    0  100G  0 disk
├─sda1    8:1    0 49.9G  0 part /
├─sda14   8:14   0    3M  0 part
└─sda15   8:15   0  124M  0 part /boot/efi

作業用のツールをインストールします。

$ sudo apt -y install cloud-guest-utils
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
  cloud-init
The following NEW packages will be installed:
  cloud-guest-utils
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 22.1 kB of archives.
After this operation, 59.4 kB of additional disk space will be used.
Get:1 http://deb.debian.org/debian buster/main amd64 cloud-guest-utils all 0.29-1 [22.1 kB]
Fetched 22.1 kB in 0s (161 kB/s)
Selecting previously unselected package cloud-guest-utils.
(Reading database ... 108751 files and directories currently installed.)
Preparing to unpack .../cloud-guest-utils_0.29-1_all.deb ...
Unpacking cloud-guest-utils (0.29-1) ...
Setting up cloud-guest-utils (0.29-1) ...
Processing triggers for man-db (2.8.5-2) ...

growpartコマンドを使って、パーティションsda1を拡張します。

$ sudo growpart /dev/sda 1
CHANGED: partition=1 start=262144 old: size=104593409 end=104855553 new: size=209453023,end=209715167

最後にファイルシステムを拡張して完了です!

$ sudo resize2fs /dev/sda1
resize2fs 1.44.5 (15-Dec-2018)
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
old_desc_blocks = 7, new_desc_blocks = 13
The filesystem on /dev/sda1 is now 26181627 (4k) blocks long.

実際に確認してみると、無事/dev/sda1が100GBに拡張されました!

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            3.9G     0  3.9G   0% /dev
tmpfs           799M  8.4M  790M   2% /run
/dev/sda1        99G   43G   52G  45% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda15      124M  7.9M  116M   7% /boot/efi
tmpfs           799M     0  799M   0% /run/user/1002

終わりに

オンプレ時代には、ディスク追加するためだけに、ハードウェアベンダを呼んで、システムをメンテナンスモードに切り替えて、ディスク拡張作業をしていましたが、クラウドだとこんなに簡単に拡張できてしまうのは本当に素晴らしいことです。

GCPでディスクが枯渇してしまい、困ったという方の参考になれば。