次の方法で共有


Linux を実行している仮想マシンの SCSI から NVMe への変換

この記事では、Linux を実行している仮想マシン (VM) を SCSI から NVMe ストレージに変換するプロセスについて説明します。 NVMe に移行すると、その向上したパフォーマンスとスケーラビリティを活用できます。

SCSI と NVMe

Azure VM は、Small Computer System Interface (SCSI) と NVMe の 2 種類のストレージ インターフェイスをサポートしています。 SCSI インターフェイスは、コンピューターと周辺機器の間の物理的な接続とデータ転送を提供するレガシ標準です。 NVMe は、接続性とデータ転送を提供するという点では SCSI と似ていますが、サーバーとストレージ システムの間のデータ転送については、NVMe の方がより高速で効率的なインターフェイスです。

SCSI インターフェイス VM のサポート

Azure は、SCSI ストレージを提供する VM オファリングのバージョンで SCSI インターフェイスを引き続きサポートします。 ただし、今後、すべての新しい VM シリーズで SCSI ストレージがオプションとして提供されるとは限りません。

VM の変更点

ホスト インターフェイスを SCSI から NVMe に変更しても、リモート ストレージ (OS ディスクまたはデータ ディスク) は変更されませんが、オペレーティング システムによるディスクの表示方法が変更されます。

Disk SCSI 対応 VM SCSI tempdisk を使用した NVMe VM (例: Ebds_v5) NVMe tempdisk を使用した NVMe 仮想マシン
OS ディスク /dev/sda /dev/nvme0n1 /dev/nvme0n1
一時ディスク /dev/sdb /dev/sda /dev/nvme1n1
最初のデータ ディスク /dev/sdc /dev/nvme0n2 /dev/nvme0n2

ヒント

一部の VM の種類には、複数の一時ディスクがあります (例: E64ds_v6)

以下のセクションでは、Azure Boost を使用して Azure VM を SCSI から NVMe に変換する方法について説明します。これにより、パフォーマンスの向上を最大限に利用し、クラウド コンピューティング環境で競争力を維持することができます。

仮想マシン (VM) を SCSI から NVMe に移行する

SCSI から NVMe に移行するには、いくつかの手順に従う必要があります。

  1. 仮想マシン シリーズが NVMe をサポートしているかどうかを確認する
  2. オペレーティング システムが NVMe に対応しているかどうかを確認する
  3. 仮想マシンを NVMe に変換する
  4. オペレーティング システムを確認する

1. 仮想マシン シリーズが NVMe をサポートしているかどうかを確認する

NVMe に接続されているディスクをサポートするサポート対象の仮想マシンについては、「Azure Boost の概要」サイトの可用性一覧で説明されています。

2. オペレーティング システムが NVMe に対応しているかどうかを確認する

オペレーティング システムは、NVMe デバイスをサポートしている必要があります。たとえば、デバイス ドライバー、起動時に使用される一時ファイル システムである initrdm を準備する必要があります。 さらに、ファイル システムのマウント ポイントを検証する必要があります。これらは、SCSI デバイス名 (/dev/sdX) を使用しているかどうかの確認に使用されるからです。

移行スクリプトは、 -FixOperatingSystemSettingsを使用するときに、これらの準備チェックを自動的に処理できます。

2.1 VM のコントローラーの種類を確認する

