‘Windows’ カテゴリーのアーカイブ

FreeBSD 7.3/8.1 on Windows Server 2008 + Hyper-V

2010年7月8日 木曜日

すでに賞味期限切れですが公開しておきます。
このバージョンはFreeNAS 0.7.1(7S) および 0.7.2 に搭載されているものです。
Windows Server 2008 R2 ではこれがなくても動くようになっているはずです。

for FreeBSD 7.3 or later
パッチファイル:fbs73-hv-20100528.patch.gz

for FreeBSD 8.1 or later
パッチファイル:fbs81-hv-20100528.patch.gz

パッチ済みカーネルの作成とインストール(8.1の実行例):
# cd /usr/src
# gzcat < /path/to/fbs81-hv-20100528.patch.gz | patch -p1
# make buildkernel
# make installkernel
# shutdown -r now

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

 
(クリックで拡大)

Windows 7 環境がかなり使えるようになってきた

2010年6月4日 金曜日

Windows XP SP3 + Office 2003 + Virtul PC 2007 + VirtualBox 3.1.6

Windows 7 (x64) + CT Desktop (iSCSI起動) + Windows Live Mail
 + Office 2010 + Windows Virtual PC (XP mode) + VirtualBox 3.2.0

こんな感じに移動しました。UIの変更が大きいのでまだ戸惑いが隠せない。
TeraTerm(SSH) と VNC viewer と vSphere Client が使えるならば、
どうにでもなるとも言える。

Windows 7 で困った事?
iSCSIのマルチパスができないのは仕様ですが、MCSで接続しようと思っても
ブートドライブは起動したNICのルートでしか構成できないような気がする。
なおデータドライブについてはMCSで問題なく利用できます。

※サーバ系OS (Server 2008 R2 など) であればMPIOをインストールして複数
パスをまとめられるので、このような問題は出ません。

さて、今回はiSCSI起動をやってみたいけど、購入前に実機で動くか動作確認
したい人向けに評価版へのリンクを置いておきます。
Intel Gigabit CT Desktop Adaptor (実売価格3,500円程度) と 40GB以上の
iSCSIターゲットを FreeNAS や FreeBSD + istgt に用意すれば既存環境を
壊す事なく評価できます。

Windows 7 Enterprise 評価版
http://technet.microsoft.com/ja-jp/evalcenter/cc442495.aspx
Microsoft Office Professional Plus 2010 評価版
http://technet.microsoft.com/ja-jp/evalcenter/ee390818.aspx

補足:
初めてiSCSI起動に挑戦する場合は、既存の内蔵ハードディスクの接続をすべて
外してOSのインストールを行う事をお勧めします。
既存OSとのデュアルブートをするには、インストール後にブートマネージャを
iSCSIドライブに導入します。導入後にハードディスクの接続を戻し、起動順序を
iSCSIドライブが最初になるようにBIOS設定を調整します。
今回の移行では64GBのターゲットとMBMというソフトを利用しています。
http://elm-chan.org/fsw/mbm/mbm.html

Windows7にデータ移行Now?

2010年5月31日 月曜日

とりあえず初期アプリのインストール作業が終わったので、
XPからメールデータ(約5GB)をWin7(iSCSIターゲット)にインポートしています。
が、予想以上にインポート速度が遅い・・・。
ある程度の時間がかかるのは想定していたけれど、結構つらい。

この後にはVirtualPCとVirtualBoxで使っている仮想ハードディスクイメージの
移動も控えてるので完了するのは当分先になりそうです。

というわけで作業はあまりできないので、
今回はXPモードで使うファイルをインストールした時のメモを残しておきます。

Windows XP Mode のダウンロード
http://www.microsoft.com/japan/windows/virtual-pc/download.aspx

ここから取得するらしいです。
XPモードを使うかどうかは別にして導入してみました。

ちなみに既存のVirtualPCの設定ファイルの .vmc をダブルクリックすると、
仮想マシンの項目に .vmcx ファイルが作成されて編集できるようになります。
もとのvmcを編集してしまうとVirtualPCで動かなくなるかもしれないから、
念の為にコピーして保存しておいたほうがいいでしょう。

