Try and Error

SEによる検証報告やエラーとの闘い

カテゴリ: Windows Server

OpenStack 上のWindows Serverがブルースクリーン、ブラックスクリーンになるという事例はかなりよく聞く。
個人的にはKVM ハイパーバイザーよりもHyper-VやVMware ESXiにした方が良いと思うのだが。

多くの場合、VirtIOドライバを最新版にアップデートすることで改善されるようだ。
特に netkvm と viostor は不具合が多い。
最近、確認したのはWindowsの機能の管理ツールが応答しなくなる事象もドライバのバージョンアップで解消されることがある。


最新版のVirtIOドライバは以下からダウンロード可能。
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso

歴代のバージョンは以下から確認可能。
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/


現在の最新版はvirtio-win-0.1.141というバージョン。

現在、利用中のドライバのバージョンは以下のPowershellで確認可能。
要 管理者実行。

FilePrivatePart が14100なら現時点での最新版のvirtio-win-0.1.141のドライバが使われている。
それより値が小さい場合は最新版ではないので、最新版の適用を検討した方が良い。


(Get-ItemProperty C:\Windows\System32\drivers\netkvm.sys).VersionInfo | Format-Table ProductVersion, FilePrivatePart -Force

ProductVersion                            FilePrivatePart
--------------                            ---------------
63.74.104.14100                                     14100


(Get-ItemProperty C:\Windows\System32\drivers\viostor.sys).VersionInfo | Format-Table ProductVersion, FilePrivatePart -Force

ProductVersion                            FilePrivatePart
--------------                            ---------------
62.74.104.14100                                     14100

このエントリーをはてなブックマークに追加


以下を見ると、ビルド番号からいつの更新プログラムが適用されているかがわかる。

Windows 10 および Windows Server 2016 の更新履歴
https://support.microsoft.com/ja-jp/help/4000825/windows-10-windows-server-2016-update-history

Windows Server 2016 のビルド番号はwinver.exeを実行すると、わかりやすい。
capture20170615233757404




Windows 8.1 および Windows Server 2012 R2 の更新履歴
https://support.microsoft.com/ja-jp/help/4009470


Windows Server 2012 R2 のビルド番号は以下のPowershellを実行すると、比較的わかりやすい。

Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name "CurrentBuild","UBR"

capture20170615225145583

このエントリーをはてなブックマークに追加

検証なので、Hyper-V上のVMにHyper-Vをインストールして検証する。
※手順はHyper-V上のVMでHyper-Vの役割を有効にするを参照


Hyper-V上のVMを2台作成する。
システムディスク以外のディスクを最低2つずつ追加する。
NICはクラスター同期用も含めて最低2個用意する。
Windows Server 2016 Datacenter Editionをインストール。
ドメインに参加する。
ファイアーウォールを無効化する。
Hyper-Vを有効化する。
フェールオーバークラスタリングをインストールする。
フェールオーバークラスターを作成する。
クォーラムディスクは共有ディスクではなく、クラウド監視を採用。
※手順はクォーラム監視の選択でクラウド監視を構成するを参照
Windows Updateを実施する。
※記憶域スペースダイレクトの修正もあるようなので、Windows Updateは適用すべき





ここからが本題。

まずは記憶域スペースダイレクトを有効にする。
Enable-ClusterStorageSpacesDirect

01

キャッシュに使用するディスクが見つからないという警告が出たが無視。
SSDを含んだ構成であれば、出ないのだろうか。
 

記憶域スペースダイレクトを有効にすると、ディスクの管理に表示されていたディスクは表示されなくなる
元々は未割当の領域が2つ表示されていたが、表示されなくなった。
02
 


フェールオーバークラスターマネージャーからも記憶域スペース直接(S2D):有効になっています。と表示されるようになった。
03

記憶域-プールにクラスター プール 1が作成されている。
04

 ディスクを作成する。

New-Volume -StoragePoolFriendlyName "S2D on nesthypervclus" -FriendlyName MyVolume -Size 10GB -FileSystem NTFS -ResiliencySettingName Mirror -PhysicalDiskRedundancy 1
06

StoragePoolFriendlyNameにはフェールオーバークラスターマネージャーの記憶域-プール-クラスター プール x-プール名を指定する
07

FriendlyName にMyVolumeを指定すると、フェールオーバークラスターマネージャー記憶域-ディスクにクラスター仮想ディスク (MyVolume)が作成される
08

 

所有者ノードのディスクの管理でディスクが表示される
09

ディスクをClusterSharedVolumeに追加する。
Add-ClusterSharedVolume "クラスター仮想ディスク (MyVolume)"
10
 

ここまで実行すれば、共有ディスクを用いて構成したHyper-Vクラスターと同じ。
C:\ClusterStorage\VolumeXが作成されているので、そこにVMを作成する。
試しにVMを作ってライブマイグレーションを実施してみたが、問題なく動いているようだった。

ただVMへのI/Oがクラスターの使用が許可されたセグメントを使って同期されるので、このセグメントの帯域の広さがVMのI/Oボトルネットになってしまうので、注意が必要。
クラスターのみとなっているネットワークが優先して使われる。
11
 

このエントリーをはてなブックマークに追加

Windows Server2台でフェールオーバークラスター構成を作成するときに頭を悩ませるのがクォーラム監視。Windows Server 2016では共有ディスクがなくてもクォーラム監視が構成できる。そのなかでもクラウド監視の設定について検証してみた。まずはAzureでストレージアカウントを設定する。クォーラム領域なので、安くできる設定にした。

3

ストレージアカウント名とkeyを確認しておく。
4


Windows Serverに戻って、クラウド監視を構成する。
5

ストレージアカウント名とkeyを入力する。
6


7


8

かなり簡単に設定可能。
コストもほとんどかからないので、クラウド監視はオススメ。
ただインターネット接続できる環境であるならばという条件付き。
ネットワークは複数用意して、最低でも1つはクラスター管理に使うようにした方が良い。































































このエントリーをはてなブックマークに追加

MSTEPでHyper-V上のVMでHyper-Vの役割を有効にする方法を聞いたので、検証した結果を共有します。

Hyper-V上のVMでHyper-Vの役割を有効にすることができるのはWindows Server 2016から。
試しに何も設定していないWindows Server 2016のVMでHyper-Vの役割を追加しようとしたところ、以下のようなエラーになる。

1

VMを停止した状態でHyper-Vホストで以下のPowershellコマンドを実行する必要がある。

CPUの仮想化機能を有効にする
Set-VMProcessor -VMName <仮想マシン名> -ExposeVirtualizationExtensions $true

MACアドレスのスプーフィングを有効にする
Get-VMNetworkAdapter -VMName <仮想マシン名> | Set-VMNetworkAdapter -MacAddressSpoofing On

もう一度実行すると、Hyper-Vの役割が追加できた。

2

ただ上記のPowershellコマンドだとHyper-V管理ツールがインストールされないので、以下のPowershellコマンドの方が良かった。
Import-Module ServerManager
Add-WindowsFeature Hyper-V,Hyper-V-Tools,Hyper-V-Powershell

このエントリーをはてなブックマークに追加

↑このページのトップヘ