SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Archive for 2010

Outlook 2003 の空き時間情報について

leave a comment

今日はひたすら Exchange を勉強しています。
月頭にも関わらず中古の ThinkPad を買ってしまったので懐具合がさびしく出かけられないだけですが…。

今回は Outlook の空き時間情報について。

■空き時間情報を勉強するための参考情報

Outlook 2003 の空き時間情報の動きは以下の技術情報をいつも参考にしています。
空き時間情報データの公開

Exchange 2003 + Outlook の組み合わせですがこの情報は Exchange 2007 以降を使用する場合も有益です。
Outlook を使用した場合の空き時間情報の格納のトリガーは Outlook になっているようですね。
OWA の場合は Exchange 側で処理がされています。

■空き時間情報の格納先

Outlook 2003 までは空き時間情報をパブリックフォルダに格納しています。

空き時間情報が格納されるのが、システムパブリックフォルダの [SCHEDULE + FREE BUSY] になります。
このフォルダの下にあるパブリックフォルダに対して空き時間情報が格納されていきます。
image

前回の投稿でパブリックフォルダデータベースを再作成した Exchange 2007 のですが、先ほど階層情報が、
Exchange 2010 から送信されてきたようで、フォルダが追加されたようです。

レプリケーションには Exchange 2010 のサーバーだけが指定されている状態ですね。
image

■空き時間情報の格納状態を見る

空き時間情報の勉強をする際には MFCMAPI という CodePlex で提供されているツールがとても便利です。
MFCMAPI

今回はこのツールを使用しながら空き時間情報について勉強していきたいと思います。
今回は現時点でも標準的な環境の部類に入る、Windows XP SP3 + Outlook 2003 SP3 の環境を使用しています。

[user_2007] という Exchange 2007 にメールボックスを持つユーザーと [user_2010] という Exchange 2010 にメールボックスを
持つユーザーの 2 ユーザーを使用して空き時間情報をテストしていきます。
各ユーザーは自分のメールボックスのプロファイルを作成済みです。

まずは、[user_2007] というユーザーで XP にログインし、Outlook を起動した状態にします。
image?

そうしましたら、ダウンロードした MFCMAPI を起動してみます。
image

ダイアログが表示されますので、[OK] をクリックします。
image?

続いて、[Session] → [Logon and Display Store Table] をクリックします。
image

そうすると Outlook のプロファイル選択のダイアログが表示されますので、使用しているプロファイルを選択し、
[OK] をクリックします。
image

そうすると MFCMAPI で対象のプロファイルを使用してメールボックスに接続することができます。
空き時間情報は [パブリック フォルダ] に格納されますので、パブリック フォルダを選択してダブルクリックします。
image?

そうするとパブリックフォルダデータベースに接続することができます。
今回は空き時間情報をみたいので、[SCHEDULE+ FREE BUSY] の下の [EX:/o=<組織名>/~] をダブルクリックします。
image?

そうすると新たにウィンドウが開き、ダブルクリックした階層の内容が表示されます。
image

現時点では [user_2007] [user_2010] ともに予定を入力していませんので、アイテムは何も格納されていないですね。
それでは [user_2007] で予定を登録してみます。
imageimage?

Outlook の既定の設定では [15 分間隔] で空き時間情報の更新を行っています。
image

そのため、予定を入れた直後では空き時間情報は格納されません。
image
時間を減らしてもいいのですが、Outlook を閉じた場合も空き時間情報の更新が行われますので、一度 Outlook を終了させます。
[F5] キーで画面を更新するとアイテムが表示されました。
[Subject] を確認してみたところ、USER_2007 と表示されていますね。
このアイテムが [user_2007] の空き時間情報になります。
image?

それでは続いて [user_2010] で同様の操作をしてみたいと思います。
image

Outlook を起動してから MFCMAPI で現在の状況を確認してみます。
[USER_2007] で登録した空き時間情報が見えていますね。
# すぐに開いてこの状況ですので、この時点で個人的にはあれって思うのですが…。
image
[user_2010] でも予定を登録して、Outlook を終了してから [F5] をクリックしてみます。
image
image?

この状態で Exchange 2007 / 2010 のパブリックフォルダ管理コンソールで空き時間情報のアイテム数を確認してみます。

Exchange 2007 Exchange 2010
image image

合計アイテムの数に差が出ていますね…。
再度 [user_2007] で MFCMAPI を開いてみます。
なぜか 2 件見えてしまっています。
image
Exhcnage 2007 / 2010 のメールボックスデータベースでは自サーバー上のパブリックフォルダを参照するように設定をしてあります。
Exchange 2007 上に存在しているユーザーなのであれば Exchange 2007 のパブリックフォルダを参照すると思いますので、
[user_2007] の空き時間だけ見れると思っていたのですが、透過的に Exchange 2010 のパブリックフォルダを参照しているように
見えますね。
Exchange 2007 の空き時間情報のフォルダのレプリケーションタブでは Exchange 2010 を設定しているから見えているような気も
するのですが、手持ちには Exchange 2007 / 2010 の本しかなく、SCHEDULE+ に関する記述がないんですよね。

空き時間情報はこういう動きなのでしょうか…。

ひとまず、MFCMAPI を使用するとどのユーザーの空き時間情報が見えるのかという確認をすることができるのは
間違いはないと思います。
# どのサーバーのフォルダを参照しているのかがよくわかっていないのですが。

Exchange は奥が深い…。パブリックフォルダについての謎は深まるばかりです。

Written by Masayuki.Ozawa

2月 6th, 2010 at 6:58 am

Posted in Exchange

Exchange 2007 → 2010 への移行時のパブリックフォルダのあれこれ – その 2 –

leave a comment

以前、Exchange Server 2007 を削除した際には以下の手順を実施していました。
Exchange Server 2007 を撤去

パブリックフォルダデータベースがうまく削除できなかったんですよね…。
ADSI エディタでパブリックフォルダのストアを強制的に削除して、パブリックフォルダデータベースを消したことにしていました。

削除方法がわかったので投稿しておきたいと思います。

■Exchange Server 2007 のパブリックフォルダデータベースの削除方法

Exchange 2010 を追加後、Exchange 2007 上の EMC / EMS ではパブリックフォルダデータベースが削除できなくなるようです。

Exchange 2007 で使用していたパブリックフォルダデータベースを削除しようとすると以下のエラーとなります。
image?

