USUGUMO 君に Opensolaris 2009.6 amd64 を入れる。
日本語が変だし、単なる作業ログなので読んでも全く面白くないと思います。
USUGUMO の性能は以下です。
| 名前 | USUGUMO.quilva.jp |
|---|---|
| CPU | Phenom 9950@2.8GHz |
| Memory | DDR2 PC-6400 2GB*2=4GB 5-5-5-15 |
| M/B | Jetway HA7-ULTRA |
| NIC | on-board RTL8111C |
| HDD | WesternDigital WD32000AAKS-B3A (7200rpm 320GB) |
| HDD2 | HGST P7K500 |
| HDD3 | Seagate Barracuda 7200.10 ST3500320AS (7200rpm 500GB) |
このマシンの致命的な欠点は NIC でして Linux の場合は kernel のバージョンに関係なく負荷をかけると落ちます。 (NIC を認識しなくなります)
ドライバが R8169 なのでこれが原因の可能性がありますが、Realtek が提供している R8168 はインストール方法がイマイチわからなかったのであきらめた。
大学院は Linux よりも Solaris [8,9,10] のほうが触れる機会が多いので、今回は Opensolaris をインストールしてみる。
Opensolaris のバージョンは最新の 2009.6 です。
Opensolaris 2009.6 のダウンロード
自分のマシンは amd64 なので amd64 のイメージを探しましたがないようです。
どうやら、x86 のイメージは amd64 としても使えるようなので x86 のイメージを使用します。
ここからダウンロードできます。

