‘仮想化’ カテゴリーのアーカイブ

FreeNAS 0.7(ホストOS)でVirtualBox 3.1.2を動かそうという計画4(β版)

2010年2月16日 火曜日

スナップショットがまだ出来ていませんが、
仮想マシンや仮想ハードディスクの作成と削除など基本操作が
すべてWebGUIから操作できるようになりました。
本バージョンからβ版として配布します。
今のところWebGUIの言語は英語以外ありません。あしからず。

VirtualBox 3.1.2 OSE for FreeNAS 0.7(バイナリパッケージ)
http://www.peach.ne.jp/archives/freenas/test/vboxpkg-20100216.tar.gz

インストール/アップグレード:
パッケージをダウンロードして展開して、その中にある
vboxpkg-install.phpを実行してサーバを再起動するだけです。

以下は/mnt/data/vboxpkgにダウンロードする例:

# mkdir /mnt/data/vboxpkg
# cd /mnt/data/vboxpkg
# fetch http://www.peach.ne.jp/archives/freenas/test/vboxpkg-20100216.tar.gz
# tar xvf vboxpkg-20100216.tar.gz
# cd vboxpkg-20100216
# ./vboxpkg-install.php
# shutdown -r now

初期設定:
ユーザを一人作り、追加グループでvboxusersを指定します。
ホームディレクトリはFreeNASのリブートで消えない場所を必ず指定します。
また、そのユーザが使えるディレクトリを用意して、
仮想ハードディスクと仮想マシン設定ファイルを保存するように設定します。

以下は /mnt/data/VBox を利用する例:

# mkdir /mnt/data/VBox
# chown aoyama:admin /mnt/data/VBox
# chmod 755 /mnt/data/VBox

# mkdir /mnt/data/VBox/HardDisks
# chown aoyama:admin /mnt/data/VBox/HardDisks
# chmod 755 /mnt/data/VBox/HardDisks

# mkdir /mnt/data/VBox/Machines
# chown aoyama:admin /mnt/data/VBox/Machines
# chmod 755 /mnt/data/VBox/Machines

 
(クリックで拡大)

仮想マシンの作成と実行:
VMタブで作成、修正が、VM Controlタブから実行、停止ができます。

その他の操作やCLIの詳細については、
英語で書いてフォーラムに投稿したものを参照してください。
コマンドラインの書式は英語も日本語も同じですし。

このトピックを参照してください。(英語)
http://sourceforge.net/apps/phpbb/freenas/viewtopic.php?f=13&t=5466&start=10#p27388

現時点では非公式4967版以降、および公式4997版以降で利用できます。

FreeNAS 0.7.1 非公式5038版
http://shell.peach.ne.jp/aoyama/archives/857

物理ディスクをiSCSIターゲットに利用した場合の転送速度(参考用)

2009年12月23日 水曜日

FreeNASには7S-amd64版にアップデータを適用したものを利用しました。

7S-FreeNAS-amd64-LiveCD-0.7.1.4947.iso

FreeNAS 0.7用 iSCSIターゲット(istgt)アップデータ 20091222版

FreeNASのチューンは以下の3点です。

ZFSテスト用の/cf/boot/loader.confの追加設定

vm.kmem_size="3072M"
vfs.zfs.arc_min="1024M"
vfs.zfs.arc_max="1024M"

System|Advanced の Enable tuning of some kernel variables のチェック

System|Advanced|sysctl.confの値修正

net.inet.tcp.recvspace 393216
net.inet.tcp.sendspace 393216

テスト環境の主要構成パーツは以下の通りです。

FreeNAS 7S-amd64(4947):
M/B: ASUS M2A-VM (AMD 690G + SB600)
Mem: DDR2-800(PC6400) 2GB x 2
CPU: AMD X2 5200+ (2.7GHz, 2core)
Net: onboard Realtek 8111 (LAN management)
NIC: Intel PRO/1000 PT Server Adapter (OPT1 for iSCSI primary)
NIC: Intel PRO/1000 PT Server Adapter (OPT2 for iSCSI secondary)
HDD: Maxtor 4K080H4 (U100/80GB) (/mnt/data)
HDD: Western Digital WD5000AAKS (SATAII/500GB) (/dev/ad4)