これは削除しようとしたパブリックフォルダデータベースが、メールボックスデータベースの既定のパブリックフォルダデータベースに
設定されているためです。
そこで既定のパブリックフォルダデータベースを Exchange 2010 に変更します。
image image

この状態でもパブリックフォルダデータベースは削除ができません。
image

次のステップとしてレプリカをすべて削除します。
以下のコマンドは組織内の最後のパブリックフォルダを削除するときに使用するコマンドですので本当は違うんでしょうね…。
この辺はもっと検証しないと駄目ですね。

Get-PublicFolder -Server $ENV:COMPUTERNAME "" -Recurse -ResultSize:Unlimited | Remove-PublicFolder -Server $ENV:COMPUTERNAME -Recurse -ErrorAction:SilentlyContinue

Get-PublicFolder -Server $ENV:COMPUTERNAME "Non_Ipm_Subtree" -Recurse -ResultSize:Unlimited | Remove-PublicFolder -Server $ENV:COMPUTERNAME -Recurse -ErrorAction:SilentlyContinue

ここまでの作業で以下のエラーが発生するところまでは持っていくことができました。
image?

——————————————————–
Microsoft Exchange エラー
——————————————————–
パブリック フォルダ データベース ‘Public Folder Database’ を削除することができません。

Public Folder Database
失敗
エラー:
オブジェクトは、新しいバージョンである Exchange 0.10 (14.0.100.0) で作成されたため、
読み取り専用です。
現在サポートされているバージョンは 0.1 (8.0.535.0) です。

——————————————————–
OK
——————————————————–

前回はこのエラーの解消方法がわからなかったので構成パーティションから強制削除したのですが、ようやく解消方法がわかりました。
Exchange 2010 の EMS から Exchange 2007 のパブリックフォルダデータベースを削除すればよかったようです。

Exchange 2010 の Exchange Management Shell から Remove-PublicFolderDatabase を実行します。
以下のコマンドは [EXCHANGE-MBX-02] という Exchange 2007 の [Second Storage Group] というストレージグループに配置している
パブリックフォルダデータベース [Public Folder Database] を削除する場合のコマンド例です。

Remove-PublicFolderDatabase "EXCHANGE-MBX-02Second Storage GroupPublic Folder Database"

確認
この操作を実行しますか?
パブリック フォルダー データベース
"EXCHANGE-MBX-02Second Storage GroupPublic Folder Database" を削除しています。
[Y] はい(Y)? [A] すべて続行(A)? [N] いいえ(N)? [L] すべて無視(L)? [?] ヘルプ
(既定値は "Y"):A
警告: 指定したデータベースが削除されました。
C:Program FilesMicrosoftExchange ServerMailboxSecond Storage GroupPublic Folder Database.edb
内にデータベース
ファイルがある場合は、そのファイルをコンピューターから手動で削除する必要があります。
指定されたデータベースは Public Folder Database です。

Exchange 2007 では削除できなかったものが Exchange 2010 から実行すると削除できました。

この状態で Exchange 2007 で再度パブリックフォルダデータベースを作成すると以下のメッセージが表示されてしまいます。
image

パブリックフォルダデータベースが読み取り専用…。メッセージとしては削除時と同じ内容が表示されているようですね。
このメッセージが表示され、マウント処理が取り消しになってしまっているため、作成後はマウント解除状態となっています。
image?
このままではパブリック
フォルダ管理ツールで接続ができないのでひとまずマウントします。
image

マウントは正常にできるので、データベースはきちんと作成されているようですね。
image?

この状態でパブリックフォルダデータベースの設定を変更したり、2007 のパブリックフォルダデータベースから
新規のフォルダを作成することができます。
メッセージ上は読み取りと出力されていますが、実際には読み取り専用となっているわけではないようですね。

image image

Exchange 2010 を導入するとパブリックフォルダ関連は注意が必要になるかも知れないですね。
私はパブリックフォルダが苦手なので 2003 + 2007 + 2010 の環境を作らざるを得なくなってしまった場合には
ちょっと泣きそうになると思います。
# まぁ Exchange 自体が得意ということでもないので Exchange 絡みは毎回、四苦八苦しているのですが。

ちなみに、この状態で作成されたパブリックフォルダーデータベースの [SCHEDULE+ FREE BUSY] の内容がこちらです。
image
?
ディレクトリが空ですね…。
この状態では Outlook 2003 から空き時間情報を発行することができません。
次の投稿では空き時間情報について勉強していきたいと思います。

Written by Masayuki.Ozawa

2月 6th, 2010 at 4:57 am

Posted in Exchange

Exchange 2007 → 2010 への移行時のパブリックフォルダのあれこれ – その 1 –

leave a comment

最近は Exchange 案件に携わることが多く、Exchange 2010 への移行を担当することもちらほらと。

2003 → 2010 への移行は自習書があるのですが、2007 からの移行に関しては自習書がないため、手探りで
勉強をしているところです。

私の Exchange のスキルのベースは Exchange 2007 + Outlook 2007 の環境を構築して独学で勉強をしたものなので、
パブリックフォルダが苦手なんですよね…。
勉強を開始した当初は自分が Exchange に携わる時は Outlook 2007 が一般的だろうと思っていたのですが、実際には
そんなこともなく XP + Outlook 2003 の組み合わせはまだまだ現役ですよね。
そのため、Exchange 2010 を使用する場合には情報共有目的としてのパブリックフォルダではなく、システム用途としての
パブリックフォルダが必須となります。

勉強をする中で、移行時のパブリックフォルダについてわかったことがありますので複数回に分けて投稿していきたいと思います。
# 今の Microsoft 製品の表記では [パブリックフォルダ] という表記が正しいんですよね。長音記号打ち忘れてます…。
  ある程度書き上げてから気づいたので本投稿は長音記号なしでいきます!

■Exchange 2000 / 2003 → 2007 → 2010 の場合の注意点

既に Exchange 2007 を導入済みの環境を 2010 に移行する場合は、このパターンになっていることが多いと思います。

今回の検証で使用している環境が下図になります。

image?

Exchange 2000 から 2010 にアップグレードする際に 2007 を経由する、一般的なパターンだと思います。
Exchange 2007 へ移行したタイミングで Exchange 2000 を撤去し、Exchange 2010 を追加しています。

