syg_hira's tech-work memo

某人材サービス会社の情報共有インフラ担当のおぼえがきです。MicrosoftのEnterprise製品多め。

TOSHIBA EXCERIA Type 1 performance - Crystal Disk Mark

遠くのデータセンターへの出張を控え、少しでも荷物を軽量化するために、作業環境をThinkpad X1 Carbonに移行。
Hyper-V仮想マシンをコピーしてきたら256GBあるはずのSSDがだいぶいっぱいになったので、少しでもストレージの拡張を図るべく、SDカードを追加。
せっかくだから、一番速そうなものを。

ネットで見たら、SanDisk Extreme Proも速いらしいのだけど、良く分からないので東芝のを買ってみた。

普通、こういうものはデジタル一眼カメラと一緒に使うのだろうな。

NTFS クラスタサイズ64KBでフォーマットし直す。
仮想マシンの乗せてみようかとも思ってるので、速度を図ってみる。
f:id:syg_hira:20130728211004p:plain
公称速度よりちょっと遅いな・・・
仮想マシン乗せるのはちょっと厳しいかな・・・

計測環境
PC Lenovo Thinkpad X1 Carbon
メディアスロットに接続
格納データなし。

Time sync settings for windows server on Hyper-V (Updated)

一般に、仮想マシン上でのActive Directoryの実行が推奨されない理由として、時刻同期の問題がある。

が、同じプロジェクトで「仮想マシン上で時刻同期できないのでADは動かない」と言い切ったバカがいたので、理由と対処法を再度整理した。

(こういう浅はかな見識を大きな声でキャッチーに言うやつ、システム設計行程を混乱させるので害でしかない・・・ほんと詩んでほしい)

Hyper-Vの時刻同期機能

Hyper-V仮想環境で、仮想マシン統合サービスを導入すると、「時刻の同期」機能が利用できるようになる。
他の仮想化基盤でも、仮想ホストと仮想マシンの時刻同期を仕組みがある。

ゲスト時刻が遅れる場合

仮想マシンの設定で、統合サービスの「時刻の同期」を有効にすると、

ゲスト時刻 < 5秒 < ホスト時刻

となったときに、5秒以上遅れたゲストの時刻を、ホストの時刻に修正する。

仮想マシンのタイマーをエミュレートしているCPUが高負荷になると、仮想マシン内でタイマーが遅れ、仮想マシンの時刻が遅れる(らしい)。

ゲスト時刻が進む場合

ゲスト時刻がホスト時刻を追い越した場合は、統合サービスによる時刻の同期は行われない。
(時刻同期機能に関するTechnet「Hyper-V 仮想化環境におけるゲスト OS の時刻同期について」より。実機検証はしていません)

  • どうせOSの時刻同期機能を使うからと、ハードウェアクロックがいい加減だったり、
  • 古い機器を転用して検証環境を作っていたりすると、システムボードのCMOSバッテリーが切れていたり

ホストのハードウェアクロックが遅れるが、エミュレートしている仮想マシンのクロックは遅れない・・・本当にそんなことが起こるのかわからないが。
ホストOSのw32timeのタイムプロバイダがハードウェアクロックを参照する場合は、統合サービスによる時刻同期が行われなくなる。

Active Directory環境で時刻がずれる影響

Kerberosによる統合Windows環境を実行する場合は、Active Directoryサーバと、クライアントの時刻の不一致は、Kerberos認証の不具合を引き起こす。
実際問題、本当に、ゲスト時刻が進む、なんてことが起こる可能性はとても低いと思う。
けれど、PDCエミュレータとの時刻不一致が起きてしまったら、その影響は甚大です。

対処法=Windows Timeによる外部NTPとの時刻同期の有効化

ハードウェアクロックに依存しない時刻同期構成となっていれば、問題は発生しない。
実際、時刻ずれによるKerberos認証の不具合が問題になるような「まともな環境」で、NTPホストが利用できないことはないでしょう。

1.ゲストのドメインコントローラ(PDCエミュレータ)の時刻同期の構成

  • 統合サービスの「時刻の同期」を無効にする。
  • 外部タイムソースを指定する。
  • 自分を「信頼できるタイムソース」に設定する。

外部タイムソースを利用しない設定の場合は、Windows Time Serviceが停止している可能性があるので、スタートアップを「手動」に設定し、起動しておく。
以下の例では、OS標準の「time.windows.com」を、タイムソースに指定する。

sc.exe config w32time start= demand
sc.exe start w32time
w32tm.exe /config /manualpeerlist:time.windows.com /syncfromf
lags:manual /reliable:yes /update
w32tm.exe /resync

"start=" と "demand" の間にスペースが必要。トリッキーなので注意。

2.メンバーサーバの時刻同期の構成

  • 統合サービスの「時刻の同期」を無効にする。
  • ドメインに参加すれば、OSが勝手に、Active DirectoryPDCエミュレータと時刻同期するようになる。

BUFFALO SSD-PEU3 performance - Crystal Disk Mark

BUFFALO ターボPC EX対応 USB3.0用 外付けSSD 256GB SSD-PE256U3-BK

BUFFALO ターボPC EX対応 USB3.0用 外付けSSD 256GB SSD-PE256U3-BK

仕事で買ったので、計測。
f:id:syg_hira:20130718120932p:plain

