Azure Red Hat Enterprise Linux 仮想マシンのディスク操作手順~OSディスク~

Azure上の仮想マシン(VM)は、物理環境と比較して容易にディスクサイズを拡張したり新規にディスクを追加したりすることができます。しかし、Azureポータルからディスクを操作しただけではOS上で利用することはできません。

そこで、Azure上にデプロイしたRed Hat Enterprise Linux(RHEL)9のVMで、既存ディスクを拡張する手順・ディスクを新規追加する手順・既存ディスクを削除する手順を数回に分けて説明します。

※ RHEL9のVMはLVM構成のものを使用しています

本記事では、まず、OSディスクの操作手順について記載します。

はじめに

本記事では、大きく以下2つの手順を説明します。

OSパーティション拡張

Azure上に新規デプロイされたRHEL VMは、OSディスク総容量の一部がパーティション未割り当ての領域となっています。

つまり、Azureポータル上はOSディスクが64GBであっても、そのままではOS上で全容量を利用できないということです。

ここでは、パーティション未割り当ての領域を利用する手順を記載します。

OSディスク拡張

AzureポータルからOSディスクを拡張する場合、OS上でパーティションを拡張する操作が必要です。

ここでは、OSディスクを拡張する手順を記載します。

OSパーティション拡張

事前準備

操作を誤ってVMが起動しなくなる恐れがあるため、VMのバックアップ(もしくはOSディスクのスナップショット)を取得します。

本操作ではVMの停止・起動が発生するので、サービス影響を考慮します。

操作手順

作業前の状態確認

1. VMにSSH接続し、sudoコマンドでrootに昇格します。

2. 以下のコマンドを実行し、現在のディスク構成を確認します。実行結果から、「sda4」(LVM)の合計容量と、個々のパーティション「/tmp」「/usr」「/home」「var」「/」のサイズが確認できます。
※ 個々のパーティションのデバイス名は”NAME”列に記載されます。

# lsblk -p -o NAME,FSTYPE,SIZE,MOUNTPOINT
<実行結果>
NAME                          FSTYPE       SIZE MOUNTPOINT
/dev/sda                                    64G      ←★OSディスクの合計サイズ
|-/dev/sda1                   vfat         200M /boot/efi 
|-/dev/sda2                   xfs          500M /boot 
|-/dev/sda3                                  1M 
|-/dev/sda4                   LVM2_member 63.3G      ←★LVMの合計サイズ 
  |-/dev/mapper/rootvg-tmplv  xfs            2G /tmp 
  |-/dev/mapper/rootvg-usrlv  xfs           10G /usr 
  |-/dev/mapper/rootvg-homelv xfs            1G /home 
  |-/dev/mapper/rootvg-varlv  xfs            8G /var      ←★/varのサイズ  
  |-/dev/mapper/rootvg-rootlv xfs            2G /

3. 以下のコマンドを実行し、現在のVG構成を確認します。実行結果から、「rootvg」の合計容量(VSize)63.31GBのうち未使用量(VFree)が40.31GBであることがわかります。

# vgs
<実行結果>
VG 
#PV #LV #SN Attr VSize VFree
rootvg  1  5  0 wz--n- 63.31g 40.31g
LVM構成(OS)

1. 以下のコマンドを実行し、現在のLVM構成を確認します。

# lvs
<実行結果>
LV     VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
homelv rootvg -wi-ao----  1.00g
rootlv rootvg -wi-ao----  2.00g
tmplv  rootvg -wi-ao----  2.00g
usrlv  rootvg -wi-ao---- 10.00g
varlv  rootvg -wi-ao----  8.00g      ←★/varのLVMサイズ/

2. LVMパーティションを拡張します。本記事では「/var」のサイズを拡張します。「/var」のデバイス名は、先の「作業前の状態確認」手順2.で確認した「/dev/mapper/rootvg-varlv」です。

空き領域のうち2GBだけ拡張する場合は、以下のようにコマンドを実行します。

