ダウンロード用のサーバーのシステムディスクが枯渇してしまったため、容量を拡張しました。

拡張手順

停止しても問題ないサーバーのため、VMを停止してからライブブートできるメディアを利用してVMを立ち上げます。今回は、Ubuntu Server 20.04 LTS Live Serverを使用しました。

パーティションのリサイズ

fdiskや、gdiskを用いて、パーティションをリサイズします。

対象のLVMで利用されているパーティションを一度削除し、新しくパーティションを作成します。開始セクターは削除したパーティションと同じ値を利用し終了セクターを新しい値に設定してください。

「partx」でパーティションテーブルのサイズを更新します。

gdiskでパーティションを再作成しましたが、メモリー上のテーブルではもとの値のままです。partxコマンドを利用してメモリー上のパーティションテーブルをディスク上のもので更新します。

1
partx -u /dev/vda

おそらくpartxを利用せずに、ioctlでもテーブルの再読込は可能です。

lsblkで拡張されたことを確認

目的のデバイスのSIZE項目が更新されていればOKです。

物理ボリュームに対して拡張を行う

pvresizeコマンドで物理ボリュームを拡張します。

1
2
3
root@ubuntu-server:#/ pvresize /dev/vda5
 Physical volume "/dev/vda5" changed
 1 physical volume(s) resized or updated / physical volume(s) not resized

pvdisplayで変更を確認します。

1
 PV SIZE        19.52 GiB / not usable 1.98 MiB

論理ボリュームの拡張

1
2
3
root@ubuntu-server:/# lvextend -l +100%FREE /dev/mapper/downloader--vg-root
  Size of logical volume downloader-vg/root changed from 10.02 GiB (2556 extends) to <18.57 GiB (4753 extends).
  Logical volume downloader-vg/root successfully resized.

lsblkでか確認すると、対象のLVMボリュームが拡張されているのが確認できます。

ファイルシステムの拡張

e2fsckでfsckを実行します。

1
e2fsck -f /dev/mapper/downloader--vg-root

確認などのプロンプトが出たら、Enterしてください。

resize2fsextファイルシステムを拡張します。

1
2
3
root@ubuntu-server:/# resize2fs /dev/mapper/downloader--vg-root
Resizing the filesystem on /dev/mapper/downloader--vg-root to 6867072 (4k) blocks.
The filesystem on /dev/mapper/downloader--vg-root is now 4867072 (4k) blocks long.

リサイズは完了

通常では、この段階でシステムのリサイズは完了しています。再起動をかければおそらく起動します。

ですが、何らかの手違いでBIOSブートパーティションが損傷してしまったため、私のVMではGRUB画面でフリーズしてしまいました。

ブートパーティションの復旧

grub-installを実行するとエラーで弾かれたため、原因を調べたところ、ブートパーティションが消えていました。

再度、ライブCD等で起動し対象のディスクに対してgdiskします。 新しいパーティションを作成し、開始セクターを一番小さい値(34)に設定、終了セクターを開始セクターから一番大きい値(2047)に設定しました。

GUIDは、EF02 (BIOS boot partition)に設定します。

既存のファイルシステムをマウントし、chroot後、grub-installを実行したところ問題なくシステムが立ち上がりました。

終わりに

Linuxシステムの場合、ルートのファイルシステムが読める状態であれば復旧が可能です。幸い、起動できなくて、泣く泣く再インストール等の経験はまだありませんが、一応保険としてバックアップを取るクセを付けたいですね。