[①移行後撤去] のタイミングで Exchange 2000 用に使用していた Windows Server 2003 のドメインコントローラーも
合わせて撤去しています。
# Exchange 2000 では Windows Server 2008 を認証用のドメインコントローラーとして使用することができません。

この状態になった場合、Exchange 2010 のサーバーの [アプリケーション] の [イベント ビューアー]に? [15 分間隔] で
以下のエラーが出力されるようになることがあります。

image

ログの名前:???????? Application
ソース:?????????? MSExchange Store Driver
日付:??????????? 2010/02/06 9:15:26
イベント ID:?????? 1020
タスクのカテゴリ:????? MSExchangeStoreDriver
レベル:?????????? エラー
キーワード:???????? クラシック
ユーザー:????????? N/A
コンピューター:?????? EXCHANGE-MBX-01.exchange.local
説明:
ストア ドライバーは、次のエラーが発生したため、パブリック フォルダー レプリケーション メッセージ "Hierarchy (PublicFolderDatabase@exchange.local)" を配信できませんでした: Active Directory ユーザーが見つかりませんでした。
イベント XML:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
? <System>
??? <Provider Name="MSExchange Store Driver" />
??? <EventID Qualifiers="49156">1020</EventID>
??? <Level>2</Level>
??? <Task>1</Task>
??? <Keywords>0x80000000000000</Keywords>
??? <TimeCreated SystemTime="2010-02-06T00:15:26.000000000Z" />
??? <EventRecordID>2282</EventRecordID>
??? <Channel>Application</Channel>
??? <Computer>EXCHANGE-MBX-01.exchange.local</Computer>
??? <Security />
? </System>
? <EventData>
??? <Data>"Hierarchy (PublicFolderDatabase@exchange.local)"</Data>
??? <Data>Active Directory ユーザーが見つかりませんでした。</Data>
? </EventData>
</Event>

メールアドレスを見ていただくとわかるかと思いますが、パブリックフォルダ絡みでエラーが発生しています。
# [PublicFolderDatabase@exchange.local] は Exchange 2007 に存在するパブリックフォルダの内部アドレスです。

ここで Exchange 2007 と Exchange 2010 でパブリックフォルダ複製のメッセージ追跡ログを確認してみたいと思います。

[Exchange 2007]

Exchange 2007 から Exchange 2010 のパブリックフォルダに送信されたメッセージをメッセージ追跡ログから確認します。
image

[EventId] が [FAIL] のものは見当たらないですね。
Exchange 2007 から 2010 への配信に関しては問題なさそうです。
[PublicFolderDatabase@exchange.local] が Exchange 2007 にあるパブリックフォルダで
[PublicFolderDatabase2010@exchange.local] が Exchange 2010 にあるパブリックフォルダになります。
# 検証環境の画面サイズ上文字が一部切れています。

image

[Exchange 2010]

続いて Exchange 2010 のメッセージ追跡ログがら Exchange 2010 のパブリックフォルダが受信したメッセージを確認します。

image
出力された結果がこちら。
[FAIL] になっているものがありますね。
Exchange 2007 から受け取ったメッセージの格納でエラーになっているようですね。

image?

[FAIL] になっている行の、[RecepientStatus] を確認すると以下の情報が表示されています。

554 5.6.0 STOREDRV.Deliver.Exception:ObjectNotFoundException; Failed to process message due to a permanent exception with message Active Directory

Exchange 2007 から 2010 宛のパブリックフォルダのメッセージを受信した際に格納しようとして、エラーとなっているようですね。
そのエラーが追跡ログとイベントビューアーに表示されているようです。
Active Directory と出力がありますので AD も関係していそうですね。

■解決策

ここまでの情報をもとに調べてみたところ以下の事象が当てはまるようです。
Public folders not replicating betwen exchange 2007 and 2010
Public Folder Mayhem Exchange 2010

日本語の情報が見当たらない…。
私は英語はとても苦手 (TOEIC の点数びっくりするぐらい低いです) なのですが、日本語の情報が無いので背に腹は変えられません。

情報を読んでくと Exchange 2000 の時に使用していた管理グループの情報が影響して、本現象が発生してしまっているようですね。

私の検証環境には Exchange 2007 → 2010 に移行した環境があるので、見比べてみたいと思います。

[Exchange 2007 → 2010 への移行環境]

Exchange の情報は AD の構成パーティションに格納されています。
それでは、AD DS 上で ADSI エディターを実行して情報を確認してみます。
# こちらの環境は AD DS は 2008 R2 を使用しています。
image

エディターが開いたらメニューバーの [操作] → [接続] を選択します。
image

[既知の名前付けコンテキストを選択する] を [構成] にして、[OK] をクリックします。

image

そうすると構成パーティションを表示できるようになります。
image

Exchange の基本的な構成情報は [CN=Configuraiton, DC=<ドメイン名>, CN=Services, CN=Microsoft Exchange] に格納されています。
image

構成パーティションは、[Enterprise Admins] が管理をするパーティションですが、Exchange 関連のコンテナに関しては、
[Exchange Organization Administrators] もフルコントロールを持っています。
そのため、このグループに入っているユーザーであれば、EMC を介して Exchange の設定を変更し、その変更情報を
AD 上に格納することができるといった流れになっているかと思います。
image

今回、確認したいのは Exchange の管理グループの情報になります。
[CN=Configuraiton, DC=<ドメイン名>, CN=Services, CN=Microsoft Exchange, CN=<Exchange 組織名>, CN=Administrative Groups]
が、管理グループの格納場所になります。

Exchange 2007 以降の場合は管理グループは [Exchange Administrative Group (FYDIBOHF23SPDLT)] が既定です。
# この管理グループ名は、変更できない / してはいけなかったはずです。
image
Exchange 2007 からの移行時は一つしか管理グループがない状態ですね。

[Exchange 2000 → 2007 → 2010 への移行環境]?

それでは Exchange 2000 から移行した環境をみてみましょう。
管理グループが 2 つありますね。
[CN=最初の管理グループ] が Exchange 2000 で使っていた管理グループになります。
# 検証なので初期の管理グループしか使っていませんでした。

image

?

Exchange 2007 → 2010? / Exchange 2000 → 2007 → 2010 へ移行を行った環境では管理グループの設定状況に差があります。
Exchange 2000 の撤去時にアンインストールを実行し、正常に完了しているのですが、管理グループの情報は消えないようですね。

