PR

Linux仮想サーバのDisk容量をオンラインで追加する手順

Windows環境では、仮想サーバのDisk容量をオンラインで簡単に追加ができますが、Linuxでは実施したことが無くて難しいと思い込んでいました。しかし、簡単に増設できましたので、/ (ルート)パーティションを増やす手順を記録しておきます。(ここでは、VMware環境で記載していますが、他の環境でも同じだと思います)

安全のため、作業前にVMware側でスナップショットを取得してから実行してください。

Step 1: VMware側でディスク容量を増やす

  1. vSphere Client等から、対象仮想マシンの「設定の編集」を開きます。
  2. ハードディスクのサイズを希望の容量(ここでは10GBから20GB)に変更し、保存します。

Step 2: OSに新しいディスク容量を認識させる

まず現状を確認しておきます。

# fdisk -l
ディスク /dev/sda: 10 GiB, 10737418240 バイト, 20971520 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x0009e10d

デバイス   起動 開始位置 終了位置   セクタ サイズ Id タイプ
/dev/sda1  *        2048  2099199  2097152     1G 83 Linux
/dev/sda2        2099200 20971519 18872320     9G 8e Linux LVM

(以下、略)

再起動せずにディスク変更を認識させるため、root権限で以下を実行します。

# echo 1 > /sys/class/block/sda/device/rescan

※ディスク名が sda ではない場合は、環境に合わせて変更してください。

fdiskコマンドやlsblk コマンドで、親ディスク(sda)の容量が増えていることを確認します。

# fdisk -l
ディスク /dev/sda: 20 GiB, 21474836480 バイト, 41943040 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x0009e10d

デバイス   起動 開始位置 終了位置   セクタ サイズ Id タイプ
/dev/sda1  *        2048  2099199  2097152     1G 83 Linux
/dev/sda2        2099200 20971519 18872320     9G 8e Linux LVM

(以下、略)

# lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                         8:0    0   20G  0 disk
tqsda1                      8:1    0    1G  0 part /boot
mqsda2                      8:2    0    9G  0 part
  tqcentos-root         253:0    0    8G  0 lvm  /
  mqcentos-swap         253:1    0    1G  0 lvm  [SWAP]

(以下、略)

Step 3: パーティションの拡張

parted コマンドを使用して、ルート領域が属するパーティションを拡張します。

  1. lsblk を実行し、ルート(/)が属するパーティション番号を確認します。上記の実行例にもありますように、sda2にあります。(例: sda2 の場合は、デバイス名が sda、番号が 2
  2. パーティションを拡張します:

parted を起動して、現在のユニットをセクター(unit s)表示に変え、状態を確認(print)します。

※「Warning: Not all of the space available…」と表示された場合は Fix を入力してEnterを押してください。

パーティションを拡張する
print で表示されたルート(/)のパーティション番号を確認し、「resizepart 2 100%」を実行します。

# parted
GNU Parted 3.2
/dev/sda を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) unit s
(parted) print
モデル: VMware Virtual disk (scsi)
ディスク /dev/sda: 41943040s
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ:

番号  開始      終了       サイズ     タイプ   ファイルシステム  フラグ
 1    2048s     2099199s   2097152s   primary  xfs               boot
 2    2099200s  20971519s  18872320s  primary                    lvm

(parted) resizepart 2 100%
(parted) quit

念の為、拡張されたか確認します。

# parted
GNU Parted 3.2
/dev/sda を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) print
モデル: VMware Virtual disk (scsi)
ディスク /dev/sda: 21.5GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ:

番号  開始    終了    サイズ  タイプ   ファイルシステム  フラグ
 1    1049kB  1075MB  1074MB  primary  xfs               boot
 2    1075MB  21.5GB  20.4GB  primary                    lvm

(parted) quit

Step 4: LVMの拡張

AlmaLinuxの標準構成(LVM)に合わせて、物理ボリュームと論理ボリュームを拡張します。

  1. 物理ボリューム(PV)の拡張:pvresize /dev/sda2
  2. ルート(/)の論理ボリューム(LV) 
    • パスを確認:df -h / (表示された「ファイルシステム」の列を確認。例: /dev/mapper/almalinux-rootなど)
  3. 論理ボリューム(LV)を最大まで拡張:lvextend -l +100%FREE /dev/mapper/almalinux-root
# pvresize /dev/sda2
  Physical volume "/dev/sda2" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized

# df -h
ファイルシス                      サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos-root          8.0G  5.3G  2.8G   66% /
(以下、略)

# lvextend -l +100%FREE /dev/mapper/centos-root
  Size of logical volume centos-root changed from <8.00 GiB (2047 extents) to <18.00 GiB (4607 extents).
  Logical volume centos-root successfully resized.

Step 5: ファイルシステムの拡張

最後に、AlmaLinuxの標準ファイルシステムであるXFSのサイズを拡張します。

# xfs_growfs /
meta-data=/dev/mapper/centos-root isize=512    agcount=4, agsize=524032 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0, rmapbt=0
         =                       reflink=0    bigtime=0 inobtcount=0
data     =                       bsize=4096   blocks=2096128, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 2096128 to 4717568

df -h を実行し、ルート(/)のサイズが増えていれば完了です。

# df -h
ファイルシス                      サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos-root           18G  5.3G   13G   30% /
(以下、略)

もともとの8GBから18GBに増えていることが確認できました。

このようにLinuxサーバで何も停止することなく、ディスク容量を増やすことができました。Linuxでも思っていたよりも簡単に増設ができました。

今回はここまでです。最後までお読みいただきありがとうございました。