さくらのクラウドでDiskFullになってしまったのでストレージ拡張をした

さくらのクラウドインスタンスを立ててLXDを使った検証をしていて、とりあえずディスクを20GBにして使っていたら気がついたらディスクの空きがなくなってしまい、検証をある程度進めていてインスタンス作り直して手動で構築しなおすのも面倒だったのでディスク拡張をやってみました。

OSはUbuntu16.04で、ファイルシステムext4です。

問題発覚

$ df -h
Filesystem                      Size  Used Avail Use% Mounted on
udev                            983M     0  983M   0% /dev
tmpfs                           201M  8.4M  192M   5% /run
/dev/vda3                        16G   16G     0 100% /
tmpfs                          1001M     0 1001M   0% /dev/shm
tmpfs                           5.0M     0  5.0M   0% /run/lock
tmpfs                          1001M     0 1001M   0% /sys/fs/cgroup

/dev/vda3 が空きがないのが見てわかります。LXD用のzfsイメージのサイズを大きく割当すぎたのが原因でした。 この時最悪だったのが、適当にコマンドを打つとそのコマンドが刺さって応答がなくなってしまうようになったことでした…。

ディスク拡張作業

インスタンスをシャットダウン

シャットダウンしないと操作できないので一旦シャットダウンします。

f:id:kuro_m88:20161207231836p:plain

f:id:kuro_m88:20161207232125p:plain

容量を大きくした新しいディスクを作成する

ディスク一覧より、新しいディスクを作成します。

f:id:kuro_m88:20161207232255p:plain

この時、空のディスクを作るのではなく、ディスクのソースに20GBの元のディスクを指定します。 こうすることで元のディスクの内容が新しいディスクにクローンされます。

f:id:kuro_m88:20161207232416p:plain

ステータスが完了になるまで(コピーが完了するまで)待ちましょう。

f:id:kuro_m88:20161207232503p:plain

元のディスクをインスタンスから取り外す

停止させたサーバから元のディスクを取り外します。

f:id:kuro_m88:20161207232604p:plain

新しいディスクをインスタンスに接続する

停止させたサーバに新しいディスクを接続します。

f:id:kuro_m88:20161207232639p:plain

f:id:kuro_m88:20161207232817p:plain

サーバ上で認識されるディスクサイズを拡張する

新しいディスクが接続できたら、サーバを起動します。 この状態ではまだファイルシステム上はディスクは拡張されていませんし、 df -h してもリサイズ後のサイズで認識されていません。

$ df -h
Filesystem                      Size  Used Avail Use% Mounted on
udev                            983M     0  983M   0% /dev
tmpfs                           201M   11M  190M   6% /run
/dev/vda3                        16G   16G     0 100% /
tmpfs                          1001M     0 1001M   0% /dev/shm
tmpfs                           5.0M     0  5.0M   0% /run/lock
tmpfs                          1001M     0 1001M   0% /sys/fs/cgroup

parted -l コマンドでパーティションを確認しますが、この時に拡張済のディスクのサイズとGPT上のディスクのサイズが違う事をpartedが検知してくれるので、ここで修正を行います。

$ sudo parted -l
Warning: Not all of the space available to /dev/vda appears to be used, you can
fix the GPT to use all of the space (an extra 41943040 blocks) or continue with
the current setting?
Fix/Ignore? Fix
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system     Name  Flags
1      1049kB  2097kB  1049kB                        bios_grub
2      2097kB  4297MB  4295MB  linux-swap(v1)
3      4297MB  21.5GB  17.2GB  ext4

修正ができたら、 /dev/vda (接続したディスクの名前) のパーティションサイズを変更します。

$ sudo parted /dev/vda
GNU Parted 3.2
Using /dev/vda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system     Name  Flags
1      1049kB  2097kB  1049kB                        bios_grub
2      2097kB  4297MB  4295MB  linux-swap(v1)
3      4297MB  21.5GB  17.2GB  ext4

(parted) resizepart 3
Warning: Partition /dev/vda3 is being used. Are you sure you want to continue?
Yes/No? Yes
End?  [21.5GB]? 42.9GB
(parted) p
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system     Name  Flags
1      1049kB  2097kB  1049kB                        bios_grub
2      2097kB  4297MB  4295MB  linux-swap(v1)
3      4297MB  42.9GB  38.6GB  ext4

(parted)
Information: You may need to update /etc/fstab.

パーティションの拡張ができました。

次はファイルシステムの拡張です。 resize2fs コマンドがよしなにやってくれます。

$ sudo resize2fs /dev/vda3
resize2fs 1.42.13 (17-May-2015)
Filesystem at /dev/vda3 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 3
The filesystem on /dev/vda3 is now 9424544 (4k) blocks long.

確認

最後に確認をします。

$ df -h
Filesystem                      Size  Used Avail Use% Mounted on
udev                            983M     0  983M   0% /dev
tmpfs                           201M   14M  187M   7% /run
/dev/vda3                        36G   16G   19G  47% /
tmpfs                          1001M     0 1001M   0% /dev/shm
tmpfs                           5.0M     0  5.0M   0% /run/lock
tmpfs                          1001M     0 1001M   0% /sys/fs/cgroup

拡張できたようです。めでたしめでたし。

追記 (2016/12/09)

前佛さんに自動ディスク容量拡張機能について教えて頂きました!

knowledge.sakura.ad.jp

さくらのクラウドに実装されている「ディスクの修正」機能に対応したパブリックアーカイブのOS から起動した場合にこの機能が使えるようです。
この機能があればサーバ上での作業が減って楽できますね!