英語サイトの情報をみるとこの Exchange 2000 時代の管理グループの [CN=Servers] が本現象の原因となっているようです。
image

このコンテナは名前変更ができません…。
# 頑張ればできるのでしょうけど。
image

このコンテナの配下が空のことを確認して思い切って削除します。

?image

image?image

削除したら次の複製タイミング (デフォルト 15 分間隔) まで小休止です。
私の環境では気づいたら複製が止まっていたので適当なパブリックフォルダを Exchange 2007 で作って
複製要求を Exchange 2007 から 2010 に出してもらいました。

以下が Exchange 2010 の追跡ログの内容です。

9:30 まではパブリックフォルダのメッセージを受信するたびにエラーとなっていたのですが、ADSI エディタで
変更した後 (10:30 すぎぐらい) に受信したパブリックフォルダのメッセージは正常に受信ができています。
image

[MSExchange Store Dirver] のエラーも止まったようです。

image

せっかくなので、追跡ログだけでなく接続ログも見てみたいと思います。

[Exchange 2010]

#Software: Microsoft Exchange Server
#Version: 14.0.0.0
#Log-type: Transport Connectivity Log
#Date: 2010-02-06T00:15:15.496Z
#Fields: date-time,session,source,Destination,direction,description
2010-02-06T00:15:15.496Z,,Transport,,*,"service started,MaxConcurrentSubmissions=20;MaxConcurrentDeliveries=18;MaxSmtpOutConnections=1000"
2010-02-06T00:15:23.512Z,08CC74D89C38D309,MAPI,exchange-mbx-01.exchange.local,+,Delivery;QueueLength=1
2010-02-06T00:15:23.512Z,08CC74D89C38D309,MAPI,exchange-mbx-01.exchange.local,>,Starting delivery
2010-02-06T00:15:25.934Z,08CC74D89C38D309,MAPI,exchange-mbx-01.exchange.local,>,Connecting to server exchange-mbx-01.exchange.local session type Public Folder
2010-02-06T00:15:26.168Z,08CC74D89C38D309,MAPI,exchange-mbx-01.exchange.local,>,Failed to connect to server exchange-mbx-01.exchange.local
2010-02-06T00:15:26.231Z,08CC74D89C38D309,MAPI,exchange-mbx-01.exchange.local,-,Messages: 0 Bytes: 0 Recipients: 0
2010-02-06T00:30:05.238Z,08CC74D89C38D30B,MAPI,exchange-mbx-01.exchange.local,+,Delivery;QueueLength=1
2010-02-06T00:30:05.238Z,08CC74D89C38D30B,MAPI,exchange-mbx-01.exchange.local,>,Starting delivery
2010-02-06T00:30:05.238Z,08CC74D89C38D30B,MAPI,exchange-mbx-01.exchange.local,>,Connecting to server exchange-mbx-01.exchange.local session type Public Folder
2010-02-06T00:30:05.301Z,08CC74D89C38D30B,MAPI,exchange-mbx-01.exchange.local,>,Failed to connect to server exchange-mbx-01.exchange.local
2010-02-06T00:30:05.301Z,08CC74D89C38D30B,MAPI,exchange-mbx-01.exchange.local,-,Messages: 0 Bytes: 0 Recipients: 0
2010-02-06T02:00:02.448Z,08CC74D89C38D30D,MAPI,exchange-mbx-01.exchange.local,+,Delivery;QueueLength=1
2010-02-06T02:00:02.448Z,08CC74D89C38D30D,MAPI,exchange-mbx-01.exchange.local,>,Starting delivery
2010-02-06T02:00:02.464Z,08CC74D89C38D30D,MAPI,exchange-mbx-01.exchange.local,>,Connecting to server exchange-mbx-01.exchange.local session type Public Folder
2010-02-06T02:00:02.761Z,08CC74D89C38D30D,MAPI,exchange-mbx-01.exchange.local,-,Messages: 1 Bytes: 3999 Recipients: 1
2010-02-06T02:00:02.917Z,08CC74D89C38D30E,MAPI,exchange-mbx-01.exchange.local,+,Delivery;QueueLength=1
2010-02-06T02:00:02.917Z,08CC74D89C38D30E,MAPI,exchange-mbx-01.exchange.local,>,Starting delivery
2010-02-06T02:00:02.932Z,08CC74D89C38D30E,MAPI,exchange-mbx-01.exchange.local,>,Connecting to server exchange-mbx-01.exchange.local session type Public Folder
2010-02-06T02:00:02.964Z,08CC74D89C38D30E,MAPI,exchange-mbx-01.exchange.local,-,Messages: 1 Bytes: 4797 Recipients: 1
2010-02-06T02:00:22.521Z,08CC74D89C38D30F,SMTP,hub version 8,+,SmtpRelayWithinAdSite 61027a30-e9a9-4c2d-acb5-c1efc96d5d8b
2010-02-06T02:00:22.567Z,08CC74D89C38D30F,SMTP,hub version 8,>,EXCHANGE-MBX-02.exchange.local[10.1.0.2]
2010-02-06T02:00:22.599Z,08CC74D89C38D30F,SMTP,hub version 8,>,Established connection to 10.1.0.2
2010-02-06T02:00:22.942Z,08CC74D89C38D30F,SMTP,hub version 8,-,Messages: 1 Bytes: 8309 ()

Failed になっていたものが変更後は出力されなくなっていますね。
Exchange 2010 は接続ログがデフォルトで有効なのですが、Exchange 2007 ではデフォルト無効で、
私が設定変更していなかったので、Exchange 2007 の接続ログはお見せできません…。

サイトの情報をみていますと 2003 からのアップグレードの場合にも発生しているようですので、2000 だけではなく
2000 / 2003 から移行した場合に発生する可能性のある共通の事象なのではないでしょうか。

このような現象を RTM が出たばかりの 11 月に発見し、翌月には解決している海外のエンジニアの方ってすごいですね~。

2010 移行時にパブリックフォルダに関して気付いたことは他にもありましたのでそれらは次回に。

Written by Masayuki.Ozawa

2月 6th, 2010 at 2:31 am

Posted in Exchange

ドメインコントローラーと Exchange Server 2010 の共存環境の構築

leave a comment

