web-dev-qa-db-ja.com

Windows Server2012をiSCSIから起動できません

ISCSIを介して実行するディスクレスサーバーにさまざまなOSをインストールする方法を考えています。サーバーには、このための特別なハードウェアはありません(iSCSI HBAなどはありません)。

私は簡単にWindows展開サービスを試しましたが、それは私が望むものの逆のようです:私は間違っている可能性がありますが、ローカルディスクから起動するシステムにWindowsをネットワークベースでインストールするように設計されているようですが、 iSCSIディスクから実行されるようにWindowsをインストールしたいのですが、インストールメディアをローカルに挿入する必要があるかどうかは気にしません。したがって、現在のアプローチではWDSを使用していません。

このテストはWindows Server 2012のテストですが、以前のバージョンにも適用される可能性があります。

つまり、空のiSCSIターゲットを設定しています(いくつかのs/wベンダーを試してみましたが、現在はStarWindを使用していますが、それほど大きな違いはないようです)、PXEを使用してgPXEまたはiPXEにチェーンし、 iSCSIブート(両方を試しましたが、gPXEの方が少し使いやすいと思いましたが、同様の結果が得られました。)

もちろん、OSがないと起動は失敗しますが、ローカルDVD-ROMを起動すると、インストーラーがボリュームを確認できるように、BIOSディスクインターフェイスを介してLUをフックしたままにします。にインストールします。

GPXEプロンプトにドロップし、次のコマンドを入力して起動を実行します(インターフェイス番号を除いてiPXEでも同じです)。

dhcp net1
set keep-san 1
sanboot iscsi:#.#.#.#::::iqn.xxxxxxxxxxxxxxxxxxx
exit

Windows Server 2012がインストールされているようで、ある時点で再起動します。 iPXEが起動してiSCSIから起動すると、「Metro」ロゴが表示されます。そのため、少なくとも何かがLUにインストールされました。ただし、画面が水色になり、メッセージが大きなテキストで一時的に点滅します。「PC」(実際にはラックサーバーですが、とにかく)に問題が発生していますが、すべて消えてしまうため、コンピューターが消えてしまいます。再起動します。

最終的に、Windows Boot Managerというタイトルのテキスト画面が表示されます。

Windows failed to start. A recent hardware or software change might be the
cause. To fix the problem:

  1. Insert your Windows installation disc and restart your computer.
  2. Choose your language settings, and then click "Next."
  3. Click "Repair your computer."

If you do not have this disc, contact your system administrator or computer
manufacturer for assistance.

    File: \Windows\system32\ntoskrnl.exe

    Status: 0xc00000e9

    Info: The operating system couldn't be loaded because the kernel is
          missing or contains errors

細心の注意を払う人は、特に物理的なハードウェアでは、これらの指示を効果的に実行するのが非常に難しいことに気づくでしょう。 (ちなみに、私は物理マシンと仮想マシンの両方にインストールを試みましたが、同様の結果が得られました。)

ここでは、iPXEが割り込み13h(BIOSディスクサービス)をフックしたためにWindows 2012が最大限に機能していると思いますが、システムがプロテクトモードドライバーに切り替えるのに十分な距離で起動すると、ブートが乱暴に中断されます。読み取るハードディスクがないか、WindowsのiSCSIイニシエーターが失敗しています。

私が試したiPXEは1.0.0+(3fcb)で、試したgPXEは1.0.1でした。

ハードウェアHBAなしでServer 2012をiSCSIで実行することは可能ですか?その場合、何が問題でしょうか?

7
Kevin

(私の最初の答えは時期尚早でした。約束通り、すべてが機能するようになってから書き直しました。)

まず最初に、iSCSIブートを有効にするソフトウェアは一般的に中途半端なものであり、関連する異種システムの相互運用性は非常に低いことがわかりました。このため可能な場合は、代わりにiSCSI HBAなどのハードウェアベースのソリューションを使用することをお勧めします。以上のことから、誰かの役に立つ場合に備えて、ここで私の経験を紹介します。

