次の方法で共有


Linux VM の仮想ハード ディスクを拡張する

適用対象: ✔️ 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 の作成と準備に関する記事をご覧ください。

次のサンプルでは、 myResourceGroupmyVM などのプレースホルダー パラメーター名を独自の値に置き換えます。

重要

ディスクがダウンタイムなしで Expand の要件を満たしている場合は、手順 1 と 3 をスキップできます。

既存のディスクの圧縮はサポートされていないため、データが失われる可能性があります。

ディスクを展開したら、OS のボリュームを展開して、より大きなディスクを利用します。

  1. 仮想ハード ディスクに対する操作は、実行中の VM では実行できません。 az vm deallocate を使用して VM の割り当てを解除します。 次の例では、myResourceGroup という名前のリソース グループ内の myVM という VM の割り当てを解除します。

    az vm deallocate --resource-group myResourceGroup --name myVM
    

    仮想ハード ディスクを拡張するには、VM の割り当てを解除する必要があります。 az vm stop で VM を停止すると、コンピューティング リソースは解放されません。 コンピューティング リソースを解放するには、az vm deallocate を使用します。

  2. 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
    

    マネージド ディスクを拡張すると、更新されたサイズがマネージド ディスクの最も近いサイズに切り上げられます。

  3. 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 に変更されていることに注意してください。

  1. 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
    
  2. このデバイスの再スキャン ファイルに 1 文字を挿入します。 この例の sda への参照に注意してください。 ディスク識別子は、別のディスク デバイスのサイズが変更された場合に変更されます。

    echo 1 | sudo tee /sys/class/block/sda/device/rescan
    
  3. 新しいディスク サイズが認識されたことを確認します。

    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 によってルート ディスク上のすべての空き連続領域が使用されます。 サイズ変更操作では、少量の空き領域を使用できる必要があります。 この場合、シーケンスは次のようになります。

  1. 前に説明したように、OS ディスクのサイズを増やします。
  2. VM を再起動し、 ルート ユーザー アカウントを使用して VM にアクセスします。
  3. 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:~#

ダウンタイムなしで拡張するクラシック 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
       }
   }
}