適用対象: ✔️ Linux VM ✔️ フレキシブルなスケール セット
この記事では、Linux 仮想マシン (VM) のオペレーティング システム (OS) ディスクとデータ ディスクの拡張について説明します。
データ ディスクを追加して記憶域スペースを増やしたり、既存のデータ ディスクを拡張したりすることもできます。 OS の既定の仮想ハード ディスク サイズは、通常、Azure の Linux VM では 30 GB です。 この記事では、OS ディスクまたはデータ ディスクの拡張について説明します。 ストライプ ボリュームのサイズを拡大することはできません。
OS ディスクの最大容量は 4,095 GiB です。 ただし、多くのオペレーティング システムは既定でマスター ブート レコード (MBR) でパーティション分割されます。 MBR では、使用可能なサイズが 2 TiB に制限されています。 2 TiB 以上が必要な場合は、データ ストレージ用のデータ ディスクのアタッチを検討してください。 OS ディスクにデータを格納する必要があり、追加の領域が必要な場合は、GUID パーティション テーブル (GPT) に変換します。
警告
ファイルシステムが正常な状態であり、ディスク パーティション テーブルの種類 (GPT または MBR) が新しいサイズをサポートできることを常に確認してください。 ディスク拡張操作を実行する前に、データをバックアップします。 詳細については、Azure Backup のクイックスタートに関する記事を参照してください。
オペレーティング システム内の Azure データ ディスク オブジェクトを識別する
VM 上に複数のデータ ディスクがあるデータ ディスクを拡張する場合、Azure 論理ユニット番号 (LUN) を Linux デバイスに関連付けるのが難しい場合があります。 OS ディスクの拡張が必要な場合は、Azure portal で OS ディスクとして明確にラベルが付けられます。
まず、df
コマンドを使用して、ディスク使用率、マウント ポイント、デバイスの関係を特定します。
df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 xfs 97G 1.8G 95G 2% /
<truncated>
/dev/sdd1 ext4 32G 30G 727M 98% /opt/db/data
/dev/sde1 ext4 32G 49M 30G 1% /opt/db/log
ここでは、たとえば、 /opt/db/data
ファイルシステムがほぼ満杯で、 /dev/sdd1
パーティションに配置されていることを確認できます。
df
の出力には、ディスクがデバイス パスを使用してマウントされているか、fstab の (優先) UUID を使用してマウントされているかがデバイス パスが示されます。 ファイル システムの形式を示す [種類] 列に注意してください。 この形式は後で重要になります。
次に、/dev/sdd
の内容を調べて、/dev/disk/azure/scsi1
に関連付ける LUN を見つけます。 次の ls
コマンドの出力は、Linux OS 内の /dev/sdd
と呼ばれるデバイスが、Azure portal を見ると LUN1
に配置されていることを示しています。
sudo ls -alF /dev/disk/azure/scsi1/
total 0
drwxr-xr-x. 2 root root 140 Sep 9 21:54 ./
drwxr-xr-x. 4 root root 80 Sep 9 21:48 ../
lrwxrwxrwx. 1 root root 12 Sep 9 21:48 lun0 -> ../../../sdc
lrwxrwxrwx. 1 root root 12 Sep 9 21:48 lun1 -> ../../../sdd
lrwxrwxrwx. 1 root root 13 Sep 9 21:48 lun1-part1 -> ../../../sdd1
lrwxrwxrwx. 1 root root 12 Sep 9 21:54 lun2 -> ../../../sde
lrwxrwxrwx. 1 root root 13 Sep 9 21:54 lun2-part1 -> ../../../sde1
Azure マネージド ディスクを展開する
ダウンタイムなしで拡張する
VM の割り当てを解除せずに、マネージド ディスクを拡張できます。 ディスクのホスト キャッシュ設定によって、VM の割り当てを解除せずにデータ ディスクを拡張できるかどうかは変わりません。
この機能には次の制限があります。
重要
この制限は、Premium SSD v2 または Ultra Disks には適用されません。
Standard HDD、Standard SSD、または Premium SSD ディスクが 4 TiB 以下の場合は、4 TiB を超えて拡張する前に、VM の割り当てを解除し、ディスクをデタッチします。 これらのディスクの種類のいずれかが既に 4 TiB を超えている場合は、VM の割り当てを解除してディスクをデタッチすることなく拡張できます。
- データ ディスクに対してのみサポートされます。
- 共有ディスクではサポートされていません。
- インストールし、次のいずれかのオプションを使用する必要があります。
- 一部のクラシック VM では使用できません。
このスクリプトを使用して、ダウンタイムなしで拡張をサポートするクラシック VM 製品の一覧を取得します。
Ultra Disks と Premium SSD v2 で拡張する
ダウンタイムなしで Ultra Disks と Premium SSD v2 ディスクを拡張するには、次の追加の制限があります。
- データの バックグラウンド コピー もそのディスクで行われている間は、ディスクを拡張できません。 たとえば、 ディスクがスナップショットからバックフィルされている場合です。
- このパブリック プレビューでは、Ultra Disks または Premium SSD v2 ディスクで NVMe コントローラーを使用することで、ダウンタイムなしで VM を拡張できます。 このリリースはパブリック プレビューであるため、ダウンタイムなしで拡張の機能をテストするためにのみ使用する必要があります。 運用環境で VM を拡張しないでください。
次のリージョンでは、ダウンタイムなしで Ultra Disks または Premium SSD v2 ディスクで NVMe コントローラー を使用している VM を拡張できます。 Azure portal、Azure CLI、または Azure PowerShell モジュールのいずれかを使用します。
- 東南アジア
- ブラジル南部
- カナダ中部
- ドイツ中西部
- インド中部 (V6 VM では現在サポートされていません)
次のリージョンでは、ダウンタイムなしで Ultra Disks または Premium SSD v2 ディスクで NVMe コントローラー を使用している VM を拡張できます。 Azure CLI または Azure PowerShell モジュールのみを使用します。 現在、Azure portal を使用することはできません。
- 東アジア
- 米国中西部 (V6 VM では現在サポートされていません)
Windows VM と Linux VM に正しいサイズが反映されるまで、最大 10 分かかります。 Linux VM の場合は、Linux 再スキャン機能を実行する必要があります。 ワークロードがない Windows VM の場合は、 Windows 再スキャン機能を実行する必要があります。 すぐに再スキャンできますが、時間が 10 分以内の場合は、正しいサイズを表示するために再スキャンが必要になる場合があります。
Azure マネージド ディスクを展開する
最新の Azure CLI がインストールされ、az login を使用して Azure アカウントにサインインしていることを確認します。
この記事では、少なくとも 1 つのデータ ディスクが接続され、準備ができている Azure の既存の VM が必要です。 使用できる VM がまだない場合は、データ ディスクを含む VM の作成と準備に関する記事をご覧ください。
次のサンプルでは、 myResourceGroup や myVM などのプレースホルダー パラメーター名を独自の値に置き換えます。
既存のディスクの圧縮はサポートされていないため、データが失われる可能性があります。
ディスクを展開したら、OS のボリュームを展開して、より大きなディスクを利用します。
仮想ハード ディスクに対する操作は、実行中の VM では実行できません。
az vm deallocate を使用して VM の割り当てを解除します。 次の例では、myResourceGroup という名前のリソース グループ内の myVM という VM の割り当てを解除します。
az vm deallocate --resource-group myResourceGroup --name myVM
仮想ハード ディスクを拡張するには、VM の割り当てを解除する必要があります。
az vm stop
で VM を停止すると、コンピューティング リソースは解放されません。 コンピューティング リソースを解放するには、az vm deallocate
を使用します。
az disk list を使用して、リソース グループに含まれるマネージド ディスクの一覧を表示します。 次の例は、 myResourceGroup という名前のリソース グループ内のマネージド ディスクの一覧を示しています。
az disk list \
--resource-group myResourceGroup \
--query '[*].{Name:name,size:diskSizeGB,Tier:sku.tier}' \
--output table
az disk update を使用して、必要なディスクを拡張します。 次の例では、myDataDisk という名前のマネージド ディスクを 200 GB に拡張します。
az disk update \
--resource-group myResourceGroup \
--name myDataDisk \
--size-gb 200
マネージド ディスクを拡張すると、更新されたサイズがマネージド ディスクの最も近いサイズに切り上げられます。
az vm start を使用して VM を起動します。 次の例では、myResourceGroup という名前のリソース グループ内の myVM という VM を起動します。
az vm start --resource-group myResourceGroup --name myVM
ディスク パーティションとファイル システムの拡張
パーティションのサイズ変更を実行するには、多くのツールを使用できます。 この記事の残りの部分で詳しく説明するツールは、cloud-init など、特定の自動化されたプロセスで使用されるツールと同じです。 ここで説明するように、gdisk
パッケージを使用するgrowpart
ツールは、 などの一部のツールの古いバージョンでは GPT をサポートしていないため、GPT ディスクとのユニバーサル互換性を提供します。
変更されたディスク サイズを検出する
前述の手順を使用してダウンタイムなしでデータ ディスクを拡張した場合、デバイスが再スキャンされるまで、報告されるディスク サイズは変更されません。 再スキャンは通常、ブート プロセス中にのみ行われます。 この再スキャンをオンデマンドで呼び出すには、次の手順を使用します。 この記事のメソッドを使用する場合、この例では、データ ディスクは現在 /dev/sda
されており、サイズが 256 GiB から 512 GiB に変更されていることに注意してください。
fdisk -l /dev/sda
からの出力の最初の行で現在認識されているサイズを特定します。
sudo fdisk -l /dev/sda
Disk /dev/sda: 256 GiB, 274877906944 bytes, 536870912 sectors
Disk model: Virtual Disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x43d10aad
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 536870878 536868831 256G 83 Linux
このデバイスの再スキャン ファイルに 1
文字を挿入します。 この例の sda
への参照に注意してください。 ディスク識別子は、別のディスク デバイスのサイズが変更された場合に変更されます。
echo 1 | sudo tee /sys/class/block/sda/device/rescan
新しいディスク サイズが認識されたことを確認します。
sudo fdisk -l /dev/sda
Disk /dev/sda: 512 GiB, 549755813888 bytes, 1073741824 sectors
Disk model: Virtual Disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x43d10aad
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 536870878 536868831 256G 83 Linux
この記事の残りの部分では、OS レベルでボリュームのサイズを増やす手順の例に OS ディスクを使用します。 展開されたディスクがデータ ディスクの場合は、前の ガイダンスを使用してデータ ディスク デバイスを識別します。 ガイドラインとして、次の手順に従います。 必要に応じて、データ ディスク デバイス ( /dev/sda
など)、パーティション番号、ボリューム名、マウント ポイント、ファイルシステム形式に置き換えます。
Linux OS のガイダンスはすべて一般的なものとして考えられ、どのディストリビューションにも適用される可能性がありますが、通常は特定のマーケットプレイスの出版者の規約に合わせていることが一般的です。 Red Hat に基づく、または Red Hat の互換性を要求するディストリビューションのパッケージ要件については、Red Hat のドキュメントを参照してください。
OS ディスクのサイズを増やす
次の手順は、動作保証済み Linux ディストリビューションに適用されます。
先に進む前に、VM の完全バックアップ コピーを作成するか、少なくとも OS ディスクのスナップショットを作成します。
Ubuntu 16.x 以降では、OS ディスクとファイルシステムのルート パーティションが自動的に拡張され、cloud-init によってルート ディスク上のすべての空き連続領域が使用されます。 サイズ変更操作では、少量の空き領域を使用できる必要があります。 この場合、シーケンスは次のようになります。
- 前に説明したように、OS ディスクのサイズを増やします。
- VM を再起動し、 ルート ユーザー アカウントを使用して VM にアクセスします。
- OS ディスクにファイルシステム サイズの増加が表示されることを確認します。
次の例に示すように、OS ディスクはポータルから 100 GB にサイズ変更されています。
/
にマウントされた/dev/sda1
ファイルシステムに 97 GB が表示されるようになりました。
df -Th
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 314M 0 314M 0% /dev
tmpfs tmpfs 65M 2.3M 63M 4% /run
/dev/sda1 ext4 97G 1.8G 95G 2% /
tmpfs tmpfs 324M 0 324M 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 324M 0 324M 0% /sys/fs/cgroup
/dev/sda15 vfat 105M 3.6M 101M 4% /boot/efi
/dev/sdb1 ext4 20G 44M 19G 1% /mnt
tmpfs tmpfs 65M 0 65M 0% /run/user/1000
user@ubuntu:~#
SUSE 12 SP4、SUSE SLES 12 for SAP、SUSE SLES 15、SUSE SLES 15 for SAP で OS ディスクのサイズを増やすには、次のようにします。
前述の手順に従って、Azure インフラストラクチャ内のディスクを拡張します。
別のユーザーとしてサインインした後、sudo
コマンドを使用して、VM にルート ユーザーとしてアクセスします。
sudo -i
次のコマンドを使用して、パーティションのサイズを変更するために使用される growpart
パッケージをインストールします (まだ存在しない場合)。
zypper install growpart
lsblk
コマンドを使用して、ファイルシステムのルート (/
) にマウントされているパーティションを見つけます。 この場合、デバイス sda
のパーティション 4 が /
にマウントされます。
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 48G 0 disk
├─sda1 8:1 0 2M 0 part
├─sda2 8:2 0 512M 0 part /boot/efi
├─sda3 8:3 0 1G 0 part /boot
└─sda4 8:4 0 28.5G 0 part /
sdb 8:16 0 4G 0 disk
└─sdb1 8:17 0 4G 0 part /mnt/resource
growpart
コマンドと、前のステップで特定したパーティション番号を使用して、必要なパーティションのサイズを変更します。
growpart /dev/sda 4
CHANGED: partition=4 start=3151872 old: size=59762655 end=62914527 new: size=97511391 end=100663263
lsblk
コマンドをもう一度実行して、パーティションが増加したかどうかを確認します。
次の出力は、 /dev/sda4
パーティションのサイズが 46.5 GB に変更されたことを示しています。
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 48G 0 disk
├─sda1 8:1 0 2M 0 part
├─sda2 8:2 0 512M 0 part /boot/efi
├─sda3 8:3 0 1G 0 part /boot
└─sda4 8:4 0 46.5G 0 part /
sdb 8:16 0 4G 0 disk
└─sdb1 8:17 0 4G 0 part /mnt/resource
-f
フラグを指定して lsblk
コマンドを使用して、OS ディスク上のファイルシステムの種類を特定します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1
├─sda2 vfat EFI AC67-D22D /boot/efi
├─sda3 xfs BOOT 5731a128-db36-4899-b3d2-eb5ae8126188 /boot
└─sda4 xfs ROOT 70f83359-c7f2-4409-bba5-37b07534af96 /
sdb
└─sdb1 ext4 8c4ca904-cd93-4939-b240-fb45401e2ec6 /mnt/resource
ファイルシステムの種類に基づいて、適切なコマンドを使用してファイルシステムのサイズを変更します。
xfs
の場合は、次のコマンドを使用します。
xfs_growfs /
出力例:
meta-data=/dev/sda4 isize=512 agcount=4, agsize=1867583 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0 rmapbt=0
= reflink=0
data = bsize=4096 blocks=7470331, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=3647, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 7470331 to 12188923
ext4
の場合は、次のコマンドを使用します。
resize2fs /dev/sda4
次のコマンドを使用して、 df -Th
のファイルシステム サイズの増加を確認します。
df -Thl
出力例:
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 445M 4.0K 445M 1% /dev
tmpfs tmpfs 458M 0 458M 0% /dev/shm
tmpfs tmpfs 458M 14M 445M 3% /run
tmpfs tmpfs 458M 0 458M 0% /sys/fs/cgroup
/dev/sda4 xfs 47G 2.2G 45G 5% /
/dev/sda3 xfs 1014M 86M 929M 9% /boot
/dev/sda2 vfat 512M 1.1M 511M 1% /boot/efi
/dev/sdb1 ext4 3.9G 16M 3.7G 1% /mnt/resource
tmpfs tmpfs 92M 0 92M 0% /run/user/1000
tmpfs tmpfs 92M 0 92M 0% /run/user/490
前の例では、OS ディスクのファイルシステム サイズが増加していることがわかります。
前述の手順に従って、Azure インフラストラクチャ内のディスクを拡張します。
別のユーザーとしてサインインした後、sudo
コマンドを使用して、VM にルート ユーザーとしてアクセスします。
sudo -i
lsblk
コマンドを使用して、ファイルシステムのルートにマウントされている論理ボリューム (LV) を判別します (/
)。 この場合、 rootvg-rootlv
は /
にマウントされます。 別のファイルシステムのサイズ変更が必要な場合は、このセクション全体で LV とマウント ポイントを置き換えます。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
fd0
sda
├─sda1 vfat C13D-C339 /boot/efi
├─sda2 xfs 8cc4c23c-fa7b-4a4d-bba8-4108b7ac0135 /boot
├─sda3
└─sda4 LVM2_member zx0Lio-2YsN-ukmz-BvAY-LCKb-kRU0-ReRBzh
├─rootvg-tmplv xfs 174c3c3a-9e65-409a-af59-5204a5c00550 /tmp
├─rootvg-usrlv xfs a48dbaac-75d4-4cf6-a5e6-dcd3ffed9af1 /usr
├─rootvg-optlv xfs 85fe8660-9acb-48b8-98aa-bf16f14b9587 /opt
├─rootvg-homelv xfs b22432b1-c905-492b-a27f-199c1a6497e7 /home
├─rootvg-varlv xfs 24ad0b4e-1b6b-45e7-9605-8aca02d20d22 /var
└─rootvg-rootlv xfs 4f3e6f40-61bf-4866-a7ae-5c6a94675193 /
ルート パーティションを含む LVM ボリューム グループ (VG) に空き領域があるかどうかを確認します。 空き領域が使用可能な場合は、手順 12 に進みます。
vgdisplay rootvg
--- Volume group ---
VG Name rootvg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 7
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 6
Open LV 6
Max PV 0
Cur PV 1
Act PV 1
VG Size <63.02 GiB
PE Size 4.00 MiB
Total PE 16132
Alloc PE / Size 6400 / 25.00 GiB
Free PE / Size 9732 / <38.02 GiB
VG UUID lPUfnV-3aYT-zDJJ-JaPX-L2d7-n8sL-A9AgJb
この例の Free PE / Size
行は、ディスクのサイズが既に変更されているため、ボリューム グループに 38.02 GB の空き容量があることを示しています。
cloud-utils-growpart
パッケージをインストールして、 コマンドを提供します。これは、OS ディスクのサイズを大きくし、GPT ディスク レイアウトの ハンドラーを増やす必要があります。 このパッケージは、ほとんどの Marketplace イメージにプレインストールされています。
dnf install cloud-utils-growpart gdisk
Red Hat バージョン 7 以前では、dnf
の代わりに yum
コマンドを使用できます。
pvscan
コマンドを使用して、rootvg
という名前のボリューム グループ内の LVM 物理ボリューム (PV) またはボリュームを保持するディスクとパーティションを決定します。 角かっこ ([
と ]
) の間に表示されるサイズと空き領域に注意してください。
pvscan
PV /dev/sda4 VG rootvg lvm2 [<63.02 GiB / <38.02 GiB free]
lsblk
を使用して、パーティションのサイズを確認します。
lsblk /dev/sda4
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda4 8:4 0 63G 0 part
├─rootvg-tmplv 253:1 0 2G 0 lvm /tmp
├─rootvg-usrlv 253:2 0 10G 0 lvm /usr
├─rootvg-optlv 253:3 0 2G 0 lvm /opt
├─rootvg-homelv 253:4 0 1G 0 lvm /home
├─rootvg-varlv 253:5 0 8G 0 lvm /var
└─rootvg-rootlv 253:6 0 2G 0 lvm /
growpart
、デバイス名、パーティション番号を使用して、この PV を含むパーティションを展開します。 これにより、デバイス上のすべての連続した空き領域を使用するように、指定したパーティションが拡張されます。
growpart /dev/sda 4
CHANGED: partition=4 start=2054144 old: size=132161536 end=134215680 new: size=199272414 end=201326558
lsblk
コマンドをもう一度使用して、パーティションのサイズが予想されるサイズに変更されたことを確認します。 この例では、sda4
63G
から95G
に変更されていることに注意してください。
lsblk /dev/sda4
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda4 8:4 0 95G 0 part
├─rootvg-tmplv 253:1 0 2G 0 lvm /tmp
├─rootvg-usrlv 253:2 0 10G 0 lvm /usr
├─rootvg-optlv 253:3 0 2G 0 lvm /opt
├─rootvg-homelv 253:4 0 1G 0 lvm /home
├─rootvg-varlv 253:5 0 8G 0 lvm /var
└─rootvg-rootlv 253:6 0 2G 0 lvm /
新しく拡張されたパーティションの残りを利用してPVを拡張してください。
pvresize /dev/sda4
Physical volume "/dev/sda4" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
元の [size / free]
値と比較した場合、PV の新しいサイズが予想されるサイズであることを確認します。
pvscan
PV /dev/sda4 VG rootvg lvm2 [<95.02 GiB / <70.02 GiB free]
必要な量だけ LV を拡張します。これをボリューム グループ内のすべての空き領域にする必要はありません。 次の例では、次のコマンドを使用して、 /dev/mapper/rootvg-rootlv
のサイズを 2 GB から 12 GB (10 GB の増加) に変更します。 このコマンドにより、LV 上のファイルシステムのサイズも変更されます。
lvresize -r -L +10G /dev/mapper/rootvg-rootlv
出力例:
Size of logical volume rootvg/rootlv changed from 2.00 GiB (512 extents) to 12.00 GiB (3072 extents).
Logical volume rootvg/rootlv successfully resized.
meta-data=/dev/mapper/rootvg-rootlv isize=512 agcount=4, agsize=131072 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal 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 3145728
lvresize
コマンドにより、LV 内のファイル システムに対して適切なサイズ変更コマンドが自動的に呼び出されます。
/
にマウントされている/dev/mapper/rootvg-rootlv
で、df -Th
コマンドを使用してファイルシステム サイズが増加しているかどうかを確認します。
df -Th /
出力例:
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/rootvg-rootlv xfs 12G 71M 12G 1% /
同じ手順を使用して他の論理ボリュームのサイズを変更するには、手順 12 で lv
名を変更します。
前述の手順に従って、Azure インフラストラクチャ内のディスクを拡張します。
別のユーザーとしてサインインした後、sudo
コマンドを使用して、VM にルート ユーザーとしてアクセスします。
sudo -i
cloud-utils-growpart
パッケージをインストールして、 コマンドを提供します。これは、OS ディスクのサイズを大きくし、GPT ディスク レイアウトの ハンドラーを増やす必要があります。 このパッケージは、ほとんどの Marketplace イメージにプレインストールされています。
dnf install cloud-utils-growpart gdisk
Red Hat バージョン 7 以前では、dnf
の代わりに yum
コマンドを使用できます。
lsblk -f
コマンドを使用して、ルート (/
) パーティションを保持するパーティションとファイルシステムの種類を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 2a7bb59d-6a71-4841-a3c6-cba23413a5d2 /boot
├─sda2 xfs 148be922-e3ec-43b5-8705-69786b522b05 /
├─sda14
└─sda15 vfat 788D-DC65 /boot/efi
sdb
└─sdb1 ext4 923f51ff-acbd-4b91-b01b-c56140920098 /mnt/resource
検証の場合は、まず、gdisk
を使用してsda
ディスクのパーティション テーブルを一覧表示します。 この例では、パーティション 2 サイズが 29.0 GiB の 48.0 GiB ディスクが表示されます。 このディスクは、Azure portal で 30 GB から 48 GB に拡張されています。
gdisk -l /dev/sda
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 100663296 sectors, 48.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 78CDF84D-9C8E-4B9F-8978-8C496A1BEC83
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 62914526
Partitions will be aligned on 2048-sector boundaries
Total free space is 6076 sectors (3.0 MiB)
Number Start (sector) End (sector) Size Code Name
1 1026048 2050047 500.0 MiB 0700
2 2050048 62912511 29.0 GiB 0700
14 2048 10239 4.0 MiB EF02
15 10240 1024000 495.0 MiB EF00 EFI System Partition
growpart
コマンドを使用して、ルートのパーティション (この場合はsda2
) を展開します。 このコマンドを使用すると、ディスク上のすべての連続した領域を使用するようにパーティションが拡張されます。
growpart /dev/sda 2
CHANGED: partition=2 start=2050048 old: size=60862464 end=62912512 new: size=98613214 end=100663262
次に、新しいパーティション テーブルを gdisk
で再度出力します。 パーティション 2 のサイズが 47.0 GiB になったことに注意してください。
gdisk -l /dev/sda
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 100663296 sectors, 48.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 78CDF84D-9C8E-4B9F-8978-8C496A1BEC83
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 100663262
Partitions will be aligned on 2048-sector boundaries
Total free space is 4062 sectors (2.0 MiB)
Number Start (sector) End (sector) Size Code Name
1 1026048 2050047 500.0 MiB 0700
2 2050048 100663261 47.0 GiB 0700
14 2048 10239 4.0 MiB EF02
15 10240 1024000 495.0 MiB EF00 EFI System Partition
xfs_growfs
を使用してパーティション上のファイルシステムを展開します。これは、マーケットプレースで生成された標準の Red Hat システムに適しています。
xfs_growfs /
meta-data=/dev/sda2 isize=512 agcount=4, agsize=1901952 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=7607808, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=3714, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 7607808 to 12326651
df
コマンドを使用して、新しいサイズが反映されていることを確認します。
df -hl
Filesystem Size Used Avail Use% Mounted on
devtmpfs 452M 0 452M 0% /dev
tmpfs 464M 0 464M 0% /dev/shm
tmpfs 464M 6.8M 457M 2% /run
tmpfs 464M 0 464M 0% /sys/fs/cgroup
/dev/sda2 48G 2.1G 46G 5% /
/dev/sda1 494M 65M 430M 13% /boot
/dev/sda15 495M 12M 484M 3% /boot/efi
/dev/sdb1 3.9G 16M 3.7G 1% /mnt/resource
tmpfs 93M 0 93M 0% /run/user/1000
ダウンタイムなしで拡張するクラシック VM SKU のサポート
クラシック VM SKU を使っている場合は、ダウンタイムなしでディスクの拡張がサポートされていない可能性があります。
次の PowerShell スクリプトを使用して、使用できる VM SKU を特定します。
Connect-AzAccount
$subscriptionId="yourSubID"
$___location="desiredRegion"
Set-AzContext -Subscription $subscriptionId
$vmSizes=Get-AzComputeResourceSku -Location $___location | where{$_.ResourceType -eq 'virtualMachines'}
foreach($vmSize in $vmSizes){
foreach($capability in $vmSize.Capabilities)
{
if(($capability.Name -eq "EphemeralOSDiskSupported" -and $capability.Value -eq "True") -or ($capability.Name -eq "PremiumIO" -and $capability.Value -eq "True") -or ($capability.Name -eq "HyperVGenerations" -and $capability.Value -match "V2"))
{
$vmSize.Name
}
}
}