以前 ドメインコントローラーと Exchange Server 2007 の共存環境の構築 という投稿をしました。
これが Exchange Server 2010 の場合はどうなるのかなと思って検証してみました。

今回の組み合わせは Windows Server 2008 R2 + Exchange Server 2010 になります。

まず前回はインストールができなかった IPv6 を無効にした状態でインストールを実行してみました。
?image

Exchange 2010 でもIPv6 が有効になっていないとエラーになってしまうようですね。
image

IPv6 が有効になっている状態ではインストールが完了します。
image

IPv6 が有効な場合はインストールすることができました。
image

ドメインコントローラーと共存させる場合は、Exchnage 2007 と同様の条件になるようですね。

2010/4/21 追記

2007 同様、IPv6 でインストールができないのは以下の KB の現象でした…。

Windows Server 2008 ベースのコンピューターで、Exchange Server 2007 のハブ トランスポートの役割または Microsoft Exchange Server 2010 のハブ トランスポートの役割のインストールが失敗する

こちらも IPv6 が無効でもインストールできます。

Written by Masayuki.Ozawa

2月 5th, 2010 at 2:23 pm

Posted in Exchange

Hyper-V Server 2008 R2 で Live Migration 環境を構築 – 追加したノードは R2 –

leave a comment

Hyper-V Server 2008 R2 が提供された当初から気になっていたことがありました。
Hyper-V Server 2008 R2 + Windows Server 2008 R2 でクラスタを組んで Live Migration はできるのか??

昨日、検証用購入した中古の ThinkPad が届いたのでさっそく試してみました。

■使用した環境

今回の環境はこちら。
ThinkPad 2 台構成です。
共有ストレージには Windows Storage Server 2008 を使用しています。

機種 OS CPU
ThinkPad T60 Hyper-V Server 2008 R2
image
image
# T60 標準のT5500 から T5600 に換装しています。
ThinkPad T61 Windows Server 2008 R2
Datacenter Edition
image
image

?

■クラスタの検証

Hyper-V Server 2008 R2 に関しては以前構築したクラスタ環境を使用しています。
この環境に Windows Server 2008 R2 Datacenter Edition を追加してみました。
[オペレーティング システムのインストールオプションを検証] で失敗になるのですがクラスタを構築することができました。
image

image?

■構築された環境

できた環境がこちらになります。
[HVS-CLUSTER] という仮想ホスト名でクラスタを構築しています。
以下の画面は SCVMM で表示されるサーバーの階層になります。

image

ここに Live Migration 可能な OS として CSV 上に 1 台のゲスト OS を構築しています。
# メールの検証環境として構築した Windows Server 2000 を 配置しています。
image image

■Live Migration を実行

それではさっそく Live Migration の実行です。

SCVMM で Live Migration を実行する場合は、[移行] 操作を実行します。
image

[フェール オーバー クラスター マネージャー] の場合は [仮想マシンを別のノードにライブ マイグレーション] で
Live Migration を実行できます。
image

[転送の種類] が [ライブ] となっているサーバーに対しての移行が Live Migraion になります。

image

エラーになることなく Live Migration が完了しました。

image

?

Hyper-V Server 2008 R2 と Windows Server 2008 R2 間でも Live Migration はできるんですね~。
サポートは受けられない構成でしょうけども。

Written by Masayuki.Ozawa

2月 4th, 2010 at 2:51 pm

Posted in Hyper-V

SQL Server Express Edition で定期的にデータベースをバックアップ

leave a comment

以前投稿した内容に SQL Server 2008 Express Edition でメンテナンスプランの利用についてコメントをいただきました。

残念ながら SQL Server の Express Edition では、メンテナンスプランが使用できないんですよね。
SQL Server 2008 の各エディションがサポートする機能

また、SQL Server の Express Edition では SQL Server Agent も使用できないため、定期的なジョブを SQL Server 側で
実行することができません。

スキルチャージプログラムで貸与されている環境は Community Server をインストールしてあり、データベースには
SQL Server 2008 Express Edition を使用しています。
この環境ですが日次で 1 世代のバックアップだけは自動で取得する用に設定をしてあります。

メンテナンスプランと SQL Server Agent を使用できない状態で定期的にバックアップを取得するため、
タスクスケジューラ + SQLCMD.EXE を使ってバックアップのスケジューリングを設定しています。

[タスク スケジューラ] は管理ツールの中に入っています。?

このタスク スケジューラで以下のようなタスクを作成しています。
?image image
image

操作には以下のような設定を登録してあります。

操作 プログラムの開始
プログラム/スクリプト "C:Program FilesMicrosoft SQL Server100ToolsBinnSQLCMD.EXE"
引数の追加 (オプション) -S localhost<インスタンス名> -E -i "E:ToolsBackupCSDBBackup.sql"

?

CSDBBackup.sql には以下の内容を記載しています。
# SSMS で生成したスクリプトを記載しているだけですが。

BACKUP DATABASE [CommunityServer] TO? DISK = N’E:BackupCommunityServer.bak’ WITH NOFORMAT, INIT,
NAME = N’CommunityServer-完全 データベース バックアップ’, SKIP, NOREWIND, NOUNLOAD,? STATS = 10
GO

?

同様の方法でインデックスのメンテナンスも可能です。
ざっくりと作ったインデックスの再構築のクエリです。
これを SQLCMD でタスクスケジューラから実行すると定期的にインデックスの断片化を解消することができます。
# アドホッククエリで書いてしまっていますが…。

SET NOCOUNT ON
USE [CommunityServer]
GO
DECLARE @name sysname
DECLARE @SQL nvarchar(500)

