‘Hyper-V’ タグのついている投稿

物理ディスクを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/ZFSでPB(ペタバイト)ファイルをiSCSIに使ってHyper-Vで利用してみる

2008年12月22日 月曜日

PBとはなんぞと言うとただの単位です。
1PB=1024TBとテラバイトのひとつ上の単位です。
当然というか現時点でそんなアレイはそうそうないので、
スパースファイル(穴あきファイル)を使います。
さらにZFS圧縮をオンにして急激にデータが増えた場合に死に難くしました。

# zfs create -o atime=off -o compression=on tank/iscsiz
# zfs create -o atime=off -o compression=gzip-9 tank/iscsiz9

# extents       file                            start   length
extent0         /tank/iscsiz/istgt-test-2PB-1MB 0       2147483647MB
extent1         /tank/iscsiz9/istgt-test-1EB    0       1EB
extent2         /tank/iscsiz9/istgt-test-1PB    0       1PB
extent3         /tank/iscsiz9/istgt-test-2PB    0       2PB
extent4         /tank/iscsiz9/istgt-test-256PB  0       256PB
extent5         /tank/iscsiz9/istgt-test-2TB    0       2TB
extent6         /tank/iscsiz9/istgt-test-200GB  0       200GB
#

今回はターゲットの設定を上記のように行い、
WS2008(64ビット版)に持ってきました。

ディスクの初期化では必ずGPTを指定します。
そうしないと2TB止まりなので。
パーティションを作成するのですが、GUIの作成ウィザードが
MB単位で要求してくるからGB以上の計算をするのがめんどくさい。
今は単一ユニットで1TBの時代だから、
そろそろGB単位で指定してもよいのではとか思ったり。
続いてNTFSフォーマットですが、
アロケーションユニットを64Kに明示しないと失敗します。

Windows Server 2008 64ビット版で作成できるNTFS最大サイズは268435455MBです。
これは256TB(=268435456MB)-1MBですね。
試してみると2PB以上はあきらかに表示がおかしい。
よくよく見てみると、MB単位の表示部分が符号付き32ビットじゃないのだろうか(汗)

  

現状だとこうなる↓
GUI上の最大ディスクサイズ 2147483647MB (=2PB-1MB)
NTFS最大サイズ 268435455MB (=256TB-1MB)

#数値の計算はFreeBSD上でbcを使って行いました

さて、256TB-1MBをクイックフォーマットしたらすぐに戻ってこない。
さすがにかなり時間かかるものなのね。
接続して認識するまでだけでもデバッグログが4GB超えちゃう(汗汗)
メモリ8GBとかぜんぜん足りないいいいいいいっ。
正常マウントするのに約1分かかります。
2PBに比べたら2TBのディスクとかはかわいいものですね(笑)

さらにHyper-V用に1024GBの仮想イメージを作成する。
容量固定1TBを作成しました。
作成時間はおよそ6時間ぐらい。
スループットにして3GB/min, 50MB/secぐらいか。

作成した時の環境は
FreeBSD 7.1(2008/12/14に取得) ZFS 圧縮ON、
データ・ヘッダダイジェスト共に有効、
2本のMCSラウンドロビン接続(+管理用1本の計3系統)
(それぞれのLANにNETGEAR GS116を配備)
この時のCPU使用率はだいたい15~20%ぐらい。

  

作成できたらHyper-Vに設定してFreeBSD 7.1 RC1 amd64を導入します。
DHCPが・・・というコメントを頂いたので、
今回はDHCPでセットアップしてみました。

Hyper-Vマネージャでレガシーネットワークアダプタを追加して、
上記で作成した仮想HDDを追加して、仮想マシンを起動!
FreeBSDのネットワークの設定ではExtra Options to ifconfigの欄に
media 100baseTX mediaopt full-duplex
といれます。

インストール後のリセットで停止するのでタスクマネージャから終了させて、
自作パッチを適用する。
(このあたりの手順については以前の投稿1投稿2をご覧くださいな)

FreeBSDに限って言えばVirtualServerやVirtualPCと比べるとHyper-Vの方が
だいぶ安定している感じがします。
というかVirtualServerがダメダメすぎる。
個人的印象は Hyper-V > VirtualPC >>> VirtualServer

インストールが終わったら、portsnap fecth/extractで最新portsにして
mgとかbashとかちょこっと入れてみた。
他にもいろいろやっていたらiscsi-targetが死んでしまった(汗)
ああっ、バグありますね。はい。ごめんなさいZzz。

[root@pb ~]# uname -a
FreeBSD pb.peach.ne.jp.private 7.1-RC1 FreeBSD 7.1-RC1 #0: Mon Dec 22 19:10:59 J
ST 2008     root@pb.peach.ne.jp.private:/usr/obj/usr/src/sys/GENERIC  amd64
[root@pb ~]# ifconfig -a
de0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 00:15:5d:02:21:1f
        inet 192.168.2.166 netmask 0xffffff00 broadcast 192.168.2.255
        media: Ethernet 100baseTX <full-duplex>
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
[root@pb ~]# df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ad0s1a    989M    412M    498M    45%    /
devfs          1.0K    1.0K      0B   100%    /dev
/dev/ad0s1e    989M    1.7M    908M     0%    /tmp
/dev/ad0s1f     19G    1.9G     16G    11%    /usr
/dev/ad0s1g    959G     58M    882G     0%    /usr/local
/dev/ad0s1d    7.7G     76M    7.1G     1%    /var
[root@pb ~]#

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