Opensolaris 2009.6 Live iso ダウンロード
CD-R に焼き付けます。
boot させると自動で X が立ち上がります。
USER jack PASSWORD jack、ROOT root PASSWORD opensolaris だったと思うので、それでログインして、デスクトップにある「install solaris」みたいなアイコンからインストールします。
できれば、ZFS の raidz 上にインストールしたかったのですが GUI のインストールからはできなさそうなのと、CUI のインストール方法が全くわからないのであきらめました。
IP アドレスを固定する
X と gnome が勝手に入ってしまうのですが、これは入っててもパフォーマンスが悪くなるくらいなのでとりあえずあきらめる。
IP アドレスは DHCP で取ってきてくれるようです。
SSH はデフォルトで有効になっています。
DHCP では困るので、IP アドレスを固定化します。
OpenSolaris 固定IP – @//メモ を参考にさせてもらいました。
nwam とかいうデーモンがネットワーク関係を管理してるようなのでこれを停止させて手動で設定できるようにします。
また、「svcadm disable svc:/network/physical:nwam」を実行したときネットワークが使えなくなるので SSH から作業しないほうがいいと思います。
# svcs svc:/network/physical STATE STIME FMRI disabled 0:00:00 svc:/network/physical:default online 0:00:00 svc:/network/physical:nwam # svcadm disable svc:/network/physical:nwam # svcadm enable svc:/network/physical:default # svcs svc:/network/physical STATE STIME FMRI disabled 0:00:00 svc:/network/physical:nwam offline 0:00:00 svc:/network/physical:default
名前解決を DNS でさせる為に以下を実行します。
# cp /etc/nsswitch.conf /etc/nsswitch.conf.bak # cp /etc/nsswitch.dns /etc/nsswitch.conf
DNS サーバを設定します。Linux と同じです。
自分の場合はルータが DNS キャッシュサーバなので 192.168.5.1 にしました。
エディタは vi か nano が入ってるようなので、これを使用します。この程度だったら nano のほうが楽かも。
# vi /etc/resolv.conf domain quilva.jp search quilva.jp dnsserver 192.168.5.1
IP アドレスを指定します。
このファイルは自分の場合存在しなかったので、新規作成になります。
# vi /etc/hostname.rge0 192.168.5.10
この最後の rge0 というのはネットワークデバイスの名前です。
当たり前かもしれませんが以下より調べれます。
# /sbin/ifconfig -a
lo0: flags=2001000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
rge0: flags=1000843 mtu 1500 index 2
inet 192.168.5.10 netmask ffffff00 broadcast 192.168.5.255
ether 0:30:18:**:**:**
ネットマスクを設定します。自分の場合は書き換え不要でした。
# vi /etc/netmasks 192.168.5.0 255.255.255.0
デフォルトゲートウェイを設定します。
# vi /etc/defaultrouter 192.168.5.1
これで、IP アドレスは固定になった。
ZFS pool を作る
Linux と比較してですが、パーティションの作成が非常に面倒に感じました。
現在 HDD は以下のようになってます。
c7t0d0 | 40GB(system) | 260GB 開き領域 | c7t1d0 | 500GB 開き領域 | c7t2d0 | 500GB 開き領域 |
これを以下のようにします。
c7t0d0 | p1 40GB(system) | p2 80GB raidz 用 | p3 残り全部 largepool 用 | c7t1d0 | p1 80GB raidz 用 | p2 残り全部 largepool 用 | c7t2d0 | p1 80GB raidz 用 | p2 残り全部 largepool 用 |
コマンドは format コマンドからやるのが良いようです。
まず、c7t0d0 (320GB) からやります。ここは現在 OS 動いている HDD であるので特に慎重に作業します。
format コマンドを打つと以下のようなものがでてくるので 0 を選択します。
# format
earching for disks...done
AVAILABLE DISK SELECTIONS:
0. c7t0d0
/pci@0,0/pci1002,4391@11/disk@0,0
1. c7t1d0
/pci@0,0/pci1002,4391@11/disk@1,0
2. c7t2d0
/pci@0,0/pci1002,4391@11/disk@2,0
Specify disk (enter its number): 0
すると、以下のようなメニューがでてきます。ここで fdisk と入力します。
selecting c7t0d0
[disk formatted]
/dev/dsk/c7t0d0s0 is part of active ZFS pool rpool. Please see zpool(1M).
FORMAT MENU:
disk - select a disk
type - select (define) a disk type
partition - select (define) a partition table
current - describe the current disk
format - format and analyze the disk
fdisk - run the fdisk program
repair - repair a defective sector
label - write label to the disk
analyze - surface analysis
defect - defect list management
backup - search for backup labels
verify - read and display labels
save - save new disk/partition definitions
inquiry - show vendor, product and revision
volname - set 8-character volume name
! - execute , then return
quit
format> fdisk
こんな画面になります。
Total disk size is 38913 cylinders
Cylinder size is 16065 (512 byte) blocks
Cylinders
Partition Status Type Start End Length %
========= ====== ============ ===== === ====== ===
1 Active Solaris2 1 5222 5222 13
SELECT ONE OF THE FOLLOWING:
1. Create a partition
2. Specify the active partition
3. Delete a partition
4. Change between Solaris and Solaris2 Partition IDs
5. Exit (update disk configuration and exit)
6. Cancel (exit without updating disk configuration)
Enter Selection:
新しくパーティションを作るので、1 を選択して、あとは表示されてるメッセージを読みながら進めます。
Enter Selection: 1 Select the partition type to create: 1=SOLARIS2 2=UNIX 3=PCIXOS 4=Other 5=DOS12 6=DOS16 7=DOSEXT 8=DOSBIG 9=DOS16LBA A=x86 Boot B=Diagnostic C=FAT32 D=FAT32LBA E=DOSEXTLBA F=EFI 0=Exit?1 c 5223 8913
なんとか raidz 用の 80GB くらいのパーティション作成できました。
Total disk size is 38913 cylinders
Cylinder size is 16065 (512 byte) blocks
Cylinders
Partition Status Type Start End Length %
========= ====== ============ ===== === ====== ===
1 Solaris2 1 5222 5222 13
2 Active Solaris2 5223 14135 8913 23
続いて、largepool 用の残り全部を partition 3 に割り当てます。
特に「残り全部」という割り当て方がわからなかったので、シリンダサイズ(38913)から 14135 を引いた値よりさらに 1 ひいたものにしました。
完了するとこんなかんじになります。
Total disk size is 38913 cylinders
Cylinder size is 16065 (512 byte) blocks
Cylinders
Partition Status Type Start End Length %
========= ====== ============ ===== === ====== ===
1 Solaris2 1 5222 5222 13
2 Solaris2 5223 14135 8913 23
3 Active Solaris2 14136 38912 24777 64
ここが重要なところで、Active がPartition 3 に来ているので、
このまま fdisk を終了させると次回 Solaris が起動しないという悲しいことになりますので、
2. Specify the active partition を選択して、Partition 1 が Active になりようにします。
Total disk size is 38913 cylinders
Cylinder size is 16065 (512 byte) blocks
Cylinders
Partition Status Type Start End Length %
========= ====== ============ ===== === ====== ===
1 Active Solaris2 1 5222 5222 13
2 Solaris2 5223 14135 8913 23
3 Solaris2 14136 38912 24777 64
これでようやくパーティショニング完了です。この記事で一番めんどくさいところでした。
ZFS pool を作る
_・)Keep Smiling -微弱電波-: ZFSでRAID-Zを構築 を参考にさせてもらいました。
まず、raidz の ZFS pool を作ります。c7t1d0 というのが HDD で、p[0-9] がパーティションの番号です。
# zfs create raid raidz c7t0d0p2 c7t1d0p1 c7t2d0p1
完了です。ただし今回の記事で raidz のパーティションは使わないのでこれにて終了。
次に iscsi target 用の ZFS pool の largepool を作ります。
# zfs create largepool c7t0d0p3 c7t1d0p2 c7t2d0p2
zfs list や zpool list で確認して完了です。
ZFS で iscsi Target を作る
Solaris iSCSI Target/Initiator : やっぱり Sun がスキ! を参考にしました。
かなり丁寧にわかりやすく書かれてます。
まず、iscsi target が動いてるか確認します。
# svcs -a | grep iscsi disabled 21:20:36 svc:/network/iscsi_initiator:default disabled 21:20:48 svc:/system/iscsitgt:default
となるそうですが、自分の場合は以下のように何もでませんでした。
つまり、iscsi target が動いていないどころか iscsi target がインストールされてません。
# svcs -a | grep iscsi
なので、iscsitadm をインストールします。
このブログの記事より、iscsitgt というのがそれっぽいので、そのパッケージをあてずっぽうでやったらインストールされたので、合っているようです。
# pkg install SUNWiscsitgt かなり時間かかる
インストールすると、以下のようになりました。
# svcs -a | grep iscsi disabled 21:20:48 svc:/system/iscsitgt:default
まだ、iscsi-initiator がないので、これもインストールします。
これもあてずっぽうで SUNWiscsi とやったら入ったので正解のようです。
# pkg install SUNWiscsi かなり時間かかる
ようやく、以下の状況になりました。
# svcs -a | grep iscsi disabled 21:20:36 svc:/network/iscsi_initiator:default disabled 21:20:48 svc:/system/iscsitgt:default
これで、先ほどの丁寧にかかれている記事と Target 作成までは全く一緒なので割愛します。
ただし「1. 2G バイトのファイルを作成し、zfs 領域を作成」とありますが、
自分の場合は先ほど作成した largepool がそれにあたるので、こから 900GB 切り出して使用しました。
# zfs create -V 900gb largepool/vol # zfs list NAME USED AVAIL REFER MOUNTPOINT largepool 900G 65.7G 19K /largepool largepool/vol 900G 957G 8.25G -
iscsi Initiator を立ち上げる
Solaris iSCSI Target/Initiator : やっぱり Sun がスキ! の続きです。
iscsi initiator を有効化します。
# svcs -a | grep iscsi disable 16:58:57 svc:/network/iscsi_initiator:default online 16:59:11 svc:/system/iscsitgt:default # svcadm enable iscsi_initiator # svcs -a | grep iscsi maintenance 16:58:57 svc:/network/iscsi_initiator:default online 16:59:11 svc:/system/iscsitgt:default
なんじゃこりゃ、online にならずに maintenance という状態になりました。
iscsiadm list initiator-node を実行するとエラーになるので、困りました。
とりあえず再起動したら、online になりました。
再起動は shutdown -g0 -i6 -y とするそうです。shutdown -r now だとダメだった。
残りは先のわかりやすい記事どおりです。
Windows XP から iSCSI を使う
夜更かし日記 – iSCSIターゲット作成 , iSCSIイニシエータで接続テスト この記事を参考にさせてもらいました。
microsoft より iSCSI Initiator をダウンロードしてインストールします。
ダウンロードで手間取ることが個人的に結構あるので SS 載せます。