# lvextend -L+2G /dev/mapper/rootvg-varlv
<実行結果>
  Size of logical volume rootvg/varlv changed from 8.00 GiB (2048 extents) to 10.00 GiB (2560 extents).
  Logical volume rootvg/varlv successfully resized.

空き領域を全部拡張する場合は、以下のようにコマンドを実行します。

# lvextend -l +100%FREE /dev/mapper/rootvg-varlv
<実行結果>
Size of logical volume rootvg/varlv changed from 8.00 GiB (2048 extents) to 48.31 GiB (12368 extents).
Logical volume rootvg/varlv successfully resized.
ファイルシステム構成(OS)

1.以下のコマンドを実行し、前の手順で拡張したLVMパーティションのファイルシステムを拡張します。本記事では「/var」のファイルシステムを拡張します。
※ 「/var」のデバイス名は、先の「作業前の状態確認」手順2.で確認した「/dev/mapper/rootvg-varlv」です。

# xfs_growfs /dev/mapper/rootvg-varlv
<実行結果>
meta-data=/dev/mapper/rootvg-varlv isize=512    agcount=4, agsize=524288 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=1 inobtcount=1
data     =                       bsize=4096   blocks=2097152, 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=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 2097152 to 12664832

2. 再起動します。以下のコマンドを実行するか、Azureポータルから再起動します。

# reboot

3. 以下のコマンドを実行し、変更後のディスク構成を確認します。実行結果から、「var」のパーティションサイズが増えたことがわかります。

# lsblk -p -o NAME,FSTYPE,SIZE,MOUNTPOINT
<実行結果>
NAME                          FSTYPE       SIZE MOUNTPOINT
/dev/sda                                    64G      ←★OSディスクの合計サイズ
|-/dev/sda1                   vfat         200M /boot/efi 
|-/dev/sda2                   xfs          500M /boot 
|-/dev/sda3                                  1M 
|-/dev/sda4                   LVM2_member 63.3G      ←★LVMの合計サイズ 
  |-/dev/mapper/rootvg-tmplv  xfs            2G /tmp 
  |-/dev/mapper/rootvg-usrlv  xfs           10G /usr 
  |-/dev/mapper/rootvg-homelv xfs            1G /home 
  |-/dev/mapper/rootvg-varlv  xfs         48.3G /var      ←★/varのサイズ  
  |-/dev/mapper/rootvg-rootlv xfs            2G /

3. 以下のコマンドを実行し、変更後のVG構成を確認します。実行結果から、「rootvg」の合計容量(VSize)63.31GBがすべて使用され、未使用量(VFree)が0になったことがわかります。

# vgs
<実行結果>
VG
#PV #LV #SN Attr VSize VFree
rootvg 1 5 0 wz--n- 63.31g 0g

4. 以下のコマンドを実行し、変更後のLVM構成を確認します。実行結果から、「/var」のLVMサイズが増えたことがわかります。

# lvs
<実行結果>
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert homelv rootvg -wi-ao---- 1.00g rootlv rootvg -wi-ao---- 2.00g tmplv rootvg -wi-ao---- 2.00g usrlv rootvg -wi-ao---- 10.00g varlv rootvg -wi-ao---- 48.31g ←★/varのLVMサイズ

まとめ

下表に、パーティション拡張時に必要な操作をまとめます。

  作業有無 作業対象
1.VM停止 不要 -
2.ディスク拡張 不要 -
3.パーティション拡張 不要 -
4.VG構成 不要 -
5.LVM構成 必要 OS
6.ファイルシステム構成 必要 OS
7.マウントポイント構成 不要 -
8.VM再起動 必要 OS/Azureポータル

OSディスク拡張

事前準備

操作を誤るとVMが起動しなくなる恐れがあるため、VMのバックアップ(もしくはOSディスクのスナップショット)を取得します。

本操作ではVMの停止・起動が発生するので、サービス影響を考慮します。

操作手順

ディスク拡張(Azure)

1. Azureポータルに、VMの共同管理者以上の権限があるアカウントでログインします。