私が見つけたものを要約するには(PXEとiSCSIターゲット用にDHCPとTFTPをセットアップしていて、gPXEまたはiPXEに連鎖していることを前提としている):

  • gPXEおよびiPXE never複数のNICをiBFT(iSCSIブートファームウェアテーブル)に書き込みます。これはWindows Serverに影響を与える可能性があります。この問題については、別の質問で詳しく説明しました ここ

  • 上記の設計上の制限に加えて、gPXEには複数のネットワークポートを持つシステムに同様に影響する実際のバグがあります。以下に説明します。このバグを回避するために、gPXEの「UNDIのみ」ビルドを使用しました。これにより、gPXEがNICに直接アクセスできなくなり、代わりにNICのPXEローダーによって提供されるAPIが使用されます。これにより、gPXEはネットワークポートが1つ(ロードされたポート)のみであると見なし、バグを回避します。このバグが新しいiPXEバージョンに存在するかどうかはわかりません。

  • 私は当初、gPXE/iPXEのkeep-sanオプションについて混乱していました。 keep-sanフラグはgPXEの動作に影響しますブートが失敗した場合のみ。したがって、このオプションは、インストールが開始された最初の起動時にのみ必要です。

  • Windows Server(少なくとも2012年とおそらく他のサーバー)は、システムディスクを提供するiSCSIイニシエーターをあるネットワークポートから別のネットワークポートに移動することを容認していないようです。 Windowsがインストールされているネットワークポートとは異なるネットワークポートでイニシエーターから起動された場合、Windowsは、MSイニシエーターへのハンドオフ時に、起動中にクラッシュ(BSODおよび/または再起動)します。

  • Windows Server(2003以降)には、ターゲットがローカルサブネット上にある場合でも、ゲートウェイが指定されている場合はそれを使用してターゲットにアクセスするという、確認済みの機能/問題があります。ゲートウェイが使用できないか、同じポートにルーティングされない場合、MSイニシエーターへのハンドオフでブートが失敗します。 必要がない場合は、DHCPによってゲートウェイ設定が提供されていないことを確認してください。

上記のgPXEバグには、iBFT(iSCSIブートファームウェアテーブル)が関係しています。これは、システムディスクとして使用するNIC、iSCSIイニシエーター、およびiSCSIターゲットに関する情報を含むプリブートシステムによってメモリに配置されるオブジェクトです。 OSは、プロテクトモードに切り替わると、この情報を使用して起動を続行します。形式は指定されています ここ

GPXEがiBFTに配置していた情報に問題があるのではないかと疑って、iBFTの内容を画面にダンプするブートセクターをプログラムしました。これを使用して、gPXEによって書き込まれたデータが特定の状況下で誤っていることがわかりました。

前述のように、gPXEは1つのNICレコードのみをiBFTに書き込みますが、状況によっては、その1つのNICレコードに書き込まれる情報が混乱します。MACアドレスとPCIアドレスは1つのNICに対応しますが、ローカルIPとゲートウェイアドレスは別のNICに対応します。これは、SANが最初のNICにない場合に発生します。

混乱を助長するために、gPXEが自動的に起動する場合、この誤ったiBFT情報が書き込まれますが、gPXEのコマンドプロンプトから起動する場合、入力されたコマンドの正確なシーケンスによっては、正しい情報が書き込まれる場合があります。 NICが変更された場合(正しいiBFTが与えられた場合でも)、Windowsがこのバグによって引き起こされたものと同じ症状を示すという事実を投げ入れれば、なぜ私が髪を引き裂いたのかがわかります。

ちなみに、私の最初の質問では、Server 2008 R2では機能しているが、Server 2012では機能していないと思っていました(誤解を招くため、編集しています)。実際には、基本的な動作に違いはなく、違いがあると思います。上記の問題の微妙さと私のテストの小さな変化に起因する結果。

6
Kevin