2014年6月30日月曜日

仮想マシンとしてのドメインコントローラーとディスクキャッシュ

Windows Serverをドメインコントローラーにした場合、Active Directoryデータベースの整合性を維持するため、書き込みキャッシュを無効にします。

仮想マシンをドメインコントローラーとして構成した場合、物理マシンのキャッシュが無効になるため、性能が低下するらしいが本当ですか。

という質問をいただきました。

最終的な答えはNOですが、いくつか微妙な問題があったのでまとめておきます。なお、以下の文書はすべてWindows Server 2008ベースのものですが、Windows Server 2012 R2でも状況は同じだと思われます。

サポート技術情報888794「仮想ホスト環境で Active Directory ドメイン コントローラーをホストする場合の考慮事項」には以下のことが記載されています。

仮想ホスト環境のソフトウェアで、Force Unit Access (FUA) をサポートする SCSI エミュレーション モードが正しくサポートされている場合、この環境で Active Directory が実行するバッファーなし書き込みはホスト オペレーティング システムに渡されます。

FUA がサポートされていない場合は、Active Directory データベース、ログ、およびチェックポイント ファイルをホストするゲスト オペレーティング システム上のすべてのボリュームにおいて、書き込みキャッシュを無効にする必要があります。

後半は自動的に設定されるため、特に意識する必要はありません。

FUAは、キャッシュ制御をするためのSCSIコマンドです。このコマンドが、仮想マシンから物理マシンに正しく送られる場合、キャッシュを無視してアクセスを行えるようです。

つまり、キャッシュを無効にしなくても、仮想マシンDCからのI/O要求に関してはキャッシュを使わずにディスクをアクセスします。

もちろんSCSIコマンドを発行するのは、仮想マシンの仮想ディスクに対してですから、仮想マシンには仮想SCSIディスクが必要です。また、最終的にSCSIコマンドを受け取るのは物理ディスクですから、物理ディスクもSCSIディスクでなければいけません。

物理ディスクがSCSIでない(IDE/ATA)の場合は、VHD(VHDX)ファイルが破損しないように、キャッシュを手動で無効にする必要があります。

なお、仮想ディスクは、ドメインコントローラーの既定の動作によりSCSIであろうとなかろうと書き込みキャッシュを無効にします。

Microsoft TechNetのドキュメント「仮想化ドメイン コントローラーの展開に関する考慮事項」には以下の記述があります。

Active Directory のデータが壊れる可能性を減らすため、SCSI コントローラーを使用するか、ATA ドライブまたは IDE ドライブで書き込みキャッシュを無効にしてください。

仮想ドメイン コントローラーをホストする Hyper-V サーバーでは、IDE ドライブや ATA ドライブではなく SCSI 物理ドライブを使用してください。SCSI ドライブを使用できない場合は、仮想ドメイン コントローラーをホストする ATA ドライブまたは IDE ドライブで書き込みキャッシュを必ず無効にしてください。詳細については、「Event ID 1539 – Database Integrity (イベント ID 1539 - データベースの整合性に関するページ)」を参照してください。

ドメイン コントローラーとして実行するすべての仮想マシンで、仮想 SCSI コントローラーを使用してください。仮想 SCSI コントローラーを使用できない場合は、ドメイン コントローラーとして実行する仮想マシンの仮想 IDE ドライブで書き込みキャッシュを必ず無効にしてください。インストールされているディスク コントローラーの種類は Virtual Machine Manager の設定ダイアログ ボックスで確認できます。詳細については、「仮想マシンを構成する」を参照してください。

まとめると、以下の通りです。

  • 物理ディスクがATAの場合
    • 物理ディスク…手動でキャッシュ無効化
    • 仮想ディスク…自動的にキャッシュ無効化
  • 物理ディスクがSCSIの場合で仮想ディスクがATAの場合
    • 物理ディスク…手動でキャッシュ無効化
    • 仮想ディスク…自動的にキャッシュ無効化
  • 物理ディスクも仮想ディスクもSCSIの場合
    • 物理ディスク…FUAによる自動制御
    • 仮想ディスク…自動的にキャッシュ無効化

より詳細な内容は、以下のドキュメントをダウンロードしてください(英語です)。

Hyper-V でのドメイン コントローラーの実行に関するページ (ダウンロード可能な Word 文書)

2014年6月29日日曜日

Hyper-V 仮想化環境での時刻同期

時刻同期は今ではサーバーの非常に重要な要件となりました。時刻が同期されていないと、各種のログの照合が難しくなるだけでなく、認証プロトコルが失敗することさえあります。