-----------------------------------------------------------------------
CrystalDiskMark 3.0.2 x64 (C) 2007-2013 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]

           Sequential Read :   320.029 MB/s
          Sequential Write :   174.690 MB/s
         Random Read 512KB :   221.884 MB/s
        Random Write 512KB :     1.442 MB/s
    Random Read 4KB (QD=1) :     7.570 MB/s [  1848.2 IOPS]
   Random Write 4KB (QD=1) :     1.301 MB/s [   317.6 IOPS]
   Random Read 4KB (QD=32) :     7.442 MB/s [  1816.8 IOPS]
  Random Write 4KB (QD=32) :     1.511 MB/s [   368.9 IOPS]

  Test : 1000 MB [G: 12.8% (30.0/235.6 GB)] (x5)
  Date : 2013/07/18 12:12:19
    OS : Windows 8 Enterprise Edition [6.2 Build 9200] (x64)

計測環境
PC Dell Latitude E6230
USB3.0ポートに接続
製品同梱USB3.0ケーブル使用
製品標準同梱SWと、テスト用Hyper-V仮想マシン用ファイルで、30GB使用。

windows 2008 sysprep sample(修正版)

仕事でものすごい数のWindows Server 2008 R2 を立てることになりそう。

自宅の検証環境でも簡単にWindows Serverをプロビジョニングしたくなりそうなので、Sysprep.iniを見直した。

Goal:Virtual Machineをインポートして起動したら、初回ログオンまでNo Touch。

Sysprep.exe実行時オプション:

sysprep.exe /quiet /generalize /oobe /shutdown /unattend:<Filepath>


設定内容
・言語/ロケール設定
・使用許諾契約の表示スキップ
・Product Key入力
・ライセンス認証猶予期限リセット可能回数のカウントスキップ
・インストール済みデバイスの維持
・Administratorのパスワード設定
・自動ログオン

Sysprep.ini

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="windowsPE">
        <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <UserData>
                <AcceptEula>true</AcceptEula>
                <ProductKey>
                    <WillShowUI>OnError</WillShowUI>
                    <Key>xxxxx-xxxxx-xxxxx-xxxxx-xxxxx</Key>
                </ProductKey>
            </UserData>
        </component>
    </settings>
    <settings pass="generalize">
        <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <SkipRearm>1</SkipRearm>
        </component>
        <component name="Microsoft-Windows-PnpSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls>
        </component>
    </settings>
    <settings pass="oobeSystem">
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <OOBE>
                <HideEULAPage>true</HideEULAPage>
            </OOBE>
            <UserAccounts>
                <AdministratorPassword>
                    <Value>Password</Value>
                    <PlainText>true</PlainText>
                </AdministratorPassword>
            </UserAccounts>
            <AutoLogon>
                <Password>
                    <Value>Password</Value>
                    <PlainText>true</PlainText>
                </Password>
                <Enabled>true</Enabled>
                <Domain>.</Domain>
                <Username>administrator</Username>
            </AutoLogon>
        </component>
        <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <InputLocale>0411:00000411</InputLocale>
            <SystemLocale>ja-jp</SystemLocale>
            <UILanguage>ja-jp</UILanguage>
            <UserLocale>ja-jp</UserLocale>
        </component>
    </settings>
    <cpi:offlineImage cpi:source="wim:e:/sources/install.wim#Windows Server 2008 R2 SERVERENTERPRISE" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>

検証サーバの論理構成

f:id:syg_hira:20121208232520p:plain

設定のTips

  • 各サーバのメモリは、Dynamic Memoryを有効化して動的に割り当てる。スタートアップメモリ&最小メモリは、Win2003:512MB,Win2008:1024MBに設定。
    Windows 2008 Storage Server は、Dynamic Memoryに対応しないため、2048MBを割り当て。
  • iSCSIで使用するディスクは、Guest2にアタッチした可変容量VHD上に、GuestOSから固定容量VHDを作成して割り当てている。これにより、実際は検証でデータを保存しない仮想環境上のディスクに対して、実ディスク容量を割り当てることを回避している。
    Microsoft Software iSCSI Targetでデバイスとして割り当て可能なVHDに可変容量VHDが利用できないための対策。
  • 全サーバは、Sofware VPN Clientをインストールしてある。SoftEatherの実験サービス(PacketiX.NET)を利用して、リモート接続可能
    Hyper-VホストのPacketIX.NETサーバーを介してリモートからVPN接続可能。

 

検証用サーバのHW構成(修正版)

自宅の検証用サーバの構成。

総額8万円ぐらいでDIYしている。

CPU Xeon E3-1220LV2(3M Cache,2.30GHz,TPD=17W)
Motherboard Intel Server Board S1200BTS
Memory DDR3 ECC UDIMM 8GB x2
Phisical Disk0 SSD SAMSUNG SSD 830 120GB
Phisical Disk1 HDD WesternDigital WD6400BPVT (640GB,5400rpm)
Phisical Disk2 SSD Intel SSD 520 Seriese120GB
Add-on Adaptec AAR-1430SA Serial ATA HostRAID Controller

Windows転送ツール 異なる言語間での環境移行(修正版)

個人PCのWindows XP,7,8環境移行に便利な、Windows転送ツール。

私は英語版のWindowsを日本語化して利用していますが、一時的に日本語OSの入ったPCに環境を移したりすることがある。

Windows 転送ツールは、同じ言語版のOSでしか環境の移行ができないが、レジストリ"InstallLanguage"値を新旧PCで同じにすることで、実行が可能となる。
(データが正しく移行できるかどうかは知らない。自己責任)

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Language]
Default = xxxx(既定値、無い場合もある)
InstallLanguage = yyyy

xxxx,yyyyには以下のような数字が入ります。

xxxx,yyyy:0411=Japanese,0409=english