タイガーラック クリエイティブブログ
2024
May
30

growpartによるさくらVPSのパーティション拡張

今回は、さくらVPSのディスク容量を拡張した際に必要になる、パーティションとファイルシステムの拡張について紹介します。

環境

  • さくらVPS
  • CentOS Linux 7

状態の確認

パーティションを拡張する前にVPSのディスク容量とファイルシステムを確認します。

ディスク容量の確認

lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 1024M  0 rom  
vda    253:0    0   50G  0 disk 
├─vda1 253:1    0    1M  0 part 
├─vda2 253:2    0  500M  0 part /boot
├─vda3 253:3    0    4G  0 part
└─vda4 253:4    0   25G  0 part /

lsblk(listblock)は現在接続中のブロックデバイスをリスト表示するコマンドです。
上記の場合、ディスクvdaには50Gの容量があるのに対し、パーティションの総容量が30G程しか無いのが確認できます。

ファイルシステムの確認

df -Th
ファイルシス   タイプ   サイズ  使用  残り 使用% マウント位置
devtmpfs       devtmpfs   485M     0  485M    0% /dev
tmpfs          tmpfs      496M     0  496M    0% /dev/shm
tmpfs          tmpfs      496M  6.7M  489M    2% /run
tmpfs          tmpfs      496M     0  496M    0% /sys/fs/cgroup
/dev/vda4      xfs         25G  7.3G   18G   29% /
/dev/vda2      xfs        497M  153M  345M   31% /boot
tmpfs          tmpfs      100M     0  100M    0% /run/user/0
tmpfs          tmpfs      100M     0  100M    0% /run/user/1000

df(diskfree)はディスクの空き容量を確認するコマンドになります。
オプションに-Tを入力することでファイルシステムのタイプ表示、-hを入力することでサイズの表示を通常はブロック数で表示されるのをバイト表示に切り替えることができます。
ここで重要になるのは拡張したいパーティションのタイプ表記になります。
さくらVPSの場合、Typeがxfsの場合とext4の場合があり、後で使用するファイルシステムの拡張コマンドに違いがあるので、確認しておいた方が良いでしょう。

パーティション拡張作業

状態の確認が終わったらパーティション拡張の作業に入っていきます。

gdiskとgrowpartコマンドのインストール

yum -y install gdisk cloud-utils-growpart

gdiskgrowpartコマンドをインストールします。

gdiskはGPT形式のパーティションの追加や削除を行うために必要なコマンドになります。
今回は直接使用しませんが、growpartコマンドの動作に必要になる為インストールしておきます。
growpartはパーティション拡張に必要になる、パーティションの削除と再作成を自動で行ってもらえるコマンドになります。fdisk等でも行える作業にはなりますが、失敗した場合パーティションが破損し、VPSが起動しなくなることもあるので、個人的にはgrowpartコマンドを使って作業をすることを推奨します。

パーティションの拡張

growpart --dry-run /dev/vda 4
CHANGE: partition=4 start=61845504 old: size=8388608 end=70234112 new: size=43012062 end=104857566

growpart /dev/vda 4
CHANGE: partition=4 start=61845504 old: size=8388608 end=70234112 new: size=43012062 end=104857566

拡張したいパーティションに対してgrowpartコマンドを実行します。
–dry-runオプションを追加することでエラーチェックが出来るので、エラーが発生しないことを確認してからコマンドを実行すると良いでしょう。

尚、NOCHANGE: disk=<disk> partition=<partition>: size=<size>, it cannot be grownというような表示が出た場合、sgdisk -s <disk>等のコマンドでパーティションのソートを行えば正常に拡張できるようになるかと思います。

ファイルシステムのリサイズ

xfs_growfs /dev/vda4
meta-data=/dev/vda4              isize=512    agcount=4, agsize=1638400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=6553600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=3200, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

パーティションを拡張した後はファイルシステムのリサイズをする必要があります。
ファイルシステムをリサイズするコマンドはdf -Thコマンドで確認出来るタイプ欄によって異なり、xfs形式の場合はxfs_growfsコマンドを使うことになります。仮にファイルシステムがext4形式だった場合はresize2fxというコマンドを使うことになるので注意してください。

状態の再確認

lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 1024M  0 rom  
vda    253:0    0   50G  0 disk 
├─vda1 253:1    0    1M  0 part 
├─vda2 253:2    0  500M  0 part /boot
├─vda3 253:3    0    4G  0 part
└─vda4 253:4    0 45.5G  0 part /

df -Th
ファイルシス   タイプ   サイズ  使用  残り 使用% マウント位置
devtmpfs       devtmpfs   485M     0  485M    0% /dev
tmpfs          tmpfs      496M     0  496M    0% /dev/shm
tmpfs          tmpfs      496M  6.7M  489M    2% /run
tmpfs          tmpfs      496M     0  496M    0% /sys/fs/cgroup
/dev/vda4      xfs         46G  7.3G   39G   16% /
/dev/vda2      xfs        497M  153M  345M   31% /boot
tmpfs          tmpfs      100M     0  100M    0% /run/user/0
tmpfs          tmpfs      100M     0  100M    0% /run/user/1000

lsblkdf -Thを再び入力してディスクの状態を確認すると、/dev/vda4のパーティションサイズが拡張されているのが確認できます。

growpartを使用すると再起動や細かい設定も必要なく、簡単にパーティション拡張が行なえますので、さくらVPSのディスク容量を大きくした際にはgrowpartコマンドを使用してパーティション拡張を行ってみてはいかがでしょうか。

このカテゴリの最新記事

関連記事

SHOP LIST

タイガーラック株式会社

〒577-0056
大阪府東大阪市長堂1-3-14 TOKUYASU Bld.