※バックアップを取るのは基本中の基本ですよ。

Windows7をistgtで作成したiSCSIターゲットに直接インストールする

2010年5月25日 火曜日

先日の結果からIntelのCTデスクトップアダプタでもWS2008がiSCSI起動可能
であることが実証できたので今度はWindows7をインストールしてみました。
今回は20100522版のターゲットを使って検証しました。
利用したターゲットの主な設定は以下の通り。

[Global]
  MaxSessions 16
  MaxConnections 4
  MaxR2T 256
  MaxOutstandingR2T 16
  DefaultTime2Wait 2
  DefaultTime2Retain 60
  FirstBurstLength 262144
  MaxBurstLength 1048576
  MaxRecvDataSegmentLength 262144

[LogicalUnit80]
  TargetName “iqn.2007-09.jp.ne.peach:artemis-boot”
  Mapping PortalGroup1 InitiatorGroup80
  AuthMethod Auto
  UseDigest Auto
  UnitType Disk
  QueueDepth 64
  LUN0 Storage /tank/isboot/artemis-boot 64GB

結論から言うと、インストールできません。(すみません・・・
追加したR2Tの処理にバグがありました。
TL>FB+MBの特殊な条件下で追加のR2Tを送信しないため、データ受信待ちが
タイムアウトしてしまいます。<再処理になりますが同じ場所で同様に略
不幸中の幸い?(皮肉にも?)、タイムアウトのエラー処理が正しく実行できる
と言う事が実証できたわけですが。

とりあえずの修正は以下のようにすると動きます。

Index: src/istgt_iscsi.c
===================================================================
--- src/istgt_iscsi.c   (revision 36)
+++ src/istgt_iscsi.c   (working copy)
@@ -4016,6 +4016,10 @@
                                ISTGT_WARNLOG("pending_pdus > 0\n");
                        }
                        if (offset < transfer_len) {
+                               if (offset >= (first_burst_len + max_burst_len)) {
+                                       /* need more data */
+                                       r2t_flag = 0;
+                               }
                                len = DMIN32(max_burst_len,
                                    (transfer_len - offset));
                                memset(&data_pdu.bhs, 0, ISCSI_BHS_LEN);

ベンチマークの結果は以下の通りで、ほぼ期待通りのピーク性能が検証できました。

 
(20100522+パッチとW7による性能)


(参考:旧版とWS2008R2の値)

というわけで、今後の事もあるので、作業用マシンをXPからW7に移行しようと思いました。

Intel Gigabit CT Desktop Adapter は iSCSI Remote Boot でサポートされている

2010年5月3日 月曜日

システムワークスさんのページに書かれていた一言にびっくりしました。

製品情報およびiSCSI Remote Bootサポート製品はこちらから
http://www.intel.com/products/desktop/adapters/gigabit-ct/gigabit-ct-overview.htm
http://www.intel.com/support/network/adapter/pro100/sb/CS-028681.htm

私は PT Server Adapter で満足していたので CT Desktop Adapter には
まったく興味がなかったのですがiSCSIブートできるとなれば話は別です^^;

さっそく Intel CT Desktop Adapter を購入して確認してみました。
ファームはインテルのサイトから15.2版をダウンロードして書き込みました。
iSCSIファームバージョンは2.5.12でした。

起動試験はFreeNASの確認に使っている NEC Express5800/110Ge
(GIGABYTE GA-5YASV-RH)、ASUS P5K、ASUS M2A-VM、MSI K9NGM3-FIH
の4台で行いました。

OSはWindows Server 2008 R2を利用しました。
iSCSIターゲットはいつものistgt 20100407 on FreeBSD 7.3(ZFS/RAIDZ2)に
40GBの領域をQueueDepth 64で作成しました。

M2A-VM はオプションROMのBIOSが起動しませんでした。
これに限らず、マザーによっては拡張カード上にあるRAID BIOSなどが
起動しない事はありますのでご注意ください。

以下にP5Kの時のスクリーンショットを掲載します。

 
(クリックで拡大)

うおー、予想以上に早いですね。
むしろシーケンシャル書き込みが遅いistgtの欠点がばればれではないか・・・。
理由はおそらくコマンド(と書き込みデータ先頭64KB)のキューイングは行うけど、
後続データのキューイングは現時点ではできないせいです。

私自身がリード>ライトな使い方が多い上にシーケンシャル書き込みを
それほど必要としていないのであまり気にしていなかったけど、
CT Desktop Adapterで使えるとなると改善したほうが良いですよね。きっと。

補足:
試験に使ったZFSプールは以下のように80%超の利用率であるので、
新品の場合はもっと速度が出ると推測されます。

[root@hera ~]# zpool list
NAME   SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
tank  2.73T  2.30T   435G    84%  ONLINE  -

物理ディスクを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 iscsi-target MCS/64bitLBA/仮想DVD/仮想テープパッチ 2009/1/25版 for Microsoft iSCSI Initiator

2009年1月25日 日曜日

新リリース>istgt version 0.1 (20090222)

高速化の構想がちっとも進まないので気分転換にWindows7を入れてみようと思った!
でもWindows7がディスクレスインストールできないんです。
以前より大きいサイズでI/Oを行うようで。潜在的なバグに遭遇しちゃった(汗)
まぁ、これで ready for Windows7 になった(笑)

Windows7のiSCSIプロパティは詳細がすぐ見えて良い感じに。
MCSで動かしてるのがわかるし、ダイジェストの有無も確認できる。
パッチを作成した甲斐があるってものです。
でもあいかわらず2PBバリアはあるんですけどw
Vistaはぜんぜん興味わかなかったけど、今度のはいいかもね。
(自分がiSCSIディスクレスに興味を持ったのも一因だけど)

でわでわ、Windows7とディスクレス環境をお楽しみください。

パッチファイル: iscsi-target-20090125-patch.bz2

# cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat < /path/to/iscsi-target-20090125-patch.bz2 | patch -p0
# make
# make install

手動でメディア制御コントローラーをインストールしてください。
これは仮想DVDやテープの取り出し交換などに使います。

# cp -p work/netbsd-iscsi-20080207/src/istgtcontrol /usr/local/bin/

設定例は以前の投稿をどうぞ。

既知の問題:
全体的なスループットがあまり良くない。

主な修正点:
type=disk:読み書きエラー時でも正常終了になる致命的バグを修正しました。
type=disk:MODE SENSEでより多くのデータを返すように追加しました。
データOUTフェーズのメモリリークを修正しました。
MaxBurstLengthを超えるサイズの書き込み要求が正しく処理出来なかったのを修正しました。
ステータスシーケンス番号エラーを修正しました。
まぎらわしいエラーメッセージを表示しないように修正しました。

☆Windows7のディスクレス環境でのスクリーンショット

MCSもダイジェストも簡単に分かるようになりました。

2PB以上のディスクはやっぱりマイナスにw

ディスクレスインストール直後のデバイスマネージャー

お約束の

Intel PRO/1000 PT Server Adapterを使ってiSCSIブート(ディスクレス)を行う

2009年1月23日 金曜日

2011/01/05 追記:
ファームウェアの更新手順が変更されているので新たに書きましたので
よろしければ一緒にご覧ください。
「Intel Gigabit CT Desktop Adapter などにiSCSI起動ファームを書き込む」
http://shell.peach.ne.jp/aoyama/archives/1335
2011/01/05 追記:

とりあえずWindows Server 2003と2008で確認しました。

WS2003で利用したもの:
Intel PRO/1000 PT Server Adapter 2個
(追記:Server Adapter + Desktop Adapter の構成でもできました)
iscsi-target 20090122パッチ版
Windows Sever 2003 R2 評価版CDROM
Intel iSCSI Remote Boot FLASH ROM Utility
(ISBOOT.EXE 12.4/Firmware 2.1.22)
Intel PRO1000/PT Network Adapter Drivers for 2000/XP/2003
(PRO2KXP_v13_5.exe)
Microsoft iSCSI Initiator 2.08 boot version
(Initiator-2.08-boot-build3825-x86fre.exe)
http://www.microsoft.com/downloads/details.aspx?familyid=12CB3C1A-15D6-4585-B385-BEFD1319F825&displaylang=en

最初にターゲットを用意する。
FreeBSD 7.1 に iscsi-target 20090122パッチ版を使って下記のドライブを作成しました。

/usr/local/etc/iscsi/targets
extent11        /tank/iscsiz/istgt-boot00       0       120GB
target11        rw              extent11                192.168.3.0/24

次にNICのファームを更新する。

ISBOOT.EXEをダウンロードしてくる。
http://downloadcenter.intel.com/Product_Search.aspx?Prod_nm=ISBOOT.EXE
今回は12.4を利用しました。(後ろの方にあります)
展開すると、iSCSIUtl\DOSの中にiSCSIUtl.exeがあるのでこれをFDにコピーします。

DOS上から次のコマンドを実行する。

ISCSIUTL -ALL -FLASHENABLE
ISCSIUTL -ALL -UP

この操作ですべてのアダプタにiSCSIブートファームが書き込まれます。
NICが複数の場合はNICオプションで指定できます。
PXEブートに戻すにはPROBOOT.EXEにあるIBAUtil.exeを使えば戻るらしいけど、
私は戻すつもりはないのでよくわかりません(笑)

再起動すると正しくBIOSがロードされていれば、
iSCSIのセットアップに入るために
「Ctrl+Dを押してください」
と出るので押してセットアップに入る。

Firmware設定例:
Initiator Name
 iqn.2007-09.jp.ne.peach:pluto
Initiator IP
 192.168.3.48
Subnet Mask
 255.255.255.0
Gateway IP
 0.0.0.0

Target Name
 iqn.1994-04.org.netbsd.iscsi-target:target11
Target IP
 192.168.3.36
Target Port
 3260
Boot LUN
 0

設定をして、起動するために設定したアダプタをPRIMARYとして選択する。
マシンを再起動してLUN0にNETBSD HDDが認識される事を確認する。
(表示が短すぎて目視するのが難しいけどw)
Attempting Connect to の次の行に
LUN0 DEVICE NetBSD ほげほげ
が表示されない場合は接続にミスしているので設定を再確認する。

ISBOOT.EXEを展開した場所にある Win32以下のセットアップドライバを予めFDにコピーしておく。
さらにPRO2KXP_v13_5.exeを展開してPRO1000\Win32以下をDVDRWやUSBメモリなどに保存しておく。
Intel(R) Ethernet Drivers and Software for Multiple Operating SystemsだとZIPなので、
その展開のコピーでもいいとおもう。

Windows Server 2003 のCDROMで起動する

F6ほげほげが表示されたらF6キーを連打する。
次のF2ほげほげが出たらもう押さなくてOK
しばらくロードが続いて、ドライバの入力を求める画面になります。
Sキー>エンターキーで続行してFDから
「Intel(R) iSCSI Setup Driver」
を読み込む。できたらエンターキーで続行する。

そのまま進み、正しくFDからロードできればiSCSIのHDDが表示されます。
後は普通にパーティションを作成してインストールを指示します。

CDからHDDにコピーが終わると再起動になるのでFDを抜いておく。
そのまま待てばCDROMのスキャン後にiSCSIのHDDからブートして、
Windowsのセットアップが続行します。
途中でドライバがWindowsロゴに合格していないと言われるけど入れてしまう。
インストールが終了して起動するとiSCSIブートに使っているNICが
デバイスマネージャからSCSIとRAIDコントローラに
「Intel(R) iSCSI Setup Driver」として認識されています。

(自分的メモ)
ここまで出来たらWindowsを終了させてから、
ZFSスナップショットを作成しておく。
# zfs snapshot tank/iscsiz@snap20090122

上記コマンドを打ち込むと数秒で即座に今の状態が保存されます。
これで今後の操作でミスっても再インストールする必要がなくります(笑)

次にIntelのNICドライバを手動でいれます。
デバイスマネージャを開いて、不明デバイスの
イーサネット コントローラになっているものに
上記で作成したPRO2KXPドライバを導入します。
デバイスの詳細を見るとVEN_8086~となっているのがIntel製です。
WindowsUpdateを使わず、「いいえ、今回は接続しません」を選択する。
一覧または特定の場所からインストールするで場所を指定します。
iSCSI起動に使っているNICはインストールに失敗します。
それ以外のデバイスが認識された事を確認します。

オンボードのLANドライバも同様に導入して、
iscsi-targetのマシンにpingできる事を確認してから再起動します。
(複数ポータルの設定方法がわからないのと、SAN1とSAN2のGWをもってないので
 SAN2用NICに仮IPを振ってSAN1と同じとこに接続しといた)

再起動するとインストールできなかったデバイスに黄色のびっくりマークが付いて
ネットワークアダプタのグループに移動します。

この状態で、Microsoft iSCSI Initiator 2.08 boot versionsをインストールします。
セットアップでConfigure iSCSI Network Boot Supportというのが出るので、
チェックを入れて、e1expressというServiceNameの行を選択します。(←重要)
(現在のiscsi-targetパッチではMPIOはチェックしなくていいです)
インストールが終わったら再起動します。

起動したら、iSCSI InitiatorプロパティでTargetsに起動ディスクのみが
認識されてConnectedされていることを確認します。
(この段階ではDiscoveryタブはからっぽでなければいけない)

確認できたらF6ドライバのディスクにあるiSCSIApp.exeを実行します。
「はい」をクリックしてドライバを除去します。
この実行によりF6ドライバの制御下の起動ドライブが
Microsoft iSCSI Initiator boot版に委譲されます。
終わったら再起動します。

デバイスマネージャのSCSIとRAIDコントローラにある
「Intel(R) iSCSI Setup Driver」
が黄色いびっくりマークになっているのを確認します。
確認できたらネットワークアダプタの失敗したものに
ネットワークドライバをインストールします。
今度は成功しますのでIPアドレスを設定します。
※ここで仮に設定したIPも削除しました。

出来たらスタートメニューからコマンドプロンプトを起動して、
iscsibcg /verify /fix
を実行します。
Nic service used for iSCSI Boot is e1express
Driver e1express is not set to boot start
Driver e1express fixed to be be boot start
All iSCSI boot verification checks completed
と起動ドライバに e1express を使うようになって
チェック完了すればiSCSIブートのディスクレスマシンの完成です。
再起動すればiSCSIとネットワークの両方が使えるようになっています。
おつかれさまです。

最後のiscsibcgはドライバ更新とかOSのアップデートを行ったら
再度実行する必要があるそうです。
詳細はISBOOT.EXEのドキュメント(英語)を参照してくださいな。

ポイントはiSCSI Firmから起動した段階ではストレージコントローラ専用に
なっているため通常のネットワークパケットを一切扱えないので、他のNICで
処理するために2ポート必要になるのと、ストレージ用とネットワーク用の
ドライバが起動時に動いていて、MS iSCSI Initiatorから読めるように
予め構成しなければいけない所かな。

※使用上の注意※
同系列のNICを必ず2ポート以上用意すること。(Dual/Quadなら1枚でOK)
iSCSIファームは起動するNICにのみあればいいのでServer+Desktopでもいけるかも?
(追記:iSCSIファームをいれたServer1個とDesktop1個でもできました)
複数セッションを張る必要があるので最大セッション数を極端に小さくしない事。
テスト環境での設定は “-s 32 -C 8″ です
ドライバの交換が終了する前にクラッシュしたりすると起動不能に陥る事があります。
いわゆるディスクチェック完了してからでないと起動できないよ状態。
(しかしドライバは制御から外れてアクセスできない?)
DHCPでは詳しく試していないのでよくわからないです。

WS2008で利用したもの:
Intel PRO/1000 PT Server Adapter 2個 (追記:1個でもできました)
(firmは上記で更新済み)
iscsi-target 20090122パッチ版
Windows Server 2008 DVDメディア

ターゲット設定、Firmware設定は2003と同様です。

2008では最初からPRO/1000PT用ドライバが添付されていますので、
別途用意するものは何もありません。iSCSIも標準対応です。

DVDから起動すればiSCSI HDDが最初から見えます。
あとは普通にインストールすれば問題ありません。
iSCSI起動に使ったNICに設定したIPが最初から指定されています。

テスト環境の構成:

LAN構成
192.168.2.0/24
2001:380:e00:20::/64

SAN用経路1
192.168.3.0/24
2001:3e0:6cf:3::/64

SAN用経路2
192.168.4.0/24
2001:3e0:6cf:4::/64

iscsi-target FreeBSD 7.1/ZFS raidz2
em0:
192.168.4.36, 192.168.4.37
2001:3e0:6cf:4:21f:d0ff:fe16:38bd
em1:
192.168.3.36, 192.168.3.37
2001:3e0:6cf:3:21b:21ff:fe04:f405
em2:
192.168.2.36, 192.168.2.37
2001:380:e00:20:203:47ff:fe72:34f2

テストインストール完了後のマシン構成
ASUS M2A-VM(BIOS 2201) + Athron X2 5200/メモリ2GBx2/HDDなし
LAN:  192.168.2.48 (オンボードRealtek8111かな?)
SAN1: 192.168.3.48 (PCIe  x1: PRO/1000 PT Server Adapter iSCSI boot firm 2.1.22)
SAN2: 192.168.4.48 (PCIe x16: PRO/1000 PT Server Adapter boot disabled)

追記:
追加テストによりわかったので修正しました。
XPSP3は起動はできるけどブート版Initiatorが入らないのでNGです。
VistaSPなしはHDD認識せず撃沈。Server2008が認識している所をみると、boot.wimを更新すればいけるかも。ただ、これを変更するには Windows Automated Installation Kit (AIK)がいるわけで面倒なので当面放置。

FreeBSD iscsi-target MCS/64bitLBA/仮想DVD/仮想テープパッチ 2009/1/17版 for Microsoft iSCSI Initiator

2009年1月18日 日曜日

更新>MCS/64bitLBA/仮想DVD/仮想テープパッチ 2009/1/22版

仮想デバイスの構想一ヶ月、メディアの交換が正常にできずに悩むこと一週間あまり、やっと動くようになったので公開します。
記念すべき今年初のリリースです。
何か要望とかあればブログコメントでもメールでも構わないのでよろしくお願いします。

マルチパスの対応は都合によりしばらく凍結します。
またZFS/IPv6/64bitLBA以外の問題は後回しにします。
当面仮想デバイスの開発調整を最優先事項とします。
とりあえず実行速度よりロジック優先で作成してあります。
まずは仮想CD/DVDROMと仮想テープドライブ(DLT8000を想定)をリリースします。
現時点でバックアップリストアの基本動作確認のとれたソフトは

Windows 2000 Sever SP4 添付のWindowsバックアップ
Windows Server 2003 R2 添付のWindowsバックアップ
Symantec BackupExec 12.5 for Windows Server
FreeBSD 7.x の tar/mt コマンド
GNU tar 1.20 マルチボリューム

BackupExecに関してはiSCSI接続後にホットスワップ対応デバイスウィザードを
実行する事によりデバイスプールに追加できます。

※注意事項※
DLT8000が解釈できないコマンド類はエラーとしてsyslogに記録されますがテープの動作は行います。
現在の所、制御ポート経由(telnet等)で任意のターゲットのメディア操作が出来てしまいます。

それにしてもサイズがすんごい大きくなった。
パッチ元はFreeBSDで利用されてないコードを含めても2万行もないのに
仮想DVDと仮想テープドライブ対応だけで9千行を超えてサイズも500kに達してる。
もはやパッチレベルの範疇を超えてる気が。

そして、インストールテスト中に気が付いたけど制御コマンドのインストールとか
まったく考えてなかった(涙)とりあえず手動コピーでよろしく。

今後の予定もとい導入したほうがよさそうな事?
☆メディア制御をもうすこし賢い方法にする。
☆SCSIパススルーデバイスを追加する。
☆USBメモリ等のリムーバブルデバイスにも対応する。
☆デバイスのホットスワップに対応する。
☆複数のメディアスロットをサポートする。
☆複数イニシエータからの接続を可能にする。
☆マルチパスを考慮する。

パッチファイル: iscsi-target-20090117-patch.bz2
更新版をご利用ください。

# cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat < /path/to/iscsi-target-20090117-patch.bz2 | patch -p0
# make
# make install
#
# cp -p work/netbsd-iscsi-20080207/src/istgtcontrol /usr/local/bin/
#

手動でメディア制御コントローラーをインストールしてください。
これは仮想DVDやテープの取り出し交換などに使います。

設定例は以前の投稿をどうぞ。

新しい機能:
targetsファイル内のlengthカラムで加減算で一個だけ追加指定できます。
ZEPTGMKのサフィックスも合わせて利用できます。
1023MBの指定例: 1GB-1MB (=1024MB-1MB=1023MB)
1025MBの指定例: 1GB+1MB (=1024MB+1MB=1025MB)

targetsファイル内の各targetにデバイス固有値を指定できます。
type 仮想デバイスのタイプ
 disk SBC-2準拠 Direct access block device
 dvd  MMC-4準拠 CD/DVD device (現在はRead系のみ)
 tape SSC-2準拠 Sequential-access device
id 仮想デバイス識別子
 1~2147483647(重複不可)

省略時はtype=disk,id=自動採番(0×0100~)と解釈します。
現時点ではidは装置シリアル番号の下位4桁に利用しています。省略可能です。

targetsファイルでリムーバブルメディアを定義できます。
type メディアタイプ
 iso ISOイメージ
 tape 仮想テープイメージ
flags メディアフラグ
 rw 読み書き用とします。
 ro 読み込み専用とします。(ライトプロテクト状態でイニシエータに応答)
 extend メディアの末尾まで書き込みした場合に可能であれば256MB単位で拡張します。
 dynamic メディアの書き込み状況に応じて可能であれば拡大縮小します。

メディアを読み書き用にしてもtarget指定がroならば書き込み不可能です。
メディアサイズの拡大縮小はtype=tapeのみサポートします。
dynamicを指定した場合はメディアの長さ指定は意味がありません。
現時点ではidカラムは特に利用していません。省略可能です。

※targetsの書式は将来変更する可能性があります

# mcs extra style
#
# media         type    id      flags           file                    length
#
media31         iso     1       ro              /tank/iscsi/dvds/7.1-RELEASE-i386-disc1.iso auto
media41         tape    41      rw              /tank/iscsi/tapes/41    20GB
media42         tape    42      rw,extend       /tank/iscsi/tapes/42    40GB
media43         tape    43      rw,dynamic      /tank/iscsi/tapes/43    auto
#
# target        type    id      flags           storage         netmask
#
target2         disk    2       rw              extent2         192.168.2.0/24
target3         dvd     3       ro              media31         192.168.2.0/24
target4         tape    4       rw              media41         192.168.2.0/24
#

制御用ポートとしてiSCSIターゲットポートの次の番号でオープンするようになりました。
デフォルトのiSCSI標準ポートは3260なので制御ポートは3261になります。

既知の問題:
iSCSIで接続しても正常に通信出来ずにPnPデバイスとして認識しない事があります。
(一度iSCSI接続をログアウトして再接続すると認識されます)
仮想テープの入出力にエラーが発生した場合、以後の書き込みができない可能性があります。
(メディアを一旦取り出して再挿入すると認識するかもしれない)
極端に小さい論理ブロック長でテープに大量に書き込むと論理ブロック数が不足する可能性があります。
(内部的には64ビットですが現時点の対応ポジション変更系コマンドが32ビットなので)
メディア交換した直後にエラーなどが発生する可能性があります。
(ターゲットから非同期通信を行わない為、イニシエータがポーリングするまで内部情報が変化しない)
メディア制御用のセキュリティが特に考慮されていない。
メディア制御用コマンド istgtcontrol が自動でインストールされない。

いわゆる仕様:
仮想デバイスは利用時(コマンド実行時)ロックのみでリザーブ・リリースに対応していない。
(複数イニシエータからはもちろん、単機のマルチパス接続も想定していない)
仮想デバイスのホットスワップには対応していない。
テープドライブの圧縮機能は実装していない。
単一の書き込みメディアを複数の仮想デバイスに装着した場合の動作は未定義。
メディアのアンロードを行ってもメディアスロット内に残留するので次のロードで再セットされる。
動的仮想テープのハードリミット(最大サイズ)が16EBの固定になっている。
1本の仮想テープでは最大1024個のファイルマーク(BOT/EOTを含む)に限定される。

主な修正点:
LUNの計算を間違えていたのを修正しました。
違うターゲットに接続した場合に誤ってエラーが記録されるのを修正しました。
MODE SELECT(10)が正常に動かないのを修正しました。
MODE SENSE(6)(10)がショートモードで正しいブロック数を返さないのを修正しました。
数値指定で加減算表記をできるように変更しました。
マルチターゲット仕様のために内部データ構成を変更しました。
tagetsファイルの定義を拡張しました。
SCSIエラー時にセンスキーやASC/ASCQを返すようになりました。
SSC2/MMC4のデバイスエミュレーションに対応しました。
オーバーフローとアンダーフローをiSCSI PDUに返すように修正しました。
メディアの拡大縮小を考慮するように変更しました。
パッチ元のオリジナルに存在するバグを多数修正しました。
メディア制御用スレッドを新設しました。
スレッドの作成結果を調べていないバグを修正しました。
メディア制御コマンドが新設されました。

~メディア制御のしかた~
まず、制御対象がローカルホストであり、上記の設定がされていると仮定すると、
target3のDVD装置にはメディアスロットmedia31が付いていて、
/tank/iscsi/dvds/7.1-RELEASE-i386-disc1.iso が挿入されている状態になります。

このメディアを排出するにはOS上から取り出しを実行するか、以下のコマンドで行います。
(コマンド行が長いので複数行に書きますが実際は一行です)

# istgtcontrol -t iqn.1994-04.org.netbsd.iscsi-target:target3 -m media31 unload

この状態はトレイ式DVDドライブのトレイが開いた状態に相当します。(メディア変更なし)
以下のコマンドでトレイを閉めると同じメディアが読み込みされます。

# istgtcontrol -t iqn.1994-04.org.netbsd.iscsi-target:target3 -m media31 load

メディア自体を交換するにはファイルを指定します。追加でフラグとサイズも指定できます。

# istgtcontrol -t iqn.1994-04.org.netbsd.iscsi-target:target3 -m media31 -f ro -s auto change /tank/iscsi/dvds/7.1-RELEASE-i386-disc2.iso

ここで指定するファイル名は制御ターゲットサーバにある実際のパスです。
今のところリモートメディアをマウントする事はできません。
フラグとサイズの省略時はrwとautoになります。
空白文字を含むファイル名はもちろんクオートしてください。

このコマンドを実行すると現在のメディアをunloadしてメディアを交換した後に
loadするという一連の作業を排他ロックをかけた状態で行います。
不幸にしてロードに失敗した場合は可能ならunload状態で終了します。
成功するにしても失敗するにしてもコマンドが終了するまではOSなどからアクセスはできません。

現在のメディア状態をみるには、以下のコマンドを使います。

# istgtcontrol -t iqn.1994-04.org.netbsd.iscsi-target:target3 -m media31 list

実行例:

# istgtcontrol -t iqn.1994-04.org.netbsd.iscsi-target:target3 -m media31 list
iqn=iqn.1994-04.org.netbsd.iscsi-target:target3, slot=media31
media file=NULL, flags=rw, size=auto
connect to localhost:3261
target banner "iSCSI Target Controller version 20090117 on ::1 from ::1"
slot1 present unlock media31 iso 1 ro "/tank/iscsi/dvds/7.1-RELEASE-i386-disc1.iso" auto
DONE LIST command

以上の操作をリモートから実行するには -h オプションでターゲットホストを指定します。