Ubuntuを起動したままパーティションとfsを拡張

  • LINEで送る

こんばんにちは

さくらのVPSはスケールアップに対応しており、スケールアップするとSSDないしはHDDの容量も増加するのですが、OS側から増加したディスクを反映させる手順等はさくらインターネットからは特に公開されていないようです。

調べると、OSのインストーラ等を利用して対象がアンマウントされた状態でそれらの拡張作業を行う記事や、GUIによる作業を記した生地は多かったのですが、ダウンタイムは発生させたくないし、GUI環境なんてないし、ということで少し大変でした。

そこで、いろいろ調べながら自分なりにディスクの増加に合わせてパーティションとファイルシステムの拡張を行うことができたので、その方法を簡単に書きます。

今回は512MBプランのSSD20GBから1GプランのSSD30GBへスケールアップしました。

※ 追記 2020/10/31
CentOSはこっち: CentOSを起動したままパーティションとlvmとfsを拡張
※ 追記終わり

続きをどうぞ。

はじめに

この記事を見ていただき、参考にしてくださるのはありがたい限りですが、何事も自己責任にてお願いいたします。

 

今回の環境

OSはカスタムインストールしたUbuntu 16.04.3 LTSです。

20GBから30GBへと拡張します。

カスタムインストールではswap領域がディスクの最後に1GB確保されていますが、拡張後はパーティションによるswapではなくswapファイルに変更します。

ディスクの最後にswapがある関係で、いったん削除する必要があるのですが、メモリが不足しているとswapを削除できずにエラーを吐きますので、止められるサービスを止めるなどする必要がありそうです。

 

作業

swapをオフに

sakura ~ % sudo swapoff /dev/vda5

swap領域の削除

partedというコマンドラインツールを使用します。

sakura ~ % sudo parted
GNU Parted 3.2
/dev/vda を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。

空き領域を含めたディスク使用状況を確認します。

(parted) p free
モデル: Virtio Block Device (virtblk)
ディスク /dev/vda: 32.2GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ:
番号 開始 終了 サイズ タイプ ファイルシステム フラグ
32.3kB 1049kB 1016kB 空き容量
1 1049kB 20.4GB 20.4GB primary ext4 boot
20.4GB 20.4GB 1048kB 空き容量
2 20.4GB 21.5GB 1072MB extended
5 20.4GB 21.5GB 1072MB logical linux-swap(v1)
21.5GB 32.2GB 10.7GB 空き容量

ここで、swapが番号5であることがわかるので、それを削除します。

(parted) rm 5

また、番号2は5を内包していたもので、これも削除します。

(parted) rm 2

パーティション拡張

プライマリパーティションを拡張します。
ここではディスクいっぱいに拡張しています。

(parted) p free
モデル: Virtio Block Device (virtblk)
ディスク /dev/vda: 32.2GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ:
番号 開始 終了 サイズ タイプ ファイルシステム フラグ
32.3kB 1049kB 1016kB 空き容量
1 1049kB 20.4GB 20.4GB primary ext4 boot
20.4GB 32.2GB 11.8GB 空き容量

(parted) resizepart 1
警告: パーティション /dev/vda1 は使用中です。それでも実行しますか?
はい(Y)/Yes/いいえ(N)/No? y
終了? [20.4GB]? 100%

(parted) p free
モデル: Virtio Block Device (virtblk)
ディスク /dev/vda: 32.2GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ:
番号 開始 終了 サイズ タイプ ファイルシステム フラグ
32.3kB 1049kB 1016kB 空き容量
1 1049kB 32.2GB 32.2GB primary ext4 boot

(parted) q
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。

swapファイル作成

今回はルート’/’に”swapfile”という名前の1Gの大きさのファイルを作成します。
パーミッションも適切にしておきます。

sakura ~ % sudo fallocate -l 1G /swapfile

sakura ~ % ll /swapfile
-rw-r--r-- 1 root root 1073741824 6月 3 18:02 /swapfile

sakura ~ % sudo chmod 600 /swapfile

swapの有効化

作成した/swapfileをswapとして認識させて、swapを有効化します。

sakura ~ % sudo mkswap /swapfile
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
ラベルはありません, UUID=

sakura ~ % sudo swapon /swapfile

sakura ~ % swapon -s
Filename Type Size Used Priority
/swapfile file 1048572 0 -1

確認

正常にswapが認識されているか確認します。

sakura ~ % free -h
total used free shared buff/cache available
Mem: 992M 135M 531M 10M 325M 673M
Swap: 1.0G 0B 1.0G

sakura ~ % df -h
Filesystem Size Used Avail Use% Mounted on
udev 479M 0 479M 0% /dev
tmpfs 100M 11M 89M 11% /run
/dev/vda1 19G 18G 40M 100% /
tmpfs 497M 16K 497M 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 497M 0 497M 0% /sys/fs/cgroup
tmpfs 100M 0 100M 0% /run/user/1000

んん、ミスりました。
先にファイルシステムをリサイズしてからswapfileを作成するべきでした。今回はギリギリ容量が足りたようなので良かったですが。

ファイルシステム拡張

拡張したパーティションに合わせてファイルシステムを拡張します。

sakura ~ % sudo resize2fs /dev/vda1
resize2fs 1.42.13 (17-May-2015)
Filesystem at /dev/vda1 is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 2
The filesystem on /dev/vda1 is now 7864064 (4k) blocks long.

sakura ~ % df -h
Filesystem Size Used Avail Use% Mounted on
udev 479M 0 479M 0% /dev
tmpfs 100M 11M 89M 11% /run
/dev/vda1 30G 18G 11G 63% /
tmpfs 497M 16K 497M 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 497M 0 497M 0% /sys/fs/cgroup
tmpfs 100M 0 100M 0% /run/user/1000

sakura ~ % free -h
total used free shared buff/cache available
Mem: 992M 135M 530M 10M 325M 673M
Swap: 1.0G 0B 1.0G

正常に拡張され、システムからも認識されていますね。

fstabの修正

今回はswapの構成を変更したので、それに合わせて/etc/fstabを書き換える必要があります。

sakura ~ % sudo cp /etc/fstab /etc/fstab.bak

sakura ~ % sudo -e /etc/fstab

sakura ~ % diff /etc/fstab /etc/fstab.bak
11,12c11
< #UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx none swap sw 0 0
< /swapfile none swap sw 0 0 --- > UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx none swap sw 0 0

念のため再起動して、正常に起動すること、swap等も正常に動作することを確認します。

sakura ~ % sudo reboot

/dev/vda1が晴れて30GBに拡張されました。

sakura ~ % df -h
Filesystem Size Used Avail Use% Mounted on
udev 479M 0 479M 0% /dev
tmpfs 100M 1.8M 98M 2% /run
/dev/vda1 30G 18G 11G 63% /
tmpfs 497M 0 497M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 497M 0 497M 0% /sys/fs/cgroup
tmpfs 100M 0 100M 0% /run/user/1000

まとめ

ローカルの仮想マシンで試すこともなく、いろいろ動かしているVPS上でいきなり作業しましたが、うまくいって良かったです。

また、今回の作業に当たって以下のサイトを参考にさせていただきました。ありがとうございます。

【Linux】 partedでパーティションの拡張
スワップ(swap)領域の有効・無効化
swap領域拡張手順(ファイル割当)

 

ではでは

  • LINEで送る

コメント

コメントを残す

*