2008年10月 のアーカイブ

K9NGM3-FIH V2.3 + WD10EACS-D6B0 の消費電力

2008年10月23日 木曜日

先のiSCSIの実験により高速CPUならGbEを生かせるようなので、
WD5000AAKS(166GBプラッタ3枚)によるRAIDを解体することにしました。
その移動先として一時的に保管しなくてはいけないので、
新規にWD10EACS-D6B0を購入してみました。
なんでも1TB(333GBプラッタ3枚)で5400回転で省電力らしい。
合わせてSCSIカードなどを他PCに移動することにして、
SATAのみに構成しました。

Windows 2000 Server SP4 + CrystalCPUID
MSI K9NGM3-FIH (BIOS V2.1)
Athlon X2 BE-2400 (2.3GHz/11.5x/1.200V)
UMAX Castor LoDDR2-2GB-800-R1 x2(=4GB)
SATA1 Western Digital WD10EACS-D6B0
SATA4 LG電子 GSA-H62N
FDD 1台(メーカー失念)
ID-1219/500Wから抜き取った電源
(SATA HDDの収容ケースとしてEG-RM410ABKを1個利用)

この構成で試してみると、
初期BIOSのV2.1ではHDDの起動前に認識しに行くらしく、
初回電源投入時にWD10EACS-D6B0を見失います。
一回リセットすれば二回目以降は電源を切るまで大丈夫です。
BIOSをV2.3にアップデートしたところ、直った模様?です。
もしもBIOSアップデートが難しいor怖いなら、
時間を稼ぐためにAdvanced BIOS Featuresの中にある
QuickBootをDisabledにすれば、初回起動でも認識されました。

Windowsの起動が終ってHDDのアクセスが終ると、
ワットチェッカーで47W(5.0x/0.925V時)でした。
SCSIカードを外した事もあって15W下がった。

外したAAKSはX2 5200+に接続してiSCSI実験用になる予定。
(現在環境整備中)

FreeBSD 7.1 + iscsi-target / Windows 2000 + Microsoft iSCSI Initiator

2008年10月11日 土曜日

仮想マシン関係が一段落したので、
今度はiSCSIについて少し確認してみました。

用意するもの:
FreeBSD と iscsi-target (portsなのでFreeBSDのバージョンは重要ではない)
FreeBSD 7.0以降または Windows と Microsoft iSCSI Initiator (2008やVistaは不要)

ターゲット側:
Portsを最新にして /usr/ports/net/iscsi-target からインストールします。
ターゲット側はFreeBSD6.2などでも作成することは可能です。
VirtualPCの中のFreeBSDなどにも作成できますが速度はお察しください。
(当方の仮想マシン環境だと10MB/s程度のようです)

# portsnap fetch update
# portinstall iscsi-target
または
# cd /usr/ports/net/iscsi-target
# make; make install

以下のような設定をします。
(例では/usr/iscsiというディレクトリに10GBのファイルを作成します)

/usr/local/etc/iscsi/targets

# extents       file                    start   length
extent0         /usr/iscsi/iscsi-target0        0       10GB                      

# target        flags   storage         netmask
target1         rw      extent0         192.168.2.0/24

/etc/rc.conf

iscsi_target_enable="YES"

設定ができたら起動します。

# /usr/local/etc/rc.d/iscsi_target start

あとは他のソフト同様にstop restartなどできます。

イニシエータ側(FreeBSD):
FreeBSDの場合は7.0以降が必要です。

標準カーネルにはiSCSIイニシエータが組み込まれていないので、
カーネルモジュールを kldload で読み込みます。
それから iscontrol を使って探索、接続します。

# kldload iscsi_initiator
# iscontrol -dt 192.168.2.99
TargetName=iqn.1994-04.org.netbsd.iscsi-target:target1
TargetAddress=192.168.2.99:3260,1

見つけたものから必要な TargetName TargetAddress の行を
/etc/iscsi.conf に書き加え、ニックネームを作成します。
最低この2個で接続できますが、オプションがいくつかあります。
詳細はマニュアル参照(man iscsi.conf)してください。
(例では myiscsi というニックネームにしています)

/etc/iscsi.conf

myiscsi {
 TargetName=iqn.1994-04.org.netbsd.iscsi-target:target1
 TargetAddress=192.168.2.99:3260,1
}

