適用対象: ✔️ Windows VM
この記事では、Azure 仮想マシン (VM) でディスクを読み取ることができない問題を解決する手順について説明します。
現象
ブート診断を使用して VM のスクリーンショットを表示すると、"ディスク読み取りエラーが発生しました。 Ctrl + Alt + Del キーを押して再起動します。
原因
このエラー メッセージは、ディスクの構造が破損していて読み取ることができないことを示します。 第 1 世代 VM を使用している場合は、ブート構成データを含むディスク パーティションが Active に設定されていない可能性もあります。
ソリューション
プロセスの概要
ヒント
VM の最新のバックアップがある場合は、そのバックアップから VM の復元を試行して、起動の問題を修正することができます。
- 修復 VM を作成してアクセスします。
- ソリューションを選択します。
- シリアル コンソールとメモリ ダンプの収集を有効にします。
- VM を再構築します。
Note
このブート エラーが発生する場合、ゲスト オペレーティング システム (OS) は動作しなくなります。 この問題を解決するには、オフライン モードでトラブルシューティングを行います。
修復 VM を作成してアクセスする
- VM 修復コマンドの手順 1 から 3 を使用して、修復 VM を準備します。
- リモート デスクトップ接続を使用して、修復 VM に接続します。
パーティションの状態をアクティブに設定する
Note
この軽減策は、第 1 世代 VM にのみ適用されます。 第 2 世代 VM (UEFI を使用) では、アクティブパーティションは使用されません。
復旧 VM へのリモート デスクトップ接続を開始します。
[コンピューターの管理] > [ディスクの管理] の順に開きます。 ディスクが [ディスクの管理] コンソールで [オンライン] になっていることを確認します。 アタッチしたシステム ディスクに割り当てられているドライブ文字をメモします。
ブート パーティションと Windows パーティションを特定します。 OS ディスクにパーティションが 1 つしかない場合、このパーティションはブート パーティションと Windows パーティションの両方になります。
OS ディスクに複数のパーティションが含まれている場合は、その中のフォルダーを表示してパーティションを識別できます。
Windows パーティションには、 Windows という名前のフォルダーが含まれており、このパーティションは他のパーティションよりも大きくなります。
ブート パーティションには、 Boot という名前のフォルダーが含まれています。 このフォルダーは既定では表示されません。 このフォルダーを表示するには、 [保護されたオペレーティング システム ファイルを表示しない (推奨)] を無効にし、隠しファイルおよびフォルダーを表示する必要があります。 通常、ブート パーティションは 300 MB から 500 MB です。
管理者として次のコマンドを実行して、ブート レコードを作成します。
bcdboot <Windows partition>:\Windows /S <windows partition>:
DISKPART ツールを使用して、Windows パーティションがアクティブかどうかを確認します。
管理者特権でのコマンド プロンプトを開き、DISKPART ツールを開きます。
diskpart
システム上のディスクを一覧表示し、追加されたディスクを探して、新しいディスクの選択に進みます。 この例では、新しいディスクは Disk 1 です。
list disk sel disk 1
そのディスク上のすべてのパーティションを一覧表示し、確認するパーティションを選択します。 通常、システム マネージド パーティションはサイズが小さく、サイズは約 350 MB です。 次の図では、このパーティションはパーティション 1 です。
list partition sel partition 1
パーティションの状態を確認します。 この例では、パーティション 1 はアクティブではありません。
detail partition
パーティションがアクティブでない場合は、アクティブ フラグを変更し、変更が正しく行われたかどうかを再確認します。
active detail partition
DISKPART ツールを終了します。
exit
ディスク パーティションを修正する
管理者特権でコマンド プロンプト (cmd.exe) を開きます。
次のコマンドを使用して、ディスクに対して CHKDSK を実行し、エラーの修正を行います。
chkdsk <DRIVE LETTER>: /f
/f コマンド オプションを追加すると、ディスク上のエラーが修正されます。
は、接続されている OS VHD の文字に置き換えてください。ドライブ文字>
シリアル コンソールとメモリ ダンプの収集を有効にする
重要
このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 したがって、次の手順を注意深く実行してください。 保護のために、レジストリを変更する前にレジストリをバックアップして、問題が発生した場合にレジストリを復元できるようにします。 レジストリのバックアップと復元方法の詳細は、「Windows のレジストリのバックアップおよび復元の方法」を参照してください。
推奨: VM を再構築する前に、次の手順に従ってシリアル コンソールとメモリ ダンプの収集を有効にします。
管理者として管理者特権でのコマンド プロンプト セッションを開きます。
/ems および /emssettings オプションを使用して、次の BCDEdit コマンドを実行します。
シリアル コンソールを有効にします。
bcdedit /store <volume-letter-containing-the-bcd-folder>:\boot\bcd /ems {<boot-loader-identifier>} ON bcdedit /store <volume-letter-containing-the-bcd-folder>:\boot\bcd /emssettings EMSPORT:1 EMSBAUDRATE:115200
OS ディスクの空き領域が、VM のメモリ サイズ (RAM) よりも大きいことを確認します。
OS ディスクに十分な領域がない場合は、メモリ ダンプ ファイルが作成される場所を変更し、その場所を、十分な空き領域がある VM に接続されているデータ ディスクを参照します。 場所を変更するには、次のコマンドで、
%SystemRoot%
をデータ ディスクのドライブ文字 (F:
など) に置き換えます。OS ダンプ ファイルを有効にするには、次の load、 add、および unload コマンドを実行して、 reg ツールを使用して推奨される構成を実装します。
壊れた OS ディスクからレジストリ ハイブを読み込みます。
reg load HKLM\<broken-system> <volume-letter-of-broken-os-disk>:\windows\system32\config\SYSTEM
ControlSet001 での有効化:
reg add "HKLM\<broken-system>\ControlSet001\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f reg add "HKLM\<broken-system>\ControlSet001\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f reg add "HKLM\<broken-system>\ControlSet001\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f
ControlSet002 での有効化:
reg add "HKLM\<broken-system>\ControlSet002\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f reg add "HKLM\<broken-system>\ControlSet002\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f reg add "HKLM\<broken-system>\ControlSet002\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f
壊れた OS ディスクをアンロードします。
reg unload HKLM\<broken-system>
VM を再構築する
VM 修復コマンドの手順 5 を使用して、VM を再構築します。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。