2009-01-16

Hyper-VゲストOSからUSB/eSATA対応外部ディスクを使う

 以下のページによると、バーチャルマシンは USB をサポートしないとあります。

次世代仮想化プラットフォーム「Hyper-V」研究
http://www.windows-world.jp/news/-/102390-2.html

Virtual Server 2005 R2以前、バーチャルマシンは非常にレガシーなハードウェアをエミュレートするものであった。エミュレートされるチップセット「Intel 440BX」は1998年の登場で、最大1GBのメモリに対応し、初めてACPI(Advanced Configuration and Power Interface)の電源機能とUSB(Universal Serial Bus)を実装したことで有名だ(バーチャルマシンはUSBをサポートしない)。


確かに今の設定では Hyper-V ゲスト OS 環境では USB が認識されない模様ですが、もっと確実な情報が収集できたところで、こちらの記事に情報を追加していきます。

2010/01/12更新
USB 接続された HDD をパススルーディスクと認識させるのは依然として無理なようですが、その代りに仮想ハードディスクを作成し、それを追加ドライブとして Hyper-V のゲスト OS に認識させることは可能ですので、ここにその方法を記述します。

1. ゲスト OS が起動中の場合は終了させます。外付け HDD はホスト OS からアクセス可能な状態にしておきます。
 Hyper-V マネージャの当該ゲスト OS の設定画面(ここでは Windows Server 2003)を開き、図のように新規の IDE コントローラにハードドライブを追加します。


 追加したハードドライブに仮想ハードディスクを割り当てます。“新規”ボタンを押すと、仮想ハードディスク作成ウィザードが表示されますので、指示に従って外付け HDD に仮想ハードディスク領域を割り当てます。

 “適用”ボタンを押し、変更を反映させます。

2. ゲスト OS を起動します。起動直後は、上記で追加した仮想ハードディスクは認識されない状態ですので、管理ツールから「コンピュータの管理」を起動し、「記憶域」配下の「ディスクの管理」を選択すると、以下のようにウィザードが表示されます。

 このウィザードは、追加された仮想ハードディスクをゲスト OS に認識させるためのディスク変換を行うためのものですので、指示に従ってディスク変換を行います。

3. ディスク変換直後はボリュームにドライブ名が付いていない状態ですので、変換したディスクを右クリックして、ボリュームドライブの割り当てとディスクフォーマットを行います。
 ドライブ割り当てとフォーマットが終了すると、以下のようになります。


 エクスプローラーで確認すると、この仮想ハードディスクが E: ドライブとして認識されていることがわかります。


 eSATA 接続された HDD についても、同様の方法で仮想ハードディスクを追加ドライブとして設定することができます。

(2010/04/27追記)
 同一の HDD に複数の vhd を事前に作成しておき、複数のゲスト OS に割り当てて認識させることも可能です。

2009-01-15

データベースの正規化

データベースの正規化、テーブル設計、ということはデータベース・アプリを開発したことがある者なら、一度はやったことがある筈。 まして、これを職業にしているならなおさら。

しかしいざ「正規化のやりかたを説明してみて」と問われると、ほとんどの開発者は困惑してしまうと思う。 文献や参考サイトをあたってみても、帯に短し襷に長し、である。
Wikipediaの正規化のページを見てると、

  • 第2正規形---あるリレーションが、第1正規形で、かつ、すべての非キー属性が、すべての候補キーに対して完全従属するとき、第2正規形 (second normal form; 2NF) であるという。つまり、第2正規形では、候補キーの一部に関数従属する非キー属性があってはならない。
とか書いてある。 これって日本語?

小社ではFileMaker というデータベース開発アプリケーションの講習を、主として初心者向けに時たま行っているが、正規化の話は避け、「同じ性質のデータをまとめて一つのテーブルにいれ、なるべく重複登録が起きないようにします」みたいに説明してきた。 「第一正規化とは…」とかやりだすと、受講生もこんがらがるし、こちらもこんがらがる。  しかし、「こんなことではいけない!」と改心し、モチベーションの高い受講者向けに正規化をできる限り噛み砕いて説明するため資料を作成してみた。 前述のWikipediaのような厳格な正規化の定義とはほど遠いが、実務上、なにかしかの役には立つのではなかろうか。
興味のある方→ こちら(PDF)こちら(Word)