できたらそのニックネームを使って接続します。

# iscontrol -n myiscsi

接続すると /dev/da0 というデバイスが作成されます。
(そのシステムにda0が存在すればda1という風に番号が増えます)
何ができたかは以下のようなコマンドで確認できるでしょう。

# tail /var/log/messages

作成できたら内蔵のハードディスクと同じですから、
スライスを作成してnewfsを実行します。
(よくわからない人は sysinstall を起動して、
Configureの中にあるFdiskとLabelを実行します)
作成したら、適当な位置にマウントします。

# mkdir /iscsi
# mount /dev/da0s1d /iscsi

切断する場合は、まず umount コマンドを実行します。

# umount /iscsi

その後に iscontrol にHUPシグナルを送ります。
kill コマンドでプロセスIDを指定するか killall コマンドを使います。

# ps axww | grep myiscsi
 1064  ??  Is     0:00.00 iscontrol -n myiscsi
 1109  p0  RL+    0:00.00 grep myiscsi
# kill -HUP 1064
または
# killall -HUP iscontrol

起動と同時にiSCSIを利用したい場合は、
この手順をスクリプトに書く必要があります。
ちょっと面倒ですが・・・。
私は実験用にこんな感じのスクリプトを書きました。

実験用スクリプトファイル

/etc/rc.d/iscsi として置いて chown 0:0 および chmod 555 とする。
/etc/rc.conf に iscsi_enable=”YES” を追加する。

このスクリプトの前提としてiSCSIターゲットは一個しか使わない。
/etc/iscsi.fstab というファイルを /etc/fstab と同じ書式で作成しておく。
ちょっと仕組みがあれなのであくまで参考ということで。

イニシエータ側(Windows):
Server 2008からは標準搭載ですが、
2003やXP、2000では追加のソフトが必要です。
英語版のものがMSからダウンロードできます。
2000の場合は32ビット版の Initiator-2.07-build3640-x86fre.exe を
ダウンロードしてインストールします。

Microsoft iSCSI Initiator はこちらから。
http://www.microsoft.com/downloads/details.aspx?familyid=12cb3c1a-15d6-4585-b385-befd1319f825&displaylang=en

Microsoft iSCSI Initiator を起動して、
Discovery タブ内の TargetPortals にある Addボタン を押して、
iscsi-target を入れた FreeBSD のIPか名前を入れます。
Port番号は標準の3260のままです。
追加するとTagets タブにiSCSIターゲットが見えるようになります。
iqn.から始まる長い名前がターゲット名です。

iscsi1.jpg iscsi0.jpg
(クリックで拡大します)

設定したiSCSIターゲットに Log On で接続します。
切断する場合は Details でセッションにチェックをいれて、Log off を押します。

接続するとハードディスクとして作成されるので、
ディスクの管理からパーティション作成とフォーマットを行います。
サーバの場合はダイナミックディスクにしてRAID構成のディスクとしても使えます。
ここでRAIDにする理由があるかはわかりませんが・・・。

HDBENCHで見るとこんな感じでした。
どっちも書き込みがあまり性能よくない。
別の2GHzのWindowsからX2の方に試すと、
Read 60MB/sでほぼ変わらず、Write 30MB/s程度は出るようです。
やはりWindows側の性能が低いとCPU使い切ってどうにもならない。
それでも850MHzという低速マシンでもギガビットのネットワークカードがあれば、
いろいろ試せそうです。

iscsi2.jpg
(クリックで拡大します)

利用した機材の主な仕様は以下の通り。

FreeBSD 7.1 PRERELEASE + iscsi-target (netbsd-iscsi-20080207)
P3-1GHz (133×7.5) / メモリ 768MB / VIA Apollo Pro 133A
HighPoint HPT370 UDMA100 Card
Hitachi HDP725050GLAT80 500GB 7200回転 250GB/プラッタ
    最大転送速度 1138Mb/s (142.2MB/s)
Intel PRO/1000 T Server Adapter (82543)

FreeBSD 7.1 PRERELEASE + iscsi-target (netbsd-iscsi-20080207)
Athlon 64 X2 5200+(2.7GHz) / メモリ 4GB / AMD 690G
オンボードSATA (3Gbps)
Hitachi HDT725050VLA360 500GB 7200回転 167GB/プラッタ
    最大転送速度 998Mb/s (124.8MB/s)