ESXi4.0 Host:
M/B: MSI K9NGM3-FIH (nVidia GeForce7050PV + nForce 630a)
CPU: AMD X2 BE-2400 (2.4GHz, 2core)
Mem: DDR2-800(PC6400) 2GB x 2
Net: onboard nForce integrated (VMKernel for iSCSI primary)
NIC: Realtek 8169S (32bitPCI) (VM Network for LAN management)
USB: SILICON POWER Ultima II I-Series 2GB (ESXi boot device)
iSCSI: 120GB on FreeBSD 7.2 + UFS (temporary, iso images, etc)
iSCSI: 465GB on FreeNAS (/dev/ad4)

WS2008R2 Hyper-V Host:
M/B: GIGABYTE GA-G33-DS3R (Intel G33 + ICH9R)
CPU: Intel C2Q Q6600 (2.4GHz, 4core)
Mem: DDR2-800(PC6400) 2GB x 4
Net: onboard Realtek 8111 (for iSCSI secondary)
NIC: Intel PRO/1000 PT Desktop Adapter (for iSCSI primary)
NIC: Realtek 8169S (32bitPCI) (LAN management)
HDD: Western Digital WD5000ABYS (SATAII/500GB) (boot device)
iSCSI: 180GB on FreeBSD 7.1 + ZFS RAIDZ2 (main storage, VHD)
iSCSI: 120GB on FreeBSD 7.2 + UFS (backup, iso images, etc)

FreeNAS shell 上でのディスク情報

freenas:/mnt# diskinfo -t ad4
ad4
        512             # sectorsize
        500107862016    # mediasize in bytes (466G)
        976773168       # mediasize in sectors
        969021          # Cylinders according to firmware.
        16              # Heads according to firmware.
        63              # Sectors according to firmware.
        ad:WD-WCAPW3808248      # Disk ident.

Seek times:
        Full stroke:      250 iter in   8.933453 sec =   35.734 msec
        Half stroke:      250 iter in   5.990421 sec =   23.962 msec
        Quarter stroke:   500 iter in   9.154314 sec =   18.309 msec
        Short forward:    400 iter in   2.128259 sec =    5.321 msec
        Short backward:   400 iter in   2.014236 sec =    5.036 msec
        Seq outer:       2048 iter in   0.330524 sec =    0.161 msec
        Seq inner:       2048 iter in   0.330175 sec =    0.161 msec
Transfer rates:
        outside:       102400 kbytes in   1.222357 sec =    83773 kbytes/sec
        middle:        102400 kbytes in   1.394441 sec =    73434 kbytes/sec
        inside:        102400 kbytes in   2.501426 sec =    40937 kbytes/sec
 

FreeNAS -> WS2008R2 Host (direct)

FreeNAS -> ESXi4.0 VMFS -> WS2008R2 Guest

ESXiゲストでCrystalDiskMark 3.0beta2を実行した時のFreeNAS負荷
 

FreeNASの設定など各種
 
 
 
 
(クリックで拡大) (click to see large image)


 

ESXi上で実行した場合はおよそ、

Seq.Read 72MB/s CPU load 10%
Seq.Write 52MB/s CPU load 25%

ぐらいが期待できるようです。

FreeBSD 8.0 / 7-STABLE on Windows Server 2008 + Hyper-V

2009年11月26日 木曜日

以前の同様に初期化部分のパッチを作成しました。
現時点(2009/11/25)で、以下の版に対して動作確認済みです。

FreeBSD 8.0 RELEASE
FreeBSD 7 STABLE

また、2008R2 + Hyper-Vにて確認したところ、8.0RELは起動しませんでした。
7.2RELと7STABLEは起動するので利用できる模様。
起動しない8.0RELの詳細はまだ調べていません。

パッチファイル:fbs80-200911-hvpatch.bz2

パッチ済みカーネルの作成とインストール:

# cd /usr/src
# bzcat < /path/to/fbs80-200911-hvpatch.bz2 | patch -p1
# make buildkernel
# make installkernel
# shutdown -r now

パッチを当てたカーネルはLANカード(100BASE-TX)のDEC21140の
デバイス初期化をスキップするだけなので、
dump/restore で他の物理マシンに移動しても、
そのカードを利用していないならば修正しなくても問題なく動きます。