Hyper-Vを含め、多くの仮想化環境では、仮想マシンの時刻が遅れる傾向にあります。

昔「任天堂ゲームウォッチ」という携帯ゲームがありました。単機能なので、学校でゲーム機本体の交換を行った経験のある人もいるでしょう。ゲームウォッチは、名前の通り本来は時計なのですが、内蔵されたCPUでソフトウェア的に時刻情報を管理していたようです。頻繁にゲームを行うと、CPU割り込みが増え、表示時刻が遅れるという問題がありました。仮想環境でもこれと似たような問題が発生します。

ちなみにゲームウォッチの発売は1980年なので、このたとえ話は40歳代以上にしか分からないと思います。何しろファミリーコンピューター(ファミコン)以前の話です。

●Hyper-V統合サービスでの時刻同期

閑話休題、そこでHyper-Vでは「統合サービス」を仮想マシン上で動作させることで、時刻の遅れを防ぎます。

マイクロソフトのWebサイト「ヒント: Hyper-V 仮想化環境におけるゲスト OS の時刻同期について」によると、時刻同期は以下のように行われます(Windows Server 2008/2008 R2での記載ですが、2012でも同じだと思われます)。

  • ゲストOSの時刻が、ホストOSより遅れている場合(5秒以上)
    強制的に時刻同期を行う
  • ゲストOSの時刻とホストOSの時刻のずれが5 秒未満の場合
    時刻同期を行うかどうかは NTP (w32timeサービス) に委任
    統合サービスの時刻同期 はVM IC Time Synchronization Provider という名前の NTP Time Providerとして提供
  • ゲストOSの時刻が、ホストOSの時刻より進んでいる場合(5秒以上)
    時刻同期しないので、必要に応じてNTPなど、他の時刻同期機構を利用

また、統合サービスの "時刻の同期" は、他の時刻ソース(他の NTP サーバー)の参照環境と共存可能なように実装されているそうです。

その他に、ゲストOSの起動時に同期します。ゲストOSの時刻はシャットダウンまたは保存時に停止するため、次に起動したときは必ず遅れています。つまり、メカニズムとしては「5秒以上遅れている場合」と同じです。

 

●NTPの構成

NTPのパラメータ調整はW32TMコマンドを使います。仮想マシンンに依存しない時刻同期については、私と同じDirectory ServicesのMicrosoft MVPである小鮒道成さんが書いた記事が参考になります。

Windowsネットワーク時刻同期の基礎とノウハウ

万一時刻がずれてしまったらどうするかということも問題になります。時刻変更の影響が予測できる場合で、許容できる程度のリスクであれば、一気に同期させるのもひとつの方法です。

時計を進めることは、遅らせることに比べてリスクが少ないと考えられます。通常、仮想マシンンは時刻が遅れるので、多くの場合は問題が出ません。

しかし、時刻変更の影響が予測できない場合や、リスクが大きい場合はどうすればいいでしょう。NTPのパラメータで調整できるならそうしてください。そうでなければ、人間が少しずつ時刻差を縮めていくしかありません。

 

●【追記】ドメインコントローラーの構成

仮想マシンドメインコントローラーでは特別な注意があります。

Microsoft TechNetのドキュメント「仮想化ドメイン コントローラーの展開に関する考慮事項」から引用します(太字は私の注釈)。

ドメイン コントローラーとして構成された仮想マシンでは、統合サービスを通じてホストとの時間の同期を無効にしてください。代わりに、既定の Windows タイム サービス (W32time) ドメイン階層時間の同期を使用してください。

ホスト時間の同期では、ゲスト オペレーティング システムは各自のシステム クロックをホスト オペレーティング システムのシステム クロックに同期させることができます。ドメイン コントローラーはそれぞれ独自の時間同期メカニズムを持っているので、ドメイン コントローラーとして構成された仮想マシンではホスト時間の同期を無効にする必要があります。ドメイン コントローラーが各自のソースから時間を同期させると同時にホストからも時間を同期させた場合、ドメイン コントローラーの時間が頻繁に変化する可能性があります。ドメイン コントローラーのタスクの多くはシステム時間に関連付けられているので、システム時間が突然変化した場合、それが原因で残留オブジェクトがディレクトリに残り、レプリケーションが停止する可能性があります。

Hyper-V マネージャーの [統合サービス] セクションにある仮想マシンの設定で [コンピューターの時計の同期] チェック ボックスをオフにすることで、ホスト時間の同期を無効にすることができます。