Intel PRO/1000 PT Desktop Adapter (82572)

Windows 2000 SP4 + Microsoft iSCSI Initiator 2.07
P3-850MHz (100×8.5) / メモリ 384MB / Intel 440BX
オンボードIDE (UDMA33)
Western Digital WD450AA 45GB 5400回転 15GB/プラッタ
    最大転送速度 300Mb/s (37.5MB/s)
Planex GN-1200TW2 (Realtek 8169SC)

追記:
P3ではGbEの性能を生かせないので高速なマシンでテストしました。
ターゲットはX2のみ。ソフトはCrystalDiskMark2.2を利用しました。

Windows Server 2008 64bit版
Core 2 Quad Q6600 (2.4GHz) / メモリ8GB / Intel G33
オンボードSATA (3Gbps)
Hitachi HDP725050GLA360 500GB 7200回転 250GB/プラッタ
    最大転送速度 1138Mb/s (142.2MB/s)
オンボードLAN (Realtek 8111B)

iscsi3.jpg 
(クリックで拡大)

さて、上の結果を見てやっと理解できました。
ファイルベースのベンチマークは意味がない(汗)
ターゲットとして10GBのディスクを作成したけれども、
メモリが4GBあるので遅延キャッシュとして利用されている・・・。
よって少なくとも4GB以上のファイルを読み書き対象にしないと
物理ディスクアクセスがない状態だったと。
(書き込みの場合はイニシエータ側の8GB以上?)
いままでの結果はネットワークとキャッシュの往復時間だったはず。
そこで、物理読み書きするソフトがないかと探してみたら、
HD Tuneが読み込みをするようなので試してみた。

iscsi4.jpg
(クリックで拡大)

これを見るとFreeBSD上でキャッシュに読み込み中でも40MB/sを出すようです。
70MB/sを出している部分は言うまでもなく読み込みキャッシュに乗っている部分です。

FreeBSD 7.1 on Hyper-V Server

2008年10月5日 日曜日

HVSコンソール上では大変になりそうだったので、
XP SP3上のVirtualPC2007にWS2008評価版(x86)を導入して、
MMCスナップインで作業しました。
コンソール自体にはRemote DesktopをEnabledにすると、
XPに付属の「リモート デスクトップ接続」で接続できます。

Windows Server 2008 評価版はこちらから。
http://www.microsoft.com/japan/windowsserver2008/trial-software.mspx

Hyper-V Server はこちらから。
http://www.microsoft.com/servers/hyper-v-server/default.mspx

用意するもの:
Hyper-Vが動くCPU搭載のパソコン
(特殊なドライバなしでWS2008が動作するものが良い)
Hyper-V Server
リモート管理用パソコン(WS2008またはVista)

主な作業の流れ:
HVSをDVDに焼いて物理サーバにインストールする。
(Windows Server 2008のコアインストール同様)

無事インストールが終るとログイン画面になるので、
ユーザ名 Administrator
パスワードなし
でログインして初期パスワードを設定します。

コンソールにログインすると、
Hyper-V Configuration Toolとコマンドプロンプトが出ます。
ここでホスト名、ドメイン、ネットワーク設定を行います。
Download and Install Updateから最新にします。

新規のコマンドプロンプトを出すには、
Ctrl+Alt+DelでTask Managerを起動して、
[New Task]ボタンなどからできます。

Hyper-V Configuration Toolを再度呼び出すには、
コマンドプロンプトからhvconfigで呼び出せます。

リモートから接続するにはRemote DesktopをEnabled(有効)にします。

Hyper-Vをリモート管理するにはそのままだと
ファイアウォールに阻止されてなにもできないので、
以下のコマンドをリモートデスクトップでコマンドプロンプトに貼り付けて実行する。

netsh advfirewall set currentprofile settings remotemanagement enable
netsh advfirewall firewall set rule group="Remote Administration" new enable=yes
netsh advfirewall firewall set rule group="Windows Management Instrumentation (WMI)" new enable=yes
netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=yes

WS2008から仮想マシンを移動する場合は、
作業用フォルダを作成して共有する。

mkdir C:\work
net share work=C:\work

サーバ側の作業はほぼ上記の通り、
ここからクライアント側(管理マシン)から作業する。