SELECT * INTO [#tables] FROM [sys].[tables]

DECLARE [table_cursor] CURSOR FOR
SELECT [name] FROM [#tables]

OPEN [table_cursor]
FETCH NEXT FROM [table_cursor] INTO @name

WHILE @@FETCH_STATUS = 0
BEGIN
??? SET @SQL = N’ALTER INDEX ALL ON [‘ + @name + ‘] REBUILD’
??? EXECUTE sp_executesql @SQL
??? FETCH NEXT FROM [table_cursor] INTO @name
END

CLOSE [table_cursor]
DEALLOCATE [table_cursor]

?

自分でクエリを書くのが面倒な場合は、定期的に実行したい操作を SSMS からスクリプト化しておけばよいと思います。

Express Edition を使っていてもデータベースのメンテナンスは定期的に実行しないと駄目ですが、無償版なので
この辺の機能がないのは仕方ないですね。

Written by Masayuki.Ozawa

1月 31st, 2010 at 3:26 pm

Posted in SQL Server

SCVMM のセルフサービスポータルの接続経路について

leave a comment

SCVMM のセルフサービスポータルをインターネット経由で公開できないかなといろいろと検証していました。
インターネット経由だと VPN か Direct Access 辺りを使用しないと厳しそうなのですが、調べたことを投稿しておきたいと思います。

今回の検証をするにあたり、Tech Fielders のライトニングトークの [ここまではできる SCVMM セルフサービスポータル] を
参考にさせていただきました。
Tech Fielders セミナー これまでのライトニングトーク登壇者
# ライトニングトークの内容を自分で検証してみたという投稿になっているかと。

SCVMM のセルフサービスポータルにログインした後のゲスト OS の接続には 2 種類の接続方法が用意されています。

  1. VM に接続
  2. リモート デスクトップ

image image

どちらを使うかによってアクセスの経路が変わります。

■VM に接続

VM に接続は SCVMM の管理コンソールの [バーチャル マシンに接続] と同じ機能になります。
SCVMM の管理コンソールで接続した場合は、以下のように表示されます。
image?image

これをセルフサービスポータルで表示すると以下のように表示されます。

image
ゲスト OS のコンソールを直接開く機能ですね。

この機能ですが以下の接続がされているようです。
ポート 2179 で直接ホストに接続しているみたいですね。
SCVMM の管理コンソールのバーチャルマシンに接続で実行される [VirtualMachineViewer.exe] も、ポート 2179 で接続が
されているので、セルフサービスポータルの ActiveX も同様の動作になるんですね。

image

SCVMM がホスト OS にアクセスして表示しているのではなく、クライアントがホスト OS に接続をしているようです。
そのためクライアントが直接ホスト OS にアクセスできないといけないようです。

また、ホスト OS に接続をする関係上、ホスト OS を名前解決できないと接続ができません。
ホスト OS の名前解決ができないと以下の画面になってしまい接続ができません。

image

■リモートデスクトップ

リモートデスクトップですがこちらはゲスト OS のリモートデスクトップに接続をします。
そのため、ゲスト OS でリモートデスクトップを設定する必要があります。
image

私の環境の問題のような気もするのですが、[ネットワーク レベル認証で~] にしてリモートデスクトップを設定していると
セルフサービスポータルで接続することができませんでした。

image

[リモート デスクトップを実行している~] だと接続ができました。
image

リモートデスクトップだと以下の接続になるようですね。
直接ゲスト OS にリモートデスクトップのデフォルトポート 3389 で接続されます。
そのため、ゲスト OS でリモートデスクトップのポートを 3389 から変更すると接続できませんでした…。

image

こちらも直接接続していますので、ゲスト OS の名前解決ができないとエラーになります。
image

?

SCVMM のセルフサービスポータルからコンソールを開く場合は、ホストまたはゲスト OS に直接接続できる必要があるので、
インターネット経由での接続は簡単にはできなさそうですね。

インストールマニアックス 3 の VPS コースでは DotNetPanel という Web 管理ツールが提供されているのですが、
こちらはコンソールを操作する機能は提供されていないんですよね。

Hyper-V + SCVMM で IaaS の環境が作れれば面白いな~と思ったのですが、コンソールの利用を考えるとなかなか難しいですね。

Written by Masayuki.Ozawa

1月 31st, 2010 at 11:12 am

Posted in System Center

Hyper-V Server 2008 R2 で Live Migration 環境を構築 – 環境の都合で 1 台構成 –

leave a comment

自宅の検証環境にはインストールマニアックス 3 の勉強用で構築した Hyper-V Server 2008 R2 が 1 台あります。
# 私は VPS コースだったのですが勉強を兼ねて構築していました。

せっかくなので、この環境で Live Migration 環境を作ってみたいと思います。
1 台なので Live Migration のテストはできませんが。
# 2 月のどこかで中古の ThinkPad を購入して Live Migration の検証環境を作りたいな~とは思っているのですが。
??? UPS の電源容量が小さいので Live Migration 環境を ML115 で作ろうとすると UPS がなり始めてしまうのですよね・・・。

ちなみにこの環境はドメインに参加済みの環境です。

■クラスタのインストール

まずはクラスタ環境を構築する必要があります。
Hyper-V Server 2008 R2 では [sconfig.cmd] で表示されるメニューからクラスタの有効化ができます。

  1. [11] を選択
    ?image
  2. [はい] をクリックします。
    image
  3. DISM で機能が有効化されます。
    image
  4. [OK] をクリックします。
    image

?

■iSCSI イニシエーターサービスの自動起動化

デフォルトでは iSCSI イニシエーターのサービスは自動起動になっていませんので、自動起動に設定し初回の起動を行います。
# ローカルで MMC が使えないのでコマンドで。

  1. コマンドプロンプトで以下のコマンドを実行し、サービスを自動起動にします。
    sc config MSiSCSI start= auto
  2. 自動にしてもサーバーが再起動しないとサービスが起動されないので、再起動しない場合は以下のコマンドで起動させます。

    sc start MSiSCSI

?

■iSCSI ターゲットへの接続

iSCSI ターゲットへの接続ですが、iSCSI イニシエータのコマンドとして [iscsicli.exe] が用意されています。
Server Core 環境なのでコマンドで設定するしかないのかと思っていたのですが、GUI である、[iscsicpl.exe] が使えるんですね。

image

これは楽でいいです。

ターゲットを入力してクイック接続してみます。
# ターゲット側で、iSCSI ターゲットを作成し、Hyper-V Server 2008 R2 の iSCSI イニシエータの FQN を追加済みです。
image

接続できました。
image

ターゲット側でディスクを割り当てておきましたので、まずはクォーラム用のディスクが使用可能な状態です。
image

ひとまず、[DISKPART] コマンドで Q ドライブに割り当てておきます。
今回は、ディスク 2 に新規のディスクが割り当てられていますので以下のコマンドを実行していきます。

diskpart
list disk
select disk 2
create part primary
format quick
assign letter=Q
exit

?

■クラスタの構築

[cluster.exe] を使ってクラスタを構築してもいいのですが今回は勉強を兼ねて PowerShell で。
ドメインにクラスタ用のコンピュータアカウントを作成して無効状態にし、セキュリティとして今回の作業に
使用するドメインユーザーのフルコントロールを付与している状態です。
image?? image

後は以下のコマンドを順次実行していきます。
クラスタのコンピュータアカウントにフルコントロールを指定したユーザーをローカルの Administrators に入れるところから
コマンドを記載しています。
現在のサーバーは DHCP で IP を割り当てているので、クラスタの作成時に静的 IP を指定していません。

net localgroup “Administrators” “<ドメイン名"ユーザー名>” /add
runas /user:“<ドメイン名ユーザー名>”? cmd
powershell

Import-Module FailoverClusters
New-Cluster ?Name “HVS-CLUSTER” ?Node $ENV:COMPUTERNAME

これでクラスタの構築は完了です。
他の端末に、RSAT の [フェールオーバー クラスタリング ツール] を導入して接続してみたいと思います。

image?

正常に接続できました。
image

クラスターの作成自体も管理ツールからリモートで実施できるので、管理端末が用意できるのであれば、Hyper-V Server 上で
PowerShell を使わなくても構築することが可能です。

■クォーラムディスクの設定

作成直後のクォーラムはノードマジョリティになっているので、Q ドライブに割り当てているディスクをクォーラムとして
追加したいと思います。

Get-ClusterQuorum
Get-ClusterAvailableDisk | Add-ClusterDisk
Get-ClusterResource | ft -Wrap
Set-ClusterQuorum -NodeAndDiskMajority "クラスター ディスク 1"

?

これでクォーラムがノードおよびディスクマジョリティになりました。

Get-ClusterQuorum

Cluster??????????????????? QuorumResource??????????????????????????? QuorumType
——-??????????????????? ————–??????????????????????????? ———-
HVS-CLUSTER??????????????? クラスター ディスク 1??????????? NodeAndDiskMajority

?

■CSV の有効化

初期状態では CSV は無効になっているので、これを有効化します。

Get-Cluster | %{$_.EnableSharedVolumes="Enabled/NoticeRead"}

EnabledSharedVolumes は [Enabled/NoticeRead] を指定する必要があります。
CSV を有効にするときには以下の通知が表示されます。
image
[Enabled] だけですと上記の通知がコンソール内に表示されるだけで有効にすることができません。
有効にするためには通知を読んだ事を指定する必要がありますので、[Enabled/NoticeRead] が必要となります。
無効にする場合は、[Disabled] を指定します。

GUI から CSV の無効化はできないみたいなので、CSV を無効にする場合には PowerShell から実行する必要があるようですね。

■CSV にディスクを追加

現在はクォーラム用のディスクしか iSCSI に作っていなかったので CSV 用のディスクを新規に作り、CSV に割り当てたいと思います。
私の環境の iSCSI ターゲットは Storage Server 2008 ですので、仮想ディスクを追加して、iSCSI イニシエータでマッピングします。
image image

あとはこのディスクも DiskPart でフォーマットしておきます。
今回はドライブ文字は不要ですのでアサインはしません。
# クォーラムも不要なのですが、今までのクラスタ構築の癖で Q ドライブを割り当てちゃうんですよね。

diskpart
list disk
select disk 3
create part primary
format quick
exit

?

後はこのディスクを CSV に追加します。

Get-ClusterAvailableDisk | Add-ClusterDisk
Get-ClusterResource | ft -Wrap
Add-ClusterSharedVolume "クラスター ディスク 2"

?

これで CSV の追加は完了です。
CSV に追加されているディスクを確認してみます。

Get-ClusterSharedVolume

Name?????????????????????? State????????????????????? Node
—-?????????????????????? —–????????????????????? —-
クラスター ディスク 2????? Online???????????????????? hvs2008r2

?

■仮想マシンの作成

残るは Live Migration する仮想マシンの作成です。
ひとまず管理用端末の GUI で仮想マシンを作りたいと思います。

クラスタの管理は RSAT の [フェールオーバー クラスタリング ツール] をインストールすればよいのですが、仮想マシンの作成は
クラスタ用の管理ツールではできません。
image

仮想マシンを作成する場合は [Hyper-V ツール] をインストールする必要があります。
image
今回は管理用端末に SCVMM 2008 R2 の端末を使用しているのですが、この場合でも RSAT の Hyper-V ツールが必要になるんですね。

GUI を使用して CSV を使用する仮想マシンを作成することができました。

image?

PowerShell の場合は、[Add-ClusterVirtualMachineRole] を使用すればよいと思うのですが、私の環境では
エラーになってしまうんですよね・・・。
GUI からは作成できているのでコマンドのオプションを間違っているような気がするのですが原因までは追えていません。

?

コマンドからの仮想マシンの作成がうまくいっていないのですがひとまずこれで Live Migration に必要となる環境までは
設定ができたと思います。

GUI って楽だな~と改めて実感しました・・・。

Written by Masayuki.Ozawa

1月 31st, 2010 at 4:32 am

Posted in Hyper-V

MED-V の設定を考える – クラスターモードで冗長化 その 3 –

leave a comment

冗長化の最後として、サーバーをシャットダウンしながら冗長化のテストをしてみたいと思います。

■管理コンソールの接続

まずは管理コンソールの接続テストから。

image

  1. 両サーバーが停止している場合
    両サーバーをシャットダウンしている状態です。
    当然ながら接続できませんね。
    image
  2. 片側のサーバーが起動している場合
    片側のサーバー (2008R2-MDOP-01) だけ起動してみました。

    この状態は正常に接続ができますね。

    image 

    2008R2-MDOP-02 だけが起動している状態でも正常に接続ができます。

  3. ファイルサーバーが停止している場合 (MED-V サーバー起動後)
    MED-V サーバー (2008R2-MDOP-01 / 02) の起動後にファイルサーバーをシャットダウンした場合のテストです。
    MED-V サーバーの起動後にファイルサーバーをシャットダウンしているので、サービスは起動している状態です。
    image 
    共有ディレクトリ上にあるポリシーのファイルが読み込めずにエラーとなります。

    image 
    開かれたワークスペースも以下のように空の状態です。
    image 

  4. ファイルサーバーを起動
    上記の状態のときにファイルサーバーを再度起動させてみます。

    MED-V サーバーの再起動やサービスの再起動の必要なく接続ができるようになりました。

    image 

  5. ファイルサーバーが停止している場合 (MED-V サーバー起動前)
    MED-V サーバー起動時にファイルサーバーが停止していた場合です。

    この場合は MED-V のサービスが起動しないですね。
    image image

  6. ファイルサーバーを起動
    上記の状態ときにファイルサーバーを起動してみます。
    サービスは停止状態ですので、手動でサービスの起動を実施します。

    起動するかなと思ったら起動しませんでした…。
    定番のエラーが表示されていました。
    image image
    サーバーを再起動してもサービスは起動できませんでした。
    ファイルサーバーの [PublicKey.xml] を削除してサービスを起動してみます。

    2008R2-MDOP-01 では正常に起動しました。
    image
    2008R2-MDOP-02 ではエラーとなり以前としてサービスが起動できません。
    2008R2-MDOP-01 の KeyPair.xml を 2008R2-MDOP-02 にコピーしたところ正常にサービスが起動できました。
    構築時に発生した現象が再発したみたいですね。

    ファイルサーバーが起動していない状態で MED-V を起動しただけなのですがこのような状態になるとは…。

接続関してはどちらかのサーバーが起動していれば問題はなさそうですね。
ただし、ファイルサーバーが起動していない状態で MED-V サーバーを起動した場合は修復作業が必要になりそうですが。

■接続後にサーバーがシャットダウンされた場合

サーバー接続後に接続されているサーバーがシャットダウンされた場合の挙動を確認してみたいと思います。

まずは片側のサーバーを NLB の負荷分散対象外とします。
image

これで 2008R2-MDOP-01 に接続がされるようになります。

この状態で MED-V クライアントで管理コンソールを起動させた後に、でサーバーの負荷分散対象を逆転させます。
image 
管理コンソールは起動したままです。

image 

この状態でイメージをアップロードしようとすると以下のエラーになります。
image 

一度更新のボタンを押して、情報をリフレッシュすると正常にアップロードできるようになりました。

image image

image 

管理コンソールを使った冗長テストは以上で。
基本的な NLB のサーバー製品と考え方は変わらなさそうですね。
ファイルサーバーが起動していない場合の動作に関しては予想していませんでしたが…。

サーバー停止時の MED-V で実行されるアプリケーションの実行ですがこれに関してはオフライン実行と関連がありますので、
オフライン時 (サーバーと接続できない場合) の操作に関しては別途まとめていきたいと思います。

Written by Masayuki.Ozawa

1月 30th, 2010 at 7:40 am

Posted in MDOP

MED-V の設定を考える ? クラスターモードで冗長化 その 3 –

leave a comment

冗長化の最後として、サーバーをシャットダウンしながら冗長化のテストをしてみたいと思います。

■管理コンソールの接続

まずは管理コンソールの接続テストから。

image

  1. 両サーバーが停止している場合
    両サーバーをシャットダウンしている状態です。
    当然ながら接続できませんね。
    image
  2. 片側のサーバーが起動している場合
    片側のサーバー (2008R2-MDOP-01) だけ起動してみました。

    この状態は正常に接続ができますね。

    image?

    2008R2-MDOP-02 だけが起動している状態でも正常に接続ができます。

  3. ファイルサーバーが停止している場合 (MED-V サーバー起動後)
    MED-V サーバー (2008R2-MDOP-01 / 02) の起動後にファイルサーバーをシャットダウンした場合のテストです。
    MED-V サーバーの起動後にファイルサーバーをシャットダウンしているので、サービスは起動している状態です。
    image?
    共有ディレクトリ上にあるポリシーのファイルが読み込めずにエラーとなります。

    image?
    開かれたワークスペースも以下のように空の状態です。
    image?

  4. ファイルサーバーを起動
    上記の状態のときにファイルサーバーを再度起動させてみます。

    MED-V サーバーの再起動やサービスの再起動の必要なく接続ができるようになりました。

    image?

  5. ファイルサーバーが停止している場合 (MED-V サーバー起動前)
    MED-V サーバー起動時にファイルサーバーが停止していた場合です。

    この場合は MED-V のサービスが起動しないですね。
    image image

  6. ファイルサーバーを起動
    上記の状態ときにファイルサーバーを起動してみます。
    サービスは停止状態ですので、手動でサービスの起動を実施します。

    起動するかなと思ったら起動しませんでした…。
    定番のエラーが表示されていました。
    image image
    サーバーを再起動してもサービスは起動できませんでした。
    ファイルサーバーの [PublicKey.xml] を削除してサービスを起動してみます。

    2008R2-MDOP-01 では正常に起動しました。
    image
    2008R2-MDOP-02 ではエラーとなり以前としてサービスが起動できません。
    2008R2-MDOP-01 の KeyPair.xml を 2008R2-MDOP-02 にコピーしたところ正常にサービスが起動できました。
    構築時に発生した現象が再発したみたいですね。

    ファイルサーバーが起動していない状態で MED-V を起動しただけなのですがこのような状態になるとは…。

接続関してはどちらかのサーバーが起動していれば問題はなさそうですね。
ただし、ファイルサーバーが起動していない状態で MED-V サーバーを起動した場合は修復作業が必要になりそうですが。

■接続後にサーバーがシャットダウンされた場合

サーバー接続後に接続されているサーバーがシャットダウンされた場合の挙動を確認してみたいと思います。

まずは片側のサーバーを NLB の負荷分散対象外とします。
image

これで 2008R2-MDOP-01 に接続がされるようになります。

この状態で MED-V クライアントで管理コンソールを起動させた後に、でサーバーの負荷分散対象を逆転させます。
image?
管理コンソールは起動したままです。

image?

この状態でイメージをアップロードしようとすると以下のエラーになります。
image?

一度更新のボタンを押して、情報をリフレッシュすると正常にアップロードできるようになりました。

image image

image?

管理コンソールを使った冗長テストは以上で。
基本的な NLB のサーバー製品と考え方は変わらなさそうですね。
ファイルサーバーが起動していない場合の動作に関しては予想していませんでしたが…。

サーバー停止時の MED-V で実行されるアプリケーションの実行ですがこれに関してはオフライン実行と関連がありますので、
オフライン時 (サーバーと接続できない場合) の操作に関しては別途まとめていきたいと思います。

Written by Masayuki.Ozawa

1月 30th, 2010 at 7:40 am

Posted in MDOP