vmwp.exeの終了のしかた:
1.タスクマネージャを起動します。
2.プロセスタブを開きます。
3.表示(V)>列の選択(S)で「コマンドライン」のチェック入れて表示します。
4.イメージ名の部分をクリックしてソートします。
5.vmconnect.exeの後ろにホスト名、仮想マシン名、オプションと続くので、
停止したい仮想マシンのコマンドラインにあるGUIDを見つけます。
6.同じGUIDのvmwp.exeがありますので、右クリックして
「プロセスの終了(E)」を選択します。

 

(クリックで拡大)

FreeBSD 7.2がリリースされました

2009年5月5日 火曜日

現在FreeNASのビルド環境が7.2リリース待ちだった為に、amd64版の
nightly build作成が停止しています。
すでに連絡してあるので再公開までしばらくお待ちを。

iSCSIターゲットの容量が正しく認識されないという報告をもらっています。
不要なパーティションが存在する状態でRAWデバイスを公開すると、
Windowsが古い領域をそのまま誤認識するようです。
一旦UFSフォーマットをかけてからiSCSIデバイスとして利用してください。
もしくは予めMBRゼロフィルやローレベルフォーマット等を行ってください。

FreeBSD 7.2へのバイナリアップグレード方法:

アナウンス翻訳その他は他力本願ってことで:-)
以前の版(BETAやRCも含む)からアップグレードするにはカーネル自体の更新、
その他の更新の2ステップを行います。

まず更新データをネットから取り寄せます。

# freebsd-update upgrade -r 7.2-RELEASE

新しいカーネルのインストールを行い、再起動します。

# freebsd-update install
# shutdown -r now

ユーザランドのインストールを行い、再起動します。

# freebsd-update install
# shutdown -r now

再起動できたら、portsnap fetch などで portsシステムも更新します。

※実行前に必ずバックアップやスナップショットを作成しておきましょう。
※当然というか古い版からの更新であるほどインストールする量が増えるので、
作業には十分注意しましょう。

Hyper-V仮想マシンへのインストールに関して:

i386とamd64のいずれも以前書いた方法がそのまま使えます。
詳細はそちらを参考にしてください。

http://shell.peach.ne.jp/aoyama/archives/113

FreeBSD 6.4 / 7.1 / 8.0 on Windows Server 2008 + Hyper-V

2008年11月28日 金曜日

更新>FreeBSD8.0リリース版用のパッチはこちらから。

もうすぐFreeBSD6.4がリリースされます。
ちょっと横道だけどFreeBSDのSecurity Advisory(08:11)が出ています。

以前ちらっと書いたけど6.3が仮想環境にあまりよくないので、
しばらく様子見しようと思いましたが良い機会なので6.4を使ってみました。
ブートローダが新しくなったようですね。
Hyper-Vにもすんなりインストールできます。

Hyper-Vに対するパッチは以前書いたものが適用できます。
パッチファイル:fbs71-200809-hvpatch.bz2

パッチ済みカーネルの作成とインストール:

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

念のため興味のあるバージョンで試してみたところ、
少なくとも以下のバージョンでは利用できることを確認しました。

FreeBSD 6.4 RC2 i386
FreeBSD 7.1 BETA2 i386
FreeBSD 7.1 BETA2 amd64
FreeBSD 8.0 200811 amd64

パッチを当てたカーネルはLANカード(100BASE-TX)のDEC21140の
デバイス初期化をスキップするだけなので、
dump/restore で他の物理マシンに移動しても、
そのカードを利用していないならば修正しなくても問題なく動きます。

vmwp.exeの終了のしかた:
1.タスクマネージャを起動します。
2.プロセスタブを開きます。
3.表示(V)>列の選択(S)で「コマンドライン」のチェック入れて表示します。
4.イメージ名の部分をクリックしてソートします。
5.vmconnect.exeの後ろにホスト名、仮想マシン名、オプションと続くので、
停止したい仮想マシンのコマンドラインにあるGUIDを見つけます。
6.同じGUIDのvmwp.exeがありますので、右クリックして
「プロセスの終了(E)」を選択します。

 
(クリックで拡大)

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の終了のしかたはこちらの記事を参考にしてください。