ファイル名を指定して実行からmmcを起動させる。
ファイル>スナップインの追加と削除から、
 セキュリティが強化された Windows ファイアウォール
 共有フォルダ
をそれぞれ Hyper-V Serverの名前かIPアドレスで指定して追加する。
追加できたら保存しておく。デフォルトでは、
すべてのプログラム>管理ツールの中に保存される。

MMCの共有フォルダの共有からworkに共有アクセス許可を与える。
必要であればwork内に既存のVHDファイルをコピーしたりする。

Hyper-V マネージャのサーバに接続から
別のコンピュータにHyper-V Serverの名前かIPアドレスを入れて接続する。
後はWindows Server 2008同様に仮想マシンを作成して実行する。

実際にWS2008で稼動しているFreeBSD7.1をコピーして、
VirtualPC内のWS2008評価版でHyper-V Serverに作成した物がこれ。

hvonvpc.jpg
(クリックで拡大)

注意:
ここで書いた作業はファイアウォールのスコープを意識していないので、
そのまま外に出すマシンでやると危険です。
管理できるネットワークを限定したりするべき。

追記:
この文章の下書きを書いた時点では英語版のみでしたが、
現在は日本語版もダウンロードできるようになっています。

FreeBSD 7.1 on Windows Server 2008 + Hyper-V

2008年10月3日 金曜日

G33/C2Q6600 と 690G/Athlon64 X2 5200+ の構成で、
ちょこっと触ってみたけど、FreeBSDを再起動できないな;;
そのままだと仮想マシンが停止してしまう。
そこで触らぬ神にたたりなし?ってわけでPCIアドレスレジスタを
いじらないようにする怪しげなパッチを作成してみた。

diff -aur src-orig/sys/dev/pci/pci.c src/sys/dev/pci/pci.c
--- src-orig/sys/dev/pci/pci.c 2008-08-23 12:40:49.000000000 +0900
+++ src/sys/dev/pci/pci.c 2008-10-02 23:53:03.000000000 +0900
@@ -3590,6 +3590,11 @@
  struct pci_devinfo *dinfo = device_get_ivars(child);
  pcicfgregs *cfg = &dinfo->cfg;
 
+ /* 0x1011: DEC, 0x0009: 21140, 0x10: PCIR_BARS, 0x28: PCIR_CIS */
+ if (dinfo->cfg.vendor == 0x1011 && dinfo->cfg.device == 0x0009)
+  if (reg >= 0x10 && reg < 0x28)
+   return;
+
  PCIB_WRITE_CONFIG(device_get_parent(dev),
      cfg->bus, cfg->slot, cfg->func, reg, val, width);
 }

用意するもの:
Hyper-Vが動くCPU搭載のパソコン
Windows Server 2008 64ビット版
FreeBSDイメージ 7.1-PRERELEASE-200809-i386-disc1.iso など
パッチファイル fbs71-200809-hvpatch.bz2

FreeBSDは以下からダウンロードしておく。
ftp://ftp.freebsd.org/pub/FreeBSD/snapshots/200809/

Windows Server 2008 をインストールして、
Windows Update をかけて最新にする。
サーバーマネージャの役割から Hyper-V を追加する。
Hyper-V マネージャから仮想マシンを作成する。
仮想マシンの設定を開いてネットワーク アダプタを削除する。
ハードウェアの追加からレガシ ネットワーク アダプタを追加する。
お好みでプロセッサ数やメモリを変更する。

FreeBSD を仮想マシンにインストールする。
パッチを適用してカーネルを更新する。

# cd /usr/src
# bzcat < /path/to/fbs71-200809-hv.patch.bz2 | patch -p1
# make buildkernel
# make installkernel
# shutdown -r now

初回カーネルを更新するまで再起動で停止してしまうので、
タスクマネージャのプロセスのタブからvmwp.exeを見つけて終了させる。

おまけ:
Windows2000もHyper-Vで動くようだけど、
ネットワークを触りにいったとたんに反応なくなります…。
フリーズしたまま5分ほど放置すると何事もなかったように動きます(汗)
以後、仮想マシンを再起動するまでは平気な模様。
Server 2003、2008、XPでは起こらないので2000固有の問題かと。
(Vistaは未確認)

追記:
vmwp.exeの終了のしかたはこちらの記事を参考にしてください。