以上

追記
上記の「同じ性質のデータをまとめて一つのテーブルにいれ、なるべく重複登録が起きないように」テーブルは設計する、というのはいい得て妙、だと思うんですが。


土屋

2009-01-13

セカンダリ DNS サーバを設定する

 弊社では内向き(LAN内からの参照用)と外向き(WANからの参照用)の二台の DNS サーバを運用していますが、今回外向き用 DNS サーバに対するセカンダリサーバを設置してみることにしました。

 今回使用したのは Windows Server 2008 の DNS サービスです。既存の DNS サーバは どちらもWindows Server 2000 Advanced で運用しています。

 今回成功したセカンダリ DNS サーバの設定方法は次のとおりです。
 
1. サーバーマネージャの役割から DNS サービスを追加します。
2. プライマリ DNS サーバ(外向き用)の localhost.dns および 0.0.127.in-addr.arpa.dns 以外のゾーンファイルを新しいサーバ側のゾーンファイルディレクトリにコピーします。
(ゾーンファイルは Windows Server 2000 は \WinNT\System32\dns 配下、Windows Server 2008 は /Windows/System32/dns 配下にあります。)
3. セカンダリ DNS サーバ側のゾーン追加で localhost をプライマリとして一旦登録します。
前方参照ゾーンを右クリックすると表示されるサブメニューから、「新しいゾーン...」を選択すると「新しいゾーンウィザード」が表示されますので、ここより[プライマリゾーン]を選択します。



 “次へ”をクリックして、「localhost」と入力します。これはセカンダリ DNS サーバ自身の参照を指します。



localhost のゾーンファイルを自動作成します。


“次へ”をクリックして、localhost ゾーン設定を一旦終了します。

4. 現在は localhost ゾーンはプライマリ DNS として動作するようになっているため、これをセカンダリ DNS に変更します。
localhost ゾーンを右クリックしてプロパティを開き、「全般タブ」のプライマリゾーンを以下のようにセカンダリに変更します。



次に、図のように参照先のマスタサーバ(プライマリDNSサーバ)のIP アドレスを指定します。

4. 残りのゾーンについても、一旦プライマリとして登録するという要領は localhost と同じですが、ゾーンファイルはすでにプライマリ DNS からコピーしてきたものがあるので、それを採用します。



この後にlocalhost ゾーンと同じように、セカンダリゾーンへの設定変更を行います。これと同じ操作を、前方参照ゾーン、逆引きゾーンの両方に対して行います。

ここまでがセカンダリ DNS のゾーン設定となります。

5. 次に、プライマリ DNS のゾーン転送設定を行います。これは、プライマリ DNS 側で DNS レコードの更新があった場合に、セカンダリ DNS 側にも通知を行ってゾーンの同期を行うためのものです。

 プライマリ DNS 側(今回は Windows Server 2000 Advanced)のゾーンを右クリックしてプロパティを開き、「ゾーンの転送」タブより、ゾーン転送を許可するサーバとして、今回新設した DNS サーバの IP アドレスを登録します。



 これと同じ操作を、前方参照ゾーン、逆引きゾーンの両方に対して行います。

6. 最後にゾーン転送の確認を行います。
新設したセカンダリ DNS サーバ(Windows Server 2008)側でゾーンの右クリックで表示されるサブメニューより、「マスタから転送」を選択すると、プライマリDNS からゾーン内容が転送されます。ゾーン転送が成功したかどうかは、イベントマネージャで確認できます。




補足:
メールサーバーを立てている場合は、逆引き設定をお忘れなく。これを忘れてしまうと、メール送信先のサーバで逆引きチェックが設定されている場合、送信したメールが弾かれてしまい、届かなくなってしまいます。