2.1.1 PowerShell を使用してコントローラーの種類を確認する
PS C:\Users\user1> $vm = Get-AzVM -name [your-vm-name]
PS C:\Users\user1> $vm.StorageProfile.DiskControllerType
SCSI
PS C:\Users\user1>
2.1.2 Azure CLI を使用してコントローラーの種類を確認する
$ az vm show --name [your-vm-name] --resource-group [your-resource-group-name]
{
"additionalCapabilities": {
...
 "storageProfile": {
 ...
   "diskControllerType": "SCSI",
 ...
2.1.3 Azure portal を使用してコントローラーの種類を確認する

コントローラーを確認する Azure portal のスクリーンショット。

2.2 移行の準備

移行スクリプトは、 -FixOperatingSystemSettings パラメーターを使用する場合に、前提条件に自動的に対応できます。

必要な変更を手動で行う場合は、検証します

  • インストールされた NVMe モジュールと initrd/initramfs の一部
  • GRUB 構成には、パラメーター nvme_core.io_timeout=240 が含まれています
  • デバイスの /etc/fstab チェック

initrd/initramfs を更新するために必要なすべてのコマンドについては、OS ベンダーにお問い合わせください。

2.2.1 PowerShell の準備

ヒント

この手順は、Azure CloudShell でスクリプトを実行する場合は必要ありません

  1. を使用して PowerShell をインストールする https://aka.ms/powershell

  2. Connect-AzAccountを使用して Azure に接続し、Select-AzSubscription -Subscription [your-subscription-id]を使用して正しいサブスクリプションを選択してください。

  3. を使用して実行ポリシーを設定する Set-ExecutionPolicy -ExecutionPolicy Unrestricted

2.2.2 スクリプトをダウンロードする

PowerShell コマンドを使用してスクリプトをダウンロードできます

Invoke-WebRequest -Uri "https://raw.githubusercontent.com/Azure/SAP-on-Azure-Scripts-and-Utilities/refs/heads/main/Azure-NVMe-Utils/Azure-NVMe-Conversion.ps1" -OutFile ".\NVMe-Conversion.ps1"

2.3 移行を実行する

スクリプトには複数のパラメーターがあります。

パラメーター 説明 必須
-ResourceGroupName VM のリソース グループ名 イエス
-VMName Azure 上の仮想マシンの名前 イエス
-NewControllerType VM が変換されるストレージ コントローラーの種類 (NVMe または SCSI) イエス
-VMSize VM を変換するために希望する Azure VM SKU イエス
-StartVM 変換後に VM を起動する いいえ
-IgnoreSKUCheck VM SKU のチェックを無視する いいえ
-IgnoreWindowsVersionCheck Windows バージョンチェックを無視する いいえ
-FixOperatingSystemSettings Azure RunCommands を使用して OS 設定を自動的に修正する いいえ
-WriteLogfile ログ ファイルを作成する いいえ
-IgnoreAzureModuleCheck インストールされている Azure モジュールのチェックを実行しない いいえ
-IgnoreOSCheck OS の準備状況を確認しないでください。OS の準備ができていることが期待されます いいえ
-SleepSeconds VM を開始する前に Azure が変更を解決する時間 いいえ

サンプル コマンド:

# Example usage
.\Azure-NVMe-Conversion.ps1 -ResourceGroupName <your-RG> -VMName <your-VMname> -NewControllerType <NVMe/SCSI> -VMSize <new-VM-SKU> -StartVM -FixOperatingSystemSettings

ヒント

いつでも SCSI に戻すことができます。スクリプトは元の構成に直接戻すコマンドを共有します。

2.3.1 サンプル出力
PS /home/philipp> ./NVMe-Conversion.ps1 -ResourceGroupName testrg -VMName testvm -NewControllerType NVMe -VMSize Standard_E4bds_v5 -StartVM -FixOperatingSystemSettings                                          
00:00 - INFO      - Starting script Azure-NVMe-Conversion.ps1
00:00 - INFO      - Script started at 06/27/2025 15:41:39
00:00 - INFO      - Script version: 2025062704
00:00 - INFO      - Script parameters:
00:00 - INFO      -   ResourceGroupName -> testrg
00:00 - INFO      -   VMName -> testvm
00:00 - INFO      -   NewControllerType -> NVMe
00:00 - INFO      -   VMSize -> Standard_E4bds_v5
00:00 - INFO      -   StartVM -> True
00:00 - INFO      -   FixOperatingSystemSettings -> True
00:00 - INFO      - Script Version 2025062704                                                                           
00:00 - INFO      - Module Az.Compute is installed and the version is correct.
00:00 - INFO      - Module Az.Accounts is installed and the version is correct.
00:00 - INFO      - Module Az.Resources is installed and the version is correct.
00:00 - INFO      - Connected to Azure subscription name: AG-GE-CE-PHLEITEN
00:00 - INFO      - Connected to Azure subscription ID: 232b6759-xxxx-yyyy-zzzz-757472230e6c
00:00 - INFO      - VM testvm found in Resource Group testrg
00:01 - INFO      - VM testvm is running
00:01 - INFO      - VM testvm is running Linux
00:01 - INFO      - VM testvm is running SCSI
00:02 - INFO      - Running in Azure Cloud Shell
00:02 - INFO      - Authentication token is a SecureString
00:02 - INFO      - Authentication token received
00:02 - INFO      - Getting available SKU resources
00:02 - INFO      - This might take a while ...
00:06 - INFO      - VM SKU Standard_E4bds_v5 is available in zone 1
00:06 - INFO      - Resource disk support matches between original VM size and new VM size.
00:06 - INFO      - Found VM SKU - Checking for Capabilities
00:06 - INFO      - VM SKU has supported capabilities
00:06 - INFO      - VM supports NVMe
00:06 - INFO      - Pre-Checks completed
00:06 - INFO      - Entering Linux OS section
00:37 - INFO      -    Script output: Enable succeeded: 
00:37 - INFO      -    Script output: [stdout]
00:37 - INFO      -    Script output: [INFO] Operating system detected: sles
00:37 - INFO      -    Script output: [INFO] Checking if NVMe driver is included in initrd/initramfs...
00:37 - INFO      -    Script output: [INFO] NVMe driver found in initrd/initramfs.
00:37 - INFO      -    Script output: [INFO] Checking nvme_core.io_timeout parameter...
00:37 - INFO      -    Script output: [INFO] nvme_core.io_timeout is set to 240.
00:37 - INFO      -    Script output: [INFO] Checking /etc/fstab for deprecated device names...
00:37 - INFO      -    Script output: [INFO] /etc/fstab does not contain deprecated device names.
00:37 - INFO      -    Script output: 
00:37 - INFO      -    Script output: [stderr]
00:37 - INFO      -    Script output: 
00:37 - INFO      - Errors: 0 - Warnings: 0 - Info: 7
00:37 - INFO      - Shutting down VM testvm
01:18 - INFO      - VM testvm stopped
01:18 - INFO      - Checking if VM is stopped and deallocated
01:19 - INFO      - Setting OS Disk capabilities for testvm_OsDisk_1_165411276cbe459097929b981eb9b3e2 to new Disk Controller Type to NVMe
01:19 - INFO      - generated URL for OS disk update:
01:19 - INFO      - https://management.azure.com/subscriptions/232b6759-xxxx-yyyy-zzzz-757472230e6c/resourceGroups/testrg/providers/Microsoft.Compute/disks/testvm_OsDisk_1_165411276cbe459097929b981eb9b3e2?api-version=2023-04-02
01:19 - INFO      - OS Disk updated
01:19 - INFO      - Setting new VM Size from Standard_E4s_v3 to Standard_E4bds_v5 and Controller to NVMe
01:19 - INFO      - Updating VM testvm
01:54 - INFO      - VM testvm updated
01:54 - INFO      - Start after update enabled for VM testvm
01:54 - INFO      - Waiting for 15 seconds before starting the VM
02:09 - INFO      - Starting VM testvm
03:31 - INFO      - VM testvm started
03:31 - INFO      - As the virtual machine got started using the script you can check the operating system now
03:31 - INFO      - If you have any issues after the conversion you can revert the changes by running the script with the old settings
03:31 - IMPORTANT - Here is the command to revert the changes:
03:31 - INFO      -    .\Azure-NVMe-Conversion.ps1 -ResourceGroupName testrg -VMName testvm -NewControllerType SCSI -VMSize Standard_E4s_v3 -StartVM
03:31 - INFO      - Script ended at 06/27/2025 15:45:11
03:31 - INFO      - Exiting
PS /home/philipp>

後でオペレーティングシステムにアクセスしようとして問題が発生した場合は、対策を検討してください。

  • Linux オペレーティング システム用シリアル コンソール

  • Azure portal のオペレーティング システムのスクリーンショット

何かが発生した場合は、スクリプトの最後に示されているコマンドを使用して、常に SCSI に戻すことができます。

.\Azure-NVMe-Conversion.ps1 -ResourceGroupName testrg -VMName testvm -NewControllerType SCSI -VMSize Standard_E4s_v3 -StartVM

2.4 結果を確認する

2.4.1 Azure portal で結果を確認する

Azure portal のスクリーンショット。

2.4.2 PowerShell で結果を確認する
PS C:\Users> $vm = Get-AzVM -name [your-vm-name]
PS C:\Users> $vm.StorageProfile.DiskControllerType
NVMe
PS C:\Users>

3. オペレーティング システムを確認する

3.1 デバイスを確認する

nvme コマンドを使用してデバイスを確認できます。nvme コマンドが見つからない場合は、"nvme-cli" パッケージをインストールします。

nvme list

出力には、OS ディスクとデータ ディスクが表示されます。 OS ディスクとデータ ディスクのスクリーンショット。

3.2 NVMe の udev ファイルを取得する (省略可能)

SCSI 仮想マシン上には、waagent (Azure エージェント) に統合された udev 規則により、データ ディスクを特定するリンクが /dev/disk/azure/scsi1/lunX に作成されました。 SCSI はもう使用されていないため、これらの規則は適用されません。

NVMe 対応の udev 規則をデプロイする 2 つの選択可能なオプションのいずれかを使用すると、ディレクトリ /dev/disk/azure/data/by-lun に新しいシンボリック リンクが表示されます。 このディレクトリは、/dev/disk/azure/scsi1 の代わりです。

nvme-conversion-vm:/usr/lib/udev/rules.d # ls -l /dev/disk/azure/data/by-lun/
total 0
lrwxrwxrwx 1 root root 19 Jun 7 13:52 0 -> ../../../../nvme0n2
lrwxrwxrwx 1 root root 19 Jun 7 13:52 1 -> ../../../../nvme0n3
nvme-conversion-vm:/usr/lib/udev/rules.d #
3.2.1 udev ファイルの手動ダウンロード

新しい udev 規則ファイルをダウンロードするには、次のコマンドを使用します。curl https://raw.githubusercontent.com/Azure/SAP-on-Azure-Scripts-and-Utilities/refs/heads/main/NVMe-Preflight-Check/88-azure-nvme-data-disk.rules の次に udevadm control --reload-rules && udevadm trigger を実行して udev 規則を再度読み込みます。

3.2.2 Azure VM ユーティリティを使用してパッケージをインストールする準備完了

/results/cjp256/azure-vm-utils/のインデックスには、複数のディストリビューションで使用できるプリコンパイル済みパッケージがあります。

パッケージを統合するために既に複数のディストリビューションが開始されました。 リポジトリから直接インストールできます。

流通 最小バージョン
SUSE SLES 15 SP5 以降
RedHat RHEL 9.6 以降
ウブントゥ Ubuntu 25.04 以降