Skip to content

vSphere 環境で既存のディスクを LVM で拡張する

vSphere 上に作成した Linux 仮想マシンで LVM を構成している際に、既存のディスクサイズを LVM で拡張する手順をメモしておきます。

仮想マシンのスナップショットを削除し、ディスクサイズを拡張する

仮想マシン上に vSphere のスナップショットが残っているとディスクサイズを変更することが出来ません。 スナップショットが残っている場合は削除します。 削除後は vSphere の管理画面からディスクサイズを変更します。 今回は 50GB → 100GB へ変更しました。

作業前のパーティション情報確認

事前に parted -l を実行してパーティション情報を確認します。 LVM が設定されていることが分かります。

$ parted -l
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  2097kB  1049kB                     bios_grub
 2      2097kB  2150MB  2147MB  ext4
 3      2150MB  53.7GB  51.5GB


Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/ubuntu--vg-ubuntu--lv: 51.5GB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags:

Number  Start  End     Size    File system  Flags
 1      0.00B  51.5GB  51.5GB  ext4


Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0
has been opened read-only.
Error: /dev/sr0: unrecognised disk label
Model: NECVMWar VMware SATA CD00 (scsi)
Disk /dev/sr0: 1475MB
Sector size (logical/physical): 2048B/2048B
Partition Table: unknown
Disk Flags:

ゲスト OS 側で設定反映

rescan にフラグを立て、「ディスクサイズを変更したこと」を OS に通知します。 今回は最初のディスク (/dev/sda) のサイズを変更した為、以下のように実行します。

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

パーティション情報を変更する

parted /dev/sda を実行してサイズ拡張した部分をパーティションとして認識させます。

$ parted /dev/sda
GNU Parted 3.4
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)

print free を実行してパーティション情報を確認します。 すると vSphere 上で追加したディスクが空き領域 (Free Space) として認識されていることが分かります。

(parted) print free
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
        17.4kB  1049kB  1031kB  Free Space
 1      1049kB  2097kB  1049kB                     bios_grub
 2      2097kB  2150MB  2147MB  ext4
 3      2150MB  53.7GB  51.5GB
        53.7GB  107GB   53.7GB  Free Space

resizepart 3 を実行して既存のパーティション 3 番を拡張します。

(parted) resizepart 3
End?  [53.7GB]? 100%

これで 3 番目のパーティションが拡張されました。

(parted) print free
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
        17.4kB  1049kB  1031kB  Free Space
 1      1049kB  2097kB  1049kB                     bios_grub
 2      2097kB  2150MB  2147MB  ext4
 3      2150MB  107GB   105GB

LVM で物理ボリュームを拡張する

実際に LVM で物理ボリュームを拡張する前に pvdisplay を実行して事前の状態を確認しておきます。

$ pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               ubuntu-vg
  PV Size               <48.00 GiB / not usable 0
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              12287
  Free PE               0
  Allocated PE          12287
  PV UUID               3ztRYL-Ggxk-4oyQ-a2eo-0HQB-WELb-zqXMQY

pvresize /dev/sda3 を実行して物理ボリュームを拡張します。

$ pvresize /dev/sda3
  Physical volume "/dev/sda3" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized

再度、pvdisplay を実行すると物理ボリュームが拡張されていることが分かります。

$ pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               ubuntu-vg
  PV Size               <98.00 GiB / not usable 16.50 KiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              25087
  Free PE               12800
  Allocated PE          12287
  PV UUID               3ztRYL-Ggxk-4oyQ-a2eo-0HQB-WELb-zqXMQY

LVM で論理ボリュームを拡張する

実際に LVM で論理ボリュームを拡張する前に lvdisplay を実行して事前の状態を確認しておきます。

$ lvdisplay
  --- Logical volume ---
  LV Path                /dev/ubuntu-vg/ubuntu-lv
  LV Name                ubuntu-lv
  VG Name                ubuntu-vg
  LV UUID                bc3OSr-cKD7-hhRB-3gAW-pB05-datM-cdPSXF
  LV Write Access        read/write
  LV Creation host, time ubuntu-server, 2023-01-18 13:56:50 +0900
  LV Status              available
  # open                 1
  LV Size                <48.00 GiB
  Current LE             12287
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

lvextend を実行して論理ボリュームのサイズを拡張します。

$ lvextend --resizefs -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
  Size of logical volume ubuntu-vg/ubuntu-lv changed from <48.00 GiB (12287 extents) to <98.00 GiB (25087 extents).
  Logical volume ubuntu-vg/ubuntu-lv successfully resized.
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/mapper/ubuntu--vg-ubuntu--lv is mounted on /; on-line resizing required
old_desc_blocks = 6, new_desc_blocks = 13
The filesystem on /dev/mapper/ubuntu--vg-ubuntu--lv is now 25689088 (4k) blocks long.

再度、lvdisplay を実行すると物理ボリュームが拡張されていることが分かります。

$ lvdisplay
  --- Logical volume ---
  LV Path                /dev/ubuntu-vg/ubuntu-lv
  LV Name                ubuntu-lv
  VG Name                ubuntu-vg
  LV UUID                bc3OSr-cKD7-hhRB-3gAW-pB05-datM-cdPSXF
  LV Write Access        read/write
  LV Creation host, time ubuntu-server, 2023-01-18 13:56:50 +0900
  LV Status              available
  # open                 1
  LV Size                <98.00 GiB
  Current LE             25087
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

ディスクの空き容量が増えたことを確認する

df を実行して空き容量が増えていることを確認します。

$ df -h /dev/mapper/ubuntu--vg-ubuntu--lv
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv   97G   45G   48G  49% /