2. 対象VMの「概要」画面で[停止]をクリックし、VMを停止します。

VMの停止

3. 状態が「停止済み(割り当て解除)」になることを確認します。

VMの停止

4. 対象VMの「ディスク」画面で[OSディスク名]をクリックします。

OSディスクの拡張

5. OSディスクの「サイズおよびパフォーマンス」画面で[拡張後のディスクサイズ]を選択し[保存]をクリックします。

OSディスクの拡張

6. 対象VMの「ディスク」画面で、OSディスクサイズが変更されたことを確認します。

OSディスクの拡張

7. 対象VMの「概要」画面で[開始]をクリックし、VMを起動します。

VMの起動

8. 状態が「実行中」になることを確認します。

VMの起動
作業前の状態確認

1. VMにSSH接続し、sudoコマンドでrootに昇格します。

2. 以下のコマンドを実行し、現在のディスク構成を確認します。実行結果から、「sda4」(LVM)の合計容量と、個々のパーティション「/tmp」「/usr」「/home」「var」「/」のサイズが確認できます。
※ 個々のパーティションのデバイス名は”NAME”列に記載されます。

# lsblk -p -o NAME,FSTYPE,SIZE,MOUNTPOINT
<実行結果>
NAME                          FSTYPE       SIZE MOUNTPOINT
/dev/sda                                   128G      ←★OSディスクの合計サイズ
|-/dev/sda1                   vfat         200M /boot/efi 
|-/dev/sda2                   xfs          500M /boot 
|-/dev/sda3                                  1M 
|-/dev/sda4                   LVM2_member 63.3G      ←★LVMの合計サイズ 
  |-/dev/mapper/rootvg-tmplv  xfs            2G /tmp 
  |-/dev/mapper/rootvg-usrlv  xfs           10G /usr 
  |-/dev/mapper/rootvg-homelv xfs            1G /home 
  |-/dev/mapper/rootvg-varlv  xfs         48.3G /var      ←★/varのサイズ  
  |-/dev/mapper/rootvg-rootlv xfs            2G /

3. 以下のコマンドを実行し、現在のVG構成を確認します。実行結果から、「rootvg」の合計容量(VSize)が63.31GBで未使用量(VFree)が0GBであることがわかります。

# vgs
<実行結果>
VG 
#PV #LV #SN Attr VSize VFree
rootvg  1  5  0 wz--n- 63.31g 0
パーティション拡張(OS)

1. 以下のコマンドを実行し、LVM全体のパーティションを拡張します。
※ 拡張対象のデバイス名は、先の「作業前の状態確認」手順2.で確認した「/dev/sda4」です。

# growpart /dev/sda 4
<実行結果>
CHANGED: partition=4 start=1437696 old: size=132777984 end=134215679 new: size=266997727 end=2684354
# pvresize /dev/sda4
<実行結果>
  Physical volume "/dev/sda4" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized
LVM構成(OS)

以降の手順は、「OSパーティション拡張」の「LVM構成(OS)」と同じです。

1. 以下のコマンドを実行し、現在のLVM構成を確認します。

# lvs
<実行結果>
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert homelv rootvg -wi-ao---- 1.00g rootlv rootvg -wi-ao---- 2.00g tmplv rootvg -wi-ao---- 2.00g usrlv rootvg -wi-ao---- 10.00g varlv rootvg -wi-ao---- 48.31g ←★/varのLVMサイズ

2. 以下のコマンドを実行し、LVMパーティションを拡張します。本記事では「/var」のサイズを拡張します。
※「/var」のデバイス名は、先の「作業前の状態確認」手順2.で確認した「/dev/mapper/rootvg-varlv」です。

空き領域のうち2GBだけ拡張する場合は、以下のようにコマンドを実行します。

# lvextend -L+2G /dev/mapper/rootvg-varlv
<実行結果>
Size of logical volume rootvg/varlv changed from 48.31 GiB (12368 extents) to 50.31 GiB (12880 extents).
  Logical volume rootvg/varlv successfully resized.

