Photon OS は、クラウド環境に最適化された非常に軽量でミニマリストな Linux OS です。
簡単ですが、こちらの記事の冒頭で、Photon OS について紹介をしてます。
非常にシンプルな OS ですが、vSphere 環境であれば、非常に簡単にデプロイできる Linux OS なので、「ちょっと Docker の使える環境が欲しい」や「kubectl が叩ける Linux が欲しい」という時に、重宝します。
今回は、そんな Photon OS で、「あ、しまった... 最初にデプロイした時よりも、ディスク容量が必要になっちゃった」という時に、Photon OS の停止を伴わず、オンラインでサクッとディスクパーティションを拡張する方法をご紹介します。
前提
執筆時点で、Photon OS は ver 4.0 を利用しています。
# cat /etc/photon-release
VMware Photon OS 4.0
PHOTON_BUILD_NUMBER=2f5aad892
手順
まずは、vCenter などの UI から、仮想マシンとしてのディスクサイズを増やします。
この例では、16GB から 100GB に変更しました。
仮想ディスクのサイズが増やせたら、次は、Photon OS にログインし、下記のコマンドを実行します。
このコマンドにより、OS 再起動無しで、ディスクサイズの変更を検知させることができます。
echo 1 > /sys/class/block/sda/device/rescan
では、Linux において、パーティションサイズの変更と言ったらお馴染みの parted
をインストールします。
tdnf install -y parted
実際に、パーティションの変更を行う前に、まずは、今のファイルシステムの状況を確認しておきましょう。
# df -kh
Filesystem Size Used Avail Use% Mounted on
/dev/root 16G 3.9G 11G 27% / <-- ここ
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 1.6G 608K 1.6G 1% /run
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
tmpfs 3.9G 11M 3.9G 1% /tmp
/dev/sda3 10M 2.0M 8.1M 20% /boot/efi
tmpfs 798M 0 798M 0% /run/user/0
この時点では、まだルートファイルシステムの容量は 16GB のままです。
それでは、実際に、parted
を対話的に実行し、パーティションを拡張していきます。
# parted /dev/sda
GNU Parted 3.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
まずは、現在のパーティションレイアウトを表示させるために print
コマンドを実行します。
(parted) print
print
Warning: Not all of the space available to /dev/sda appears to be used, you can
fix the GPT to use all of the space (an extra 176160768 blocks) or continue with
the current setting?
Fix/Ignore?
すると、警告として、今のディスク状態と一致していないため、パーティションテーブル (GPT) を修正するかを聞かれるので、f
を入力し、修正します。
Fix/Ignore? f
f
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 5243kB 4194kB bios_grub
3 5243kB 15.7MB 10.5MB fat16 boot, esp
2 15.7MB 17.2GB 17.2GB ext4
(parted)
すると、先ほど増やした通り、/dev/sda
が、(約)100GB に増えています。
後ほど、この 107GB
という数字の部分は使うので、クリップボードにコピー等をして、控えておいてください。
次に、注目すべき点として、ターゲットとなる ext4 のファイルシステムが、この例では Number 2
として表示されていることに着目してください。
このファイルシステムをリサイズするので、下記のようなコマンドを実行します。
(parted) resizepart 2 100%
resizepart 2 100%
Warning: Partition /dev/sda2 is being used. Are you sure you want to continue?
Yes/No?
今使っているパーティションである旨の確認がありますので、y
を入力して続行し、その後、先ほど控えておいたディスク容量、この例では 107GB
を終端として、入力します。
Yes/No? y
y
End? [17.2GB]? 107GB
107GB
(parted)
これでパーティションとしてのリサイズは完了しましたので、もう一度 print
コマンドで結果を確認してみます。
(parted) print
print
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 5243kB 4194kB bios_grub
3 5243kB 15.7MB 10.5MB fat16 boot, esp
2 15.7MB 107GB 107GB ext4
(parted)
ターゲットとなる ext4 のファイルシステムが、107GB まで拡張できていることが確認できましたので、quit
コマンドで、parted を終了します。
(parted) quit
quit
Information: You may need to update /etc/fstab.
ここまでで、パーティションとしては、リサイズされていますが、まだファイルシステム (ext4) としては、変更が反映されていないので、df
コマンドでは、最初のままです。
# df -kh
Filesystem Size Used Avail Use% Mounted on
/dev/root 16G 3.9G 11G 27% / <-- ここ
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 1.6G 608K 1.6G 1% /run
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
tmpfs 3.9G 11M 3.9G 1% /tmp
/dev/sda3 10M 2.0M 8.1M 20% /boot/efi
tmpfs 798M 0 798M 0% /run/user/0
先ほど、parted
コマンドで確認したところ、/dev/sda
は 3つのパーティションを持っており、Number 2
のパーションを拡張しました。
なので、ここでは /dev/sda2
をターゲットに、ファイルシステムのリサイズコマンドを実行します。
# resize2fs /dev/sda2
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/sda2 is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 13
The filesystem on /dev/sda2 is now 26119207 (4k) blocks long.
ここまで来れば、df
コマンドでパーティションの拡張を確認でき、作業完了です。
# df -kh
Filesystem Size Used Avail Use% Mounted on
/dev/root 98G 3.9G 90G 5% / <-- ここ
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 1.6G 608K 1.6G 1% /run
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
tmpfs 3.9G 11M 3.9G 1% /tmp
/dev/sda3 10M 2.0M 8.1M 20% /boot/efi
tmpfs 798M 0 798M 0% /run/user/0
参考
Photon OS の公式ドキュメントとしては、下記のページを参照ください。