こんにちは、Azure テクニカル サポート チームの青山です。
Azure Marketplace のイメージからデプロイしたほとんどの Linux VM は、OS ディスクサイズが 30GB となります。VM の用途次第では、このサイズでは /
領域が不足することがあります。
そこで今回は OS ディスクの拡張方法、および、パーティション、ファイルシステムの拡張方法についてご案内します。
なお、データディスクの拡張については下記公式ドキュメントに詳細手順がありますので、こちらを参考にしてください。
注意
作業前には必ず バックアップ を取得しておきましょう。
Azure ディスクの拡張
Azure CLI で az login
が完了していることを前提とします。
CLI をインストールしていない場合は、Azure Cloud Shell の Bash を使うと便利です。
- 環境に合わせて変数を設定します。
myResourceGroup
には VM のリソースグループ名、myVmName
には VM のリソース名、myOsDiskSize
には拡張後の OS ディスクサイズを指定しましょう。以下の例では 100GB に拡張します。1
2
3myResourceGroup="contosogroup"
myVmName="contosovm"
myOsDiskSize="100" - VM 実行中は接続されたディスクのサイズを変更できません。一度 VM を停止(割り当て解除)します。
1
az vm deallocate --resource-group $myResourceGroup --name $myVmName
- ディスクサイズを変更します。管理ディスクの場合は、
az disk update
でサイズ変更します。非管理ディスクの場合は、1
2osdiskid=$(az vm show --resource-group $myResourceGroup --name $myVmName --query storageProfile.osDisk.managedDisk.id -o tsv)
az disk update --ids $osdiskid --size-gb $myOsDiskSizeaz vm update
でサイズ変更します。1
az vm update -n $myVmName -g $myResourceGroup --set StorageProfile.OSDisk.DiskSizeGB=$myOsDiskSize
- VM を起動します。Azure CLI での操作はここまでとなります。
1
az vm start --resource-group $myResourceGroup --name $myVmName
ファイルシステムの拡張
Ubuntu など、cloud-init が予め有効なシステムでは、起動時に拡張が済んでいる場合があります。
ここでは、LVM 構成ではない RHEL7.6 でのコマンド例を紹介します。LVM 構成の場合は ファイルシステムの拡張 (LVM) を参照してください。
- VM に SSH 接続します。
lsblk
コマンドで拡張するパーティションを確認します。以下の出力例では、1
lsblk -p -o NAME,FSTYPE,SIZE,MOUNTPOINT
/
は/dev/sda2
に 31.5G の xfs として作成されていることが確認できます。1
2
3
4
5
6
7NAME FSTYPE SIZE MOUNTPOINT
/dev/fd0 4K
/dev/sda 100G
|-/dev/sda1 xfs 500M /boot
`-/dev/sda2 xfs 31.5G /
/dev/sdb 7G
`-/dev/sdb1 ext4 7G /mnt/resourceyum
コマンドで、cloud-utils-growpart
パッケージをインストールします。1
sudo yum install -y cloud-utils-growpart
growpart
コマンドでパーティションを拡張します。1
sudo growpart /dev/sda 2
- 再度
lsblk
コマンドを使い、/dev/sda2
が拡張されたかを確認してみましょう。以下の出力例では、99.5G に拡張されたことが確認できます。1
lsblk -p /dev/sda2
1
2NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
/dev/sda2 8:2 0 99.5G 0 part / - ファイルシステムを拡張します。xfs の場合は、
xfs_growfs
, ext4 の場合は、resize2fs
コマンドを使います。拡張されました。1
sudo xfs_growfs /
1
2
3
4
5
6
7
8
9
10meta-data=/dev/sda2 isize=512 agcount=4, agsize=2065088 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=8260352, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=4033, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 8260352 to 26086139 - 最後に、
df
コマンドで/
のサイズを確認してみましょう。目的のサイズになっていれば無事成功です。1
df -hT /
1
2Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 xfs 100G 2.8G 97G 3% /
ファイルシステムの拡張 (LVM)
ここでは、LVM 構成の RHEL8.2 でのコマンド例を紹介します。
- VM に SSH 接続します。
lsblk
コマンドで拡張するパーティションを確認します。以下の出力例では、1
lsblk -p -o NAME,FSTYPE,SIZE,MOUNTPOINT
/
としてマウントされている LVrootlv
は/dev/sda2
に作成されていることが確認できます。
ファイルシステムは xfs として作成されています。1
2
3
4
5
6
7
8
9
10
11
12
13NAME FSTYPE SIZE MOUNTPOINT
/dev/sda 100G
├─/dev/sda1 xfs 500M /boot
├─/dev/sda2 LVM2_member 63G
│ ├─/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
│ └─/dev/mapper/rootvg-rootlv xfs 2G /
├─/dev/sda14 4M
└─/dev/sda15 vfat 495M /boot/efi
/dev/sdb 7G
└─/dev/sdb1 ext4 7G /mntyum
コマンドで、cloud-utils-growpart
パッケージをインストールします。1
sudo yum install -y cloud-utils-growpart
growpart
コマンドでパーティションを拡張します。1
sudo growpart /dev/sda 2
pvresize
コマンドで、PV を拡張します。成功すると、以下のような出力が得られます。1
sudo pvresize /dev/sda2
1
2Physical volume "/dev/sda2" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resizedvgs
コマンドでrootlv
の含まれているrootvg
の領域が増えたか確認してみます。以下の出力例では 76.02 GB が使用可能です。1
sudo vgs
1
2VG #PV #LV #SN Attr VSize VFree
rootvg 1 5 0 wz--n- <99.02g <76.02glvextend
コマンドで、LV を拡張します。
今回は、空き容量を全て使ってrootlv
を拡張します。成功すると、以下のような出力が得られます。1
sudo lvextend -l +100%FREE /dev/rootvg/rootlv
1
2Size of logical volume rootvg/rootlv changed from 2.00 GiB (512 extents) to <78.02 GiB (19973 extents).
Logical volume rootvg/rootlv successfully resized.- ファイルシステムを拡張します。xfs の場合は、xfs_growfs, ext4 の場合は、resize2fs コマンドを使います。成功すると、以下のような出力が得られます。
1
sudo xfs_growfs /
1
2
3
4
5
6
7
8
9
10
11meta-data=/dev/mapper/rootvg-rootlv isize=512 agcount=4, agsize=131072 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=524288, 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 524288 to 20452352 - 最後に、df コマンドで / のサイズを確認してみましょう。目的のサイズになっていれば無事成功です。
1
df -hT /
1
2Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/rootvg-rootlv xfs 79G 625M 78G 1% /
※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。