Windows iSCSI Initiator ダウンロード 1

Windows iSCSI Initiator ダウンロード 1
XP 32bit を使ってるので、x86 をダウンロードします。

Windows iSCSI Initiator ダウンロード 3
あとは記事どおりやればすんなり iSCSI target を認識します。
なんだかすごい。
ベンチマーク
共有 HDD で NTFS は大丈夫なのか心配ですが、Windows からなら仕方ないので、NTFS でフォーマットします。

フォーマット
フォーマットして、ファイルを書き込んでたらやはりNIC が認識しなくなりました。
RTL8111C やっぱりだめだねぇ。
ついでに書いておくと、コイル鳴きもかなりひどいです。ピシィピシィという音ががんがん響いてます。
一応遅いけど、各種ベンチマークを載せておく。
HdTune は以下。 SUN SOLARIS と出るのはかっこいいっす。
まぁ、ベンチ結果はアテになりません。実測書き込み 22MByte/s、実測読み込み 40MByte/s が上限っぽいので、HdTune のバーストレートは正しい気がする。

HDTune 1 回目

HDTune 2 回目
Crystal DiskMark は以下。これはもっとダメダメです。
テストがメインメモリのディスクキャッシュに納まるサイズなので、ほんとに意味ないです。
まぁ、書き込みはより悪くなってる。

iscsi-bench-crystaldiskmark
まぁこんなもんですかねぇ。RTL8111C はどうしようもない。
Linux Samba だと RTL8111C が落ちるのを除いて、書き込み読み込みとも 500Mbps くらいは出たので性能で行くなら Samba ですねぇ。
iSCSI だとローカルディスクと全く同等に使えるのは非常に良いんですけどねぇ。
とりあえず、Opensolaris さっぱりわかなくて大変です。

Kooss
Ktkr.net
ReJEC.NET
[...] 以前 Opensolaris で同様のことをしたときは書き込みが遅く、NIC が落ちるということで実用にはちょっと遠いものでした。 書き込みが遅いのは設定不足の可能性が高いですが、調べるのが大変なので OS を変えて試してみることにします。 [...]
ピンバック by Debian で iSCSI Target を作って Windows XP で利用する « Quilva::ReJEC.NET BLOG — 2009年 7月10日 @ 16:56