空き領域を全部拡張する場合は、以下のようにコマンドを実行します。

# lvextend -l +100%FREE /dev/mapper/rootvg-varlv
<実行結果>
Size of logical volume rootvg/varlv changed from 48.31 GiB (12368 extents) to 112.31 GiB (28752 extents).
Logical volume rootvg/varlv successfully resized.
ファイルシステム構成(OS)

1. 以下のコマンドを実行し、前の手順で拡張したLVMパーティションのファイルシステムを拡張します。本記事では「/var」のファイルシステムを拡張します。
※「/var」のデバイス名は、先の確認手順で確認した「/dev/mapper/rootvg-varlv」です。

# xfs_growfs /dev/mapper/rootvg-varlv
<実行結果>
meta-data=/dev/mapper/rootvg-varlv isize=512    agcount=4, agsize=524288 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=1 inobtcount=1
data     =                       bsize=4096   blocks=12664832, 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=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 12664832 to 29442048

2. 再起動します。以下のコマンドを実行するか、Azureポータルから再起動します。

# reboot

3. 以下のコマンドを実行し、変更後のディスク構成を確認します。実行結果から、「var」のパーティションサイズが増えたことがわかります。

# lsblk -p -o NAME,FSTYPE,SIZE,MOUNTPOINT
<実行結果>
NAME                          FSTYPE        SIZE MOUNTPOINT
/dev/sda                                    128G      ←★OSディスクの合計サイズ
|-/dev/sda1                   vfat          200M /boot/efi 
|-/dev/sda2                   xfs           500M /boot 
|-/dev/sda3                                   1M 
|-/dev/sda4                   LVM2_member 127.3G      ←★LVMの合計サイズ 
  |-/dev/mapper/rootvg-tmplv  xfs             2G /tmp 
  |-/dev/mapper/rootvg-usrlv  xfs            10G /usr 
  |-/dev/mapper/rootvg-homelv xfs             1G /home 
  |-/dev/mapper/rootvg-varlv  xfs         112.3G /var      ←★/varのサイズ  
  |-/dev/mapper/rootvg-rootlv xfs             2G /

3. 以下のコマンドを実行し、変更後のVG構成を確認します。実行結果から、「rootvg」の合計容量(VSize)が増えたことがわかります。

# vgs
<実行結果>
VG
#PV #LV #SN Attr VSize VFree
rootvg 1 5 0 wz--n- 127.31g 0g

4. 以下のコマンドを実行し、変更後のLVM構成を確認します。実行結果から、「/var」のLVMサイズが増えたことがわかります。

# lvs
<実行結果>
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert homelv rootvg -wi-ao---- 1.00g rootlv rootvg -wi-ao---- 2.00g tmplv rootvg -wi-ao---- 2.00g usrlv rootvg -wi-ao---- 10.00g varlv rootvg -wi-ao---- 112.31g ←★/varのLVMサイズ

まとめ

下表に、OSディスク拡張時に必要な操作をまとめます。

  作業有無 作業対象
1.VM停止 必要 Azureポータル
2.ディスク拡張 必要 Azureポータル
3.パーティション拡張 必要 OS
4.VG構成 不要 -
5.LVM構成 必要 OS
6.ファイルシステム構成 必要 OS
7.マウントポイント構成 不要 -
8.再起動 必要 OS/Azureポータル

おわりに

本記事では、Azure上にデプロイしたLVM構成のRHEL9 VMで、OSディスクとOSパーティションを拡張する手順を説明しました。

Azureではディスクサイズに応じて課金が発生します。Azureディスクを有効に使う方法の一つとして、OSディスク領域を最大限活用する手順を覚えていただければ幸いです。

執筆担当者プロフィール
山﨑 優美

山﨑 優美(日本ビジネスシステムズ株式会社)

ハイブリッドクラウド本部に所属。Windows Server・Linux、どちらのOSでもさわれるインフラエンジニアです。3児のママも兼務しています。

担当記事一覧