システムの消費電力を調べてみる

2008年2月12日 火曜日

消費電力といえばワットチェッカーの出番ですな。
さっそくニューマシンで調べてみました。
主な構成は
Windows 2000 Server SP4 + CrystalCPUID
MSI K9NGM3-FIH
Athlon X2 BE-2400 (2.3GHz/11.5x/1.200V)
UMAX Castor LoDDR2-2GB-800-R1 x2(=4GB)
Seagate ST336706LW (U160/36.7GB)
WD SE16 5000AAKS (SATAII/500GB)
ID-1219/500Wから抜き取った電源

電源投入~SCSIカード初期化前 > ~95W程度で遷移
SCSIドライブ起動 > 122W程度まで上昇して106W程度に降下
OS起動後アイドル状態 > 88W
SuperPIを2個起動(以下同様) > 116W

クロック倍率&電圧変更
11.5x/1.075V(2.3GHz) > 107W
10.0x/1.025V(2.0GHz) > 101W
 8.0x/0.975V(1.6GHz) > 93W
 6.0x/0.925V(1.2GHz) > 87W
 5.0x/0.900V(1.0GHz) > 84W

ここまでやると、SCSIドライブがとんでもなく電気食べているのがわかります。
高々1万回転36GBでこれはあんまりだな;;
スペックシートだと12.4Wって書いてあるw

SCSIパーティションをAAKS側にコピーして切り離して起動してみると、
アイドル72W、5.0x/0.900Vで62W、SuperPI起動で70W
14Wも下がった・・・。変更前の116Wから46W(40%)の削減。
東京電力によると22.31円/kWhなので、
365日24時間CPU使用率100で起動していると仮定すると、
0.046×24x365×22.31=年間8990円の節約になりますな。
5.0xアイドル62W~5.0×100%70Wだと、年間12117~13680円、
月額でおよそ1010円~1140円のコストになる。

以上を踏まえて、CrystalCPUIDに設定してみた。

 be2400a.jpgbe2400b.jpg
(クリックで拡大)

他のマシンはどうなのだろうかと気になるので調べてみた。
ns1(Celron 1GHz 180nm) > 48W
ns2(Winchip2 200MHz 350nm) > 36W
ns4(P3 1GHz 180nm) > 59W
いずれもFreeBSD起動後ログインプロンプト出た後、shellはちょっと怖いから止められなかった(汗)
これをみると、Athlon 64 X2を低クロック低電圧で使うなら
デュアル動作できるからかなりお得ですね。

AMD-Vを使いたい(後編)

2008年2月10日 日曜日

VirtualPC2007でFreeBSD6.3が起動したらそれでOKかと言うとそうでもなく、やはり既存の仮想マシンを複数動かしてみたいと思うわけでやってみたら。。。。

時間がずれる(笑)AMD DualCoreだとIntelと違ってTSCが相当ずれているかもしれない。で、ちょこっと考えたけど、ずれるなら最初から使わなければいいって結論に(ぉぃ

/boot/loader.conf:
kern.hz=100

/etc/sysctl.conf:
kern.timecounter.hardware=i8254

この設定で動かしています。

さて、そうなると今度はCPUクロックを固定する理由がなくなるので、変更してみたくなる。とりあえずCrystalCPUIDを使ってみる。すると、Athlonはクロック倍率いっぱい(BE-2400だと5.0~11.5まで)選べるのだね。初めて知りました。しかも電圧もかなり広範囲に設定できる。余談になるが、このソフトは修正版BSDライセンスなので非常に嬉しい。すばらしいソフトを公開している作者様に感謝します。今後の活動に期待!

BEシリーズは低電力がうりなので電圧はどのあたりまで行けるのだろうかと試しにやって見る。。。BIOSは1.20Vになっていますな。ちょこっとずづ下げると1.00Vでも動くではないか。(一般的に半導体の寿命は熱に依存しているので消費電力が低くなって発熱が抑えられるのはすごい利点がある。)調子にのってさらに下げたらハングアップした。当然のことです^^;

その後、memtest, StressPrime2004, SuperPI などを動かして確認したところ1.025Vあたりで動くようです。技術の進歩はすごいなぁ。