2014年6月13日金曜日

Microsoft Azureのアフィニティグループと課金

Microsoft Azureに限らず、クラウドサービスの研修で怖いのは、ある日突然管理ツールが変わってしまうことです。

クラウドの基本は、「IT機器ではなく、ITサービスを使う」ということなので、これはやむを得ません。

提供されるサービスが同じなら、使い勝手が変わってもある程度は仕方ないでしょう。たとえば、京都市のバス料金はかつて

    • 均一区間は乗車時に支払う
    • 均一区間外は降車時に支払う
      (
      乗車時に整理券を取り、整理券の記号に従った価格を支払う)

でした。複数のルールを使い分けるのが面倒なことから、現在では以下に統一されています。

    • 降車時に支払う
    • 均一区間外を走るバスは乗車時に整理券を取る
      (均一区間を走るバスは整理券が出ない)

ユーザーインターフェースが変わるので、最初は戸惑う人も多かったのですが、サービスを受ける側としては受け入れるしかありません。

先日、グローバルナレッジとしては初めてMicrosoft Azureの研修を実施しました。そこで、2つほど保留した質問と、アンケートに記載されていた質問について、この場を借りてお答えします。

●アフィニティグループの作成

  1. 複数の仮想マシンを同じ場所(大ざっぱに言うと同じラック)に配置するための機能「アフィニティグループ」は、事前に作成しておきます。
  2. Microsoft Azureの管理ポータルWebサイトにアクセス
  3. [設定]をクリックし、[アフィニティグループ]タブを選択
  4. [追加]をクリックし、サブスクリプションとリージョンを指定

これで、特定のリージョンに結びついたアフィニティグループができました。

次に、仮想マシンの入れ物である「クラウドサービス」を作成します。この時、リージョンの代わりにアフィニティグループを指定します。

●課金

Microsoft Azureの仮想マシンは、管理ツールからシャットダウンすると[割り当て解除]となり、課金対象になりません。

Azureは料金改定が頻繁に行われますが、単なる停止で課金対象から外れるという発表は今の所ありません。これからも割り当て解除が必要です。

なお、ストレージの使用分には課金されますので、ご注意ください。

●料金シミュレーター

Microsoft Azureの料金シミュレーターが公開されています。あまり詳細なパラメーター指定はできませんが、参考にしてください。

image
▲マイクロソフトが配布しているアイコンから「Affinity Group」
単なる点線枠にしか見えません。

2014年6月10日火曜日

Windows Azure改めMicrosoft Azureはじめました

今日、ある会社向けにMicrosoft Azure (IaaS) の演習付き体験セミナーをします。

Microsoft Azureの演習を行う場合、アカウントをどうするかという問題があって、いまだに定期開催コースが提供できていません。

私個人としては

  • 各自アカウントを取ってきてもらう
  • アカウントを持っていない人はその場で取ってもらう
  • それが無理なら演習ができない

ということでいいと思うのですが、反対意見も根強く難しいようです。

事前に注意事項を配布しても、読まない受講者が一定数いらっしゃいますし、申し込んだ方と受講者が違う場合は連絡が伝わらない場合もあります。会社や個人の事情でアカウントが取れない人もいらっしゃるかもしれません。

会社としてサービスを提供する場合、こうした可能性をすべて考える必要があります。

ところで、本日の受講者に対しては記念品を渡すことになりました。「マイクロソフトのMicrosoft Azure公式キャラクター『クラウディア窓辺』さんのコスプレ写真集ありますよ」、と言ったら「もっといいものあげましょうよ」って言われました。

昨年末に作って、コミックマーケット(コミケ)で売ったのですが、私のサークル「まぐにゃむフォト」は動物ジャンル(猫写真)なので、見事に売れませんでした。

もっとも、コンスタントに売れるはずの既刊猫写真集も売り上げが激減していたので、何か別の原因があるかもしれません。

夏のコミケも出展するので、もうちょっと売りたいところです。完売してもモデル代とスタジオ代は出ないのですが、印刷費くらいは回収したいところです。

スライド0
▲表紙と裏表紙

【追記】

Windows AzureをMicrosoft Azureに修正しました。

ちなみにAmazonさんのAWS無料講習会は、アカウントを事前作成するのが宿題でした。また開始30分前に「アカウント作成無料セッション」が開催されていました。

グローバルナレッジのAWS講習会はRemote Labと呼ばれるエミュレーション環境を使います。