お客様のご好意により、GroupWise 6.5 のインストールメディアとパッチを手に入れることができました。このバージョンまではパッチをインストールするときも「生CD」を要求するためちょっと苦労しましたが、あまり得意ではないGWIAも含めてインストールすることができました。

※このエントリは執筆中です。後に修正が入る可能性があります。

-前提環境-

OES2 NetWare 6.5 に GroupWise 6.5 がインストールされている条件でまずは「移動元」を作ってみました。

GroupWise 6.5 です
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_11204488.jpg


GWIAも動いています。
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_11212268.jpg



GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_1741199.jpg


POAのバージョンは 6.5 です。
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_11214324.jpg



GroupWise WebAccess も動作しています
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_11224611.jpg


OES2NetWare で SLES11 上でXEN仮想しています。
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_11232100.jpg


さすが 4コアマシン+16M メモリと言っても 7200rpm の SATA ディスクひとつで 7 つの仮想マシンを動かしていますから sar で見ると iowait が凄いことになります。

-ポストオフィスとドメインを新サーバにコピー-

新 GroupWise は SLES11sp2 を用意しましたが、Do not upgrade SLES11sp2 with Novell GroupWise 2012 sles11sp2 では動かないことをおもいだしたので sles 11sp1 にダウングレードします。

sles をインストールするときには LAMP(Apache)とファイルサービス(samba)を導入します。 samba は管理するときだけ使えばよいので、 手動起動 (Manually) で動かします。

他にも rsync.nlm を使った異機種間コピーも考えましたがのらりくらりとここでは Microsoft の Robocopy でコピーしました。xcopy でもかまいません。Windows 7 では標準ですが、WXP/2003 には標準装備されていないので Windows の ToolKit から取り出して使います。


旧 o:gpw 新 n:gpw とします。

新 n:gpw は samba アクセスできるように設定しておきます。

この二つのディレクトリをマップします。

gw2012~# mkdir gpw
gw2012~# chmod 777 /gpw/ -R
gw2012~# chown gpwoerater:users /gpw -R

これで robbocopy を行います。
c:\> robocopy o:gpw n:gpw /e でファイルコピーします。最初のコピーなので、あまり負荷のかからない時間がよいでしょう。といってもランダムアクセスなので offiles にある古いファイルが中心となります。

二度目以降は

c:\> robocopy o:gpw n:gpw /e /s /mir を実行します。 wpcsout/in などにあるキューイングされたファイルは取り除かれます。

この二度目以降のコピーは、サーバーの移行期間中に定期的に実行するとよいでしょう。


この段階でいくつか「ロック中でコピーできないファイルがありますが、ユーザが開いているファイルですのであまり気にしなくても結構です。

-アップグレードのl順序-

アップグレードは、プライマリドメイン>セカンダリドメイン>ポストオフィス>クライアントの順で行います。 GroupWise 6.5 の日本語版(作ったのは Inc)があまりにもタコで、ノベル株式会社の Novell.Inc への影響力のなさ(この)頃の K.K. さんにはお世話になりました)から、随分GW65 の日本語クライアントで苦労した方もいらっしゃると思います。(あるお客さんではエンジンは 6.5 クライアントは 5.5 )という方もいらっしゃいました。

GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_12441529.gif



-旧サーバの停止-

NW65 上の各エージェントはF7キーで停止します。
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_1435949.jpg


停止したら最後の Robocopy もしくは Rsync で最後の状態を新サーバーにコピーします。


-移行先 Linux サーバで-

openmotif-libs,xxx.rpm を suse.com から入手し、インストールします。

gpw2012:~ # pwd
/root
gpw2012:~ #
gpw2012:~ # rpm -ivh openmotif22-libs-2.2.4-84.i586.rpm
Preparing... ########################################### [100%]
1:openmotif22-libs ########################################### [100%]
gpw2012:~ #

gw12.0.0_full_linux_multi.tar.gz をFileRoller などで解凍します。


ConsoleOne をインストールします。

gpw2012:~/gw12.0.0-98586_full_linux_multi/consoleone/Linux # ./c1-install
Welcome to the installation of ConsoleOne 1.3.6h

The following is a list of languages that are available to install.

1 English
2 Chinese
3 Chinese Traditional
4 French
5 German
6 Italian
7 Japanese
8 Portuguese
9 Russian
10 Spanish
11 All

Select the languages you wish to install [?,q]: 11


The following are all the available snapins you can choose to install

0 NONE
1 ICE Snapin
2 Index Manager Snapin
3 LDAP Snapin
4 SLP Snapin
5 WAN Manager Snapin
6 PKI Snapin
7 Filtered Replica Snapin
8 All

Select the snapin(s) you wish to install [?,q]: 8

- インストールが始まります 略 -

%% Adding package NOVLc1Linuxjre ...
Preparing... ########################################### [100%]
1:NOVLc1Linuxjre ########################################### [100%]


- 略 -


%% ConsoleOne Successfully Installed.
%% Execute /usr/ConsoleOne/bin/ConsoleOne to run ConsoleOne
%% Snapins Successfully Installed.

gpw2012:~/gw12.0.0-98586_full_linux_multi/consoleone/Linux #

ここからGUI操作が必要なので X 端末を使って操作します。

解凍先のインストーラ install をrun します。

GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_16501347.jpg


English -> OK

GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_16512799.jpg


Install Products
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_1724758.jpg


GroupWise Administration
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_1733526.jpg


Install Administration

GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_17254631.jpg


Configure Administration
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_17264137.jpg


GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_17271654.jpg


SDD の指定
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_17284153.jpg


プロダクトは全部選択
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_1729368.jpg


コピーがはじまります
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_17322585.jpg


SDDが作成されました
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_17332818.jpg


Finish > メインメニューにもどり Create update ....
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_17345380.jpg



GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_17392579.jpg


コピーしたSDDを指定
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_1740656.jpg


Select All
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_17422264.jpg


パッケージのインストール
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_17431929.jpg

ここはいらなかったかな.....


ここで Create or Update , update に自動的にチェックが入っています。
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_17462092.jpg



コピー済みのドメインのパスを指定 > update

GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_174921.jpg


一瞬でアップデートが終了
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_1747434.jpg


gpw2012:/gpw/dom # ls -al
total 332
drwxrwxrwx 9 knakaj users 4096 May 28 17:48 .
drwxr-xr-x 5 knakaj users 4096 May 28 17:27 ..
-rwxr--r-- 1 knakaj users 17743 Aug 13 2002 GWDOM.DC
-rwxr--r-- 1 knakaj users 17111 Aug 13 2002 GWPO.DC

drwxr-xr-x 6 knakaj users 4096 May 28 16:30 MSLOCAL
-rwxr--r-- 1 knakaj users 6 May 26 16:33 MTANAME
-rwxr--r-- 1 knakaj users 12 May 28 14:32 MTANUM
-rwxr--r-- 1 knakaj users 165 May 24 15:10 agentinstall.txt
-rw-r--r-- 1 root root 20244 Jan 17 20:43 gwdom.dc
-rw-r--r-- 1 root root 19883 Jan 17 20:43 gwpo.dc

drwxr-xr-x 2 knakaj users 4096 May 28 16:32 wpcs
drwxr-xr-x 10 knakaj users 4096 May 28 16:32 wpcsin
drwxr-xr-x 5 knakaj users 4096 May 28 16:32 wpcsout
-rwxr--r-- 1 knakaj users 180224 May 26 16:34 wpdomain.db
-rw-r--r-- 1 knakaj users 11561 Jan 17 20:43 wpdomain.dc
drwxr-xr-x 6 knakaj users 4096 May 28 16:33 wpgate
-rw-r--r-- 1 knakaj users 10942 Jan 17 20:43 wphost.dc
drwxr-xr-x 2 knakaj users 4096 May 28 16:33 wpoffice
drwxr-xr-x 2 knakaj users 4096 May 28 16:33 wptools
gpw2012:/gpw/dom #

xxxxxx.DC ファイルがアップされています。6.5 では 2002年8月版でした。


もう一度 Install Products > GroupWise Agent
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_1754489.jpg


Install Agents
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_17555581.jpg

これもいらなかったかな

Configure Agent
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_17573528.jpg


GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_17581674.jpg


GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_17585220.jpg


前と同じドメイン名と、コピーしたドメインディレクトリを指定します。
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_1811271.jpg


ここではドメインだけ指定します。
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_1822717.jpg


ドキュメントビューワを有効にするか>Yes
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_1831961.jpg


エージェントをきどうするか?
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_1841475.jpg


GroupWise をスタートします
gpw2012:~ # /etc/init.d/grpwise start
Starting [@gwdva.dva] done
Starting [@mydom.mta] done
gpw2012:~ #

MTA とドキュメントビューワだけ起動します。


Linux のデスクトップの ConsoleOne を開き、C1 にログインします。 ドメインDBを指定します。
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_18113633.jpg


ドメインのプロパティをチェックします。
GroupWise 6.5 -> GroupWise2012 への update - 1_a0056607_18163429.jpg


ドメインDBのバージョンが12になりました。ドメインDBの変換は、短くて数分、ドメイン数が数百あると、数時間かかる場合があるので一番緊張する時間です。特に 5.2 -> 5.5 では異常に時間がかかったことを覚えています。

Continue to next
GroupWise 6.5 -> GroupWise2012 への update - 2

※ここからは失敗談です。...Operation which went wrong .......

プライマリドメインの更新はこの方法で問題なく行えましたが、ポストオフィスの更新には失敗してしまい舞いました。その反省点を踏まえつつ、次に続きます。

..... to be continue ......まだ続く

GroupWise 6.5 -> GroupWise2012 への update - 2


Update from Novell GroupWise 6.5 on NetWare Groupwise 2012 on Linux

islandcenter.jp
# by islandcenter | 2012-05-28 11:17 | GroupWise | Comments(0)

Windows 2008 R2 サーバーのリモートデスクトップと eDirectory のパスワードを一致させる方法です。これにより、Windows 2008 R2 の RDP の機能を使ったシン・クタイアントを実現させます。

Translate this entry English by Excite

このテスト環境は SUSE Linux Enterprise Server 11 sp1 (SLES11) + XEN 環境で構築しています。

-前提-

Windows サーバマネージャの「役割」にリモートデスクトップを設定しておきます。「初期構成タスク」 > 「役割」で設定します。設定した後は、再起動が必要です。
Windows 2008R2 の Remote Desktop と eDirectory の Password を一致させる: Thin Client 実現への一歩目_a0056607_1452631.jpg


-リモートユーザの設定-

Windows のパスワードポリシーと eDirectory のパスワードポリシーが異なると非常に面倒なことになるので、Windows 側のパスワードポリシーを Disable にします。
Windows 2008R2 の Remote Desktop と eDirectory の Password を一致させる: Thin Client 実現への一歩目_a0056607_14572612.jpg

> gpedit > コンピューターの設定 > セキュリティの設定 > アカウントの設定 > パスワードのポリシー

から、パスワードを無期限(0日)、「複雑さ」をdisableにします。

これでWindows 側のユーザパスワードを「No Password」に設定できます。

「ユーザは次回のパスワードの変更が必要」をチェック
Windows 2008R2 の Remote Desktop と eDirectory の Password を一致させる: Thin Client 実現への一歩目_a0056607_14552297.jpg


ユーザのパスワードはクリアしておきます。「パスワード」から Enter を二度打ちして empty password にします。
Windows 2008R2 の Remote Desktop と eDirectory の Password を一致させる: Thin Client 実現への一歩目_a0056607_14563012.jpg


ユーザがリモートデスクトップを使えるよう、 Remote Desktop User グループに追加します。
Windows 2008R2 の Remote Desktop と eDirectory の Password を一致させる: Thin Client 実現への一歩目_a0056607_1553871.jpg


-Novell Client のプロパティ-

Windows パスワード同期を ON
Windows 2008R2 の Remote Desktop と eDirectory の Password を一致させる: Thin Client 実現への一歩目_a0056607_1571970.jpg


「パスワード同期オプションデフォルト ON, これで eDirectory のパスワードと Windows のパスワードが一致しない場合、強制的に同期されます。
Windows 2008R2 の Remote Desktop と eDirectory の Password を一致させる: Thin Client 実現への一歩目_a0056607_158373.jpg


「パスワード同期オプションの表示」 ON,  これは OFF でもかまいませんが「Windows と eDirectory のパスワードを同期する」チェックボックスを表示するかしないかの機能です。
Windows 2008R2 の Remote Desktop と eDirectory の Password を一致させる: Thin Client 実現への一歩目_a0056607_15111112.jpg


他にもいくつか Novell Client に関しては設定項目があります。
常時 Novell Login を行う

また VMDP(というか Windows ) はチューニングが必要です。
Windows 2008 R2 の Remote Desktop が異常に遅い

-RUN MSTSC-

先ほど empty password にしたユーザで MSTSC(リモートデスクトップ) から No Password で接続すると「不明なエラー」が出ますが全く無視してOK

続いて Novell Login 画面が出ます。
Windows 2008R2 の Remote Desktop と eDirectory の Password を一致させる: Thin Client 実現への一歩目_a0056607_15152249.jpg


既に設定済みの eDirectory のパスワードをセットしてログオンすると
Windows 2008R2 の Remote Desktop と eDirectory の Password を一致させる: Thin Client 実現への一歩目_a0056607_15175095.jpg


無事ログオンできました。
Windows 2008R2 の Remote Desktop と eDirectory の Password を一致させる: Thin Client 実現への一歩目_a0056607_15182277.jpg


Windows 7 から 3D デスクトップも使えました。
Windows 2008R2 の Remote Desktop と eDirectory の Password を一致させる: Thin Client 実現への一歩目_a0056607_11155443.jpg


次回からリモートデスクトップを使うときは eDirectory と同期したパスワードでログオンできます。
Windows 2008R2 の Remote Desktop と eDirectory の Password を一致させる: Thin Client 実現への一歩目_a0056607_15202647.jpg


-ログオンと同時にNovell Login Scriptを走らせる-

このままでは認証されたのにセッションがない....
Windows 2008R2 の Remote Desktop と eDirectory の Password を一致させる: Thin Client 実現への一歩目_a0056607_16114843.jpg

もちろんタスクトレィのNアイコンからログインすれば全く問題ありません。

こちらにいい情報がありました
RDP session to W2K8 server dies when started from Windows 7 device with 11.1 agent

サーバーマネージャー > RD Session Host の構成 > RDP-Tcp 右ボタン > Properties > 全般(General) から Default の negotiation を RDP Security Layer に変更して「適用」( Apply )します
Windows 2008R2 の Remote Desktop と eDirectory の Password を一致させる: Thin Client 実現への一歩目_a0056607_14283975.jpg


RDPの接続と同時に eDirectory への接続が行われます。
Windows 2008R2 の Remote Desktop と eDirectory の Password を一致させる: Thin Client 実現への一歩目_a0056607_1434596.jpg

「Windows セキュリティ」のダイアログは出なくなります。

-Windows 7 の場合-

> gpedit でローカルコンピュータのグループポリシーを編集します。

> gpedit > コンピュータの設定 (Computer Configuration) > 管理用テンプレート (Administration Template) > リモートデスクトップサービス (Remote Desktop Service) > リモートデスクトップセッション ( Remote Desktop Session) > セキュリティ (Security) > セキュリティレイヤーを必要とする (Security Layer ?) > 「有効(Enable)」 / Security Layer(Dorop down set RDP)

Windows 2008R2 の Remote Desktop と eDirectory の Password を一致させる: Thin Client 実現への一歩目_a0056607_15503472.jpg


Novell Login から接続できます。
Windows 2008R2 の Remote Desktop と eDirectory の Password を一致させる: Thin Client 実現への一歩目_a0056607_15505414.jpg


Windows 7 の設定方法は動画にしてみました。

iPod Touch のiRdesktopでも使えます。iPad が欲しくなります。
Windows 2008R2 の Remote Desktop と eDirectory の Password を一致させる: Thin Client 実現への一歩目_a0056607_1213420.png


-Login script を RUN させる-

Novell Client 2 SP2 for Windows Server 2008 R2 (IR2a) で解消しました。

Login Script も走りました。
Windows 2008R2 の Remote Desktop と eDirectory の Password を一致させる: Thin Client 実現への一歩目_a0056607_2233382.jpg


無事 map できました。
Windows 2008R2 の Remote Desktop と eDirectory の Password を一致させる: Thin Client 実現への一歩目_a0056607_18151679.jpg


※ Windows 7 用では動かなかったということです。 Windows 2008 R2 用 Novell Client が必要でした。


参考文書
Using Dynamic Local User Policy in Windows Server 2008 R2 Remote Desktop Session Host

-Keyword-

Remote Desktop Windows 2008 R2 Password Synchronization with Novell eDirectory Windows Client SP2 OES OpenEnterprise Server Login script how to

islandcenter.jp
# by islandcenter | 2012-05-03 15:54 | OES2 Linux/NetWare | Comments(0)

ネットワークのベンチマーク・ツールを試す - nepim、LMbench、nuttcp

を参考にLMbenchを使って通信速度のベンチマークを確認してみました。

上の記事では nepim の SUSE 版があるようなのですが、パッケージの依存関係でうまくインストールできなかったので、LMbench3 を使ってみました。


1) 上のサイトからダウンロードしたソースを解凍します。

sles11:~/lmbench # ls
lmbench3.tar.gz

sles11:~/lmbench # tar xvf lmbench3.tar.gz

|
| 略
|

MakeFile があります。

sles11:~/lmbench # cd lmbench3/
sles11:~/lmbench/lmbench3 # ls
ACKNOWLEDGEMENTS COPYING Makefile hbench-REBUTTAL scripts
CHANGES COPYING-2 README doc results src

2) make します。

sles11:~/lmbench/lmbench3 # make


|
| 略
|

3) Binary (bin)が出来上がります。

sles11:~/lmbench/lmbench3 # ls
ACKNOWLEDGEMENTS COPYING Makefile bin hbench-REBUTTAL scripts
CHANGES COPYING-2 README doc results src

4) bin/x86_64-linux-gnu にバイナリが作られます。

sles11:~/lmbench/lmbench3 # ls bin
x86_64-linux-gnu

sles11:~/lmbench/lmbench3 # ls bin/x86_64-linux-gnu/
bw_file_rd lat_connect lat_proc lib_mem.o loop_o
bw_mem lat_ctx lat_rpc lib_sched.o memsize
bw_mmap_rd lat_fcntl lat_select lib_stats.o mhz
bw_pipe lat_fifo lat_sem lib_tcp.o msleep
bw_tcp lat_fs lat_sig lib_timing.o par_mem
bw_unix lat_http lat_syscall lib_udp.o par_ops
disk lat_mem_rd lat_tcp lib_unix.o stream
enough lat_mmap lat_udp line timing_o
flushdisk lat_ops lat_unix lmbench.a tlb
getopt.o lat_pagefault lat_unix_connect lmdd
hello lat_pipe lib_debug.o lmhttp

ここにさまざまな測定ツールが出来上がります。

LMbench のマニュアルによると、この中で lat_xxx 系のプログラムはレイテンシを計るためにあるようです。 bw_tcp が単純に TCP のソケット通信の性能を測るようです。

5) bw_tcp -s (サーバモード)で起動します。

sles11:~/lmbench/lmbench3 # bin/x86_64-linux-gnu/bw_tcp -s

6) 自分自身を計ってみます。

sles11:~/lmbench/lmbench3 # bin/x86_64-linux-gnu/bw_tcp localhost
0.065536 1864.99 MB/sec

1.8GB/s ですね。

7) bw_tcp -s (サーバモード)で起動している他のサーバに対してテストしてみました。

sles11:~/lmbench/lmbench3 # bin/x86_64-linux-gnu/bw_tcp 192.168.1.xxx
0.065536 62.25 MB/sec

ケーブルが原因なのでしょうか。 62MB/s です。

数値は bps(bit per second)ではなく、大文字 MB/S なので Byte Per Sec という解釈でいいんですよね。 そうなると 62MB * 8bit = 496 bps ということになります。 1G bps HUB のほぼ半分の帯域を使っていることになります。

8) 常駐していない相手(ルータなど)には拒否されます。
sles11:~/lmbench/lmbench3 # bin/x86_64-linux-gnu/bw_tcp 192.168.1.1yyy
socket connection: Connection refused


9) 内部で動く XEN 仮想マシン(VM)に対して実行してみます。
sles11:~/lmbench/lmbench3 # bin/x86_64-linux-gnu/bw_tcp 192.168.1.zzz
0.065536 1103.10 MB/sec


ほぼ1.1GB/s 出ています。 8.8G bps ということです。

LMbench は相手が必要です。例えばサーバと HUB間のベンチマークを計りたいというニーズには合いません。ソースから簡単にコンパイルして使えるので、Linux <---> Linux/Unix 間の通信速度を確認するにはお手軽です。

初期値を計測しておき、「遅い」というクレームが来たときに、ボトルネックが発生しているのか初期値と数値を比べてみれば、ネットワークが劣化しているのかどうなのかの判断材料になります。

islandcenter.jp
# by islandcenter | 2012-04-27 13:10 | SUSE | Comments(0)

PUTTY は単独で使える便利な SSH 端末ソフトウェアです。

ただし、設定内容はレジストリに書き込まれますので、ご注意ください。位置は
HKEY_CURRENT_USER\Software\SimonTatham\PuTTY
です。

私の好みは次の設定です。

Window > scrollback >200(default) から 2000 くらいに

SUSE Linux を管理する前に変えておきたい PUTTY のデフォルト設定_a0056607_16371280.jpg

Copy all to clipboad が使いやすくなります。
コマンドの入出力結果を文書にするときは便利です。

apearance > font settings > change > フォントサイズを大きくします。
SUSE Linux を管理する前に変えておきたい PUTTY のデフォルト設定_a0056607_1639343.jpg

デフォルトではフォントが小さすぎるひとにはお勧めします。フォントによっては、 yast の罫線が qqqq などに文字化けするので、フォントサイズだけ変えるのが良いでしょう。

Window > transration > EUC(Default) から UTF-8 に
SUSE Linux を管理する前に変えておきたい PUTTY のデフォルト設定_a0056607_16413667.jpg

SUSE Linux ではデフォルトが UTF-8 です。これをやっておかないと日本語ファイルは文字化けします。
# by islandcenter | 2012-04-25 16:44 | SUSE | Comments(0)

fio はよく Linux で利用されるオープンソースの I/O 測定ベンチマークツールです。 Windows 版もありますが、バイナリ配布されていないようなので、コンパイル環境が必要なようですね。

-SUSE Linux へのインストール-

http://software.opensuse.org から fio を serach すると、各バージョンに適合した fio のリストが出てきました。

SUSE Linux で fio を使って iSCSI のパフォーマンスを測定してみた。_a0056607_13254661.jpg


リモートX端末からブラウザを起動して 1 click install をクリックすると、ダウンロードするかインストーラを起動するか確認のダイアログが出ますので YaST インストーラを起動します。レポジトリの更新から始まり、インストールされます。レポジトリのダウンロードのため、途中で証明書を import します。インストールは全てGUIで行えます。

-iSCSI とローカルディスクで比べてみた-

smartctl で見ると /tmp は Hitachi HDS722020ALA330 どうやら 2Tb 7200rpm ものです。
/iscsi sumsung 製 HD103U1 5200rpm 1Tb SATA 3G の古いHDDをこれまた懐かしい QNAP TS-110 を iSCSI でマウントしました。

コマンド打ちが面倒なのでスクリプトを使ってみます。

fio はコマンドパラメータを使うか、パラメータリストファイルを使ってジョブを作ります。
ここでは seq-write の結果を求めてみます。

sles11:~ # cat fiotest.sh
#! /bin/sh
echo -------- iscsi ----
fio --directory=/iscsi --direct=1 --rw=write --bs=4k --size=1G --numjobs=3 --runtime=100 --name=seq-write
rm /iscsi/seq-write.* <------ テンポラリファイルは自分で消す必要があります。
sleep 20 <---- 次のテストで「削除の余韻」の影響避けるためわずかな間 sleep させます。
echo -------- local ----
fio --directory=/tmp --direct=1 --rw=write --bs=4k --size=1G --numjobs=3 --runtime=100 --name=seq-write
rm /tmp/iseq-write.*
echo -------- end ----
sles11:~ #
sles11:~ #

実行結果

sles11:~ # ./fiotest.sh
-------- iscsi ----
seq-write: (g=0): rw=write, bs=4K-4K/4K-4K, ioengine=sync, iodepth=1
...
seq-write: (g=0): rw=write, bs=4K-4K/4K-4K, ioengine=sync, iodepth=1
fio 2.0.7
Starting 3 processes
seq-write: Laying out IO file(s) (1 file(s) / 1024MB)
seq-write: Laying out IO file(s) (1 file(s) / 1024MB)
seq-write: Laying out IO file(s) (1 file(s) / 1024MB)
seq-write: Laying out IO file(s) (1 file(s) / 1024MB)
seq-write: Laying out IO file(s) (1 file(s) / 1024MB)
Jobs: 3 (f=3): [WWW] [100.0% done] [0K/4589K /s] [0 /1120 iops] [eta 00m:00s]
seq-write: (groupid=0, jobs=1): err= 0: pid=30120
write: io=112228KB, bw=1122.3KB/s, iops=280 , runt=100002msec
clat (usec): min=485 , max=4059.9K, avg=3551.68, stdev=35576.86
lat (usec): min=486 , max=4059.9K, avg=3554.75, stdev=35576.90
clat percentiles (usec):
| 1.00th=[ 502], 5.00th=[ 540], 10.00th=[ 756], 20.00th=[ 804],
| 30.00th=[ 828], 40.00th=[ 852], 50.00th=[ 876], 60.00th=[ 900],
| 70.00th=[ 924], 80.00th=[ 964], 90.00th=[ 1048], 95.00th=[ 1240],
| 99.00th=[103936], 99.50th=[201728], 99.90th=[464896], 99.95th=[518144],
| 99.99th=[634880]
bw (KB/s) : min= 0, max= 2434, per=38.35%, avg=1186.94, stdev=465.50
lat (usec) : 500=0.70%, 750=9.00%, 1000=76.46%
lat (msec) : 2=11.02%, 4=0.71%, 10=0.75%, 20=0.18%, 50=0.11%
lat (msec) : 100=0.06%, 250=0.85%, 500=0.09%, 750=0.08%, >=2000=0.01%
cpu : usr=0.31%, sys=1.52%, ctx=28183, majf=0, minf=24
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued : total=r=0/w=28057/d=0, short=r=0/w=0/d=0
seq-write: (groupid=0, jobs=1): err= 0: pid=30121
write: io=103572KB, bw=1035.8KB/s, iops=258 , runt=100001msec
clat (usec): min=565 , max=3898.5K, avg=3849.17, stdev=37243.20
lat (usec): min=569 , max=3898.5K, avg=3852.31, stdev=37243.40
clat percentiles (usec):
| 1.00th=[ 748], 5.00th=[ 772], 10.00th=[ 788], 20.00th=[ 820],
| 30.00th=[ 836], 40.00th=[ 860], 50.00th=[ 884], 60.00th=[ 908],
| 70.00th=[ 932], 80.00th=[ 964], 90.00th=[ 1048], 95.00th=[ 1272],
| 99.00th=[156672], 99.50th=[201728], 99.90th=[477184], 99.95th=[522240],
| 99.99th=[667648]
bw (KB/s) : min= 2, max= 2320, per=35.39%, avg=1095.22, stdev=398.96
lat (usec) : 750=1.54%, 1000=83.71%
lat (msec) : 2=11.67%, 4=0.43%, 10=1.21%, 20=0.27%, 50=0.08%
lat (msec) : 100=0.02%, 250=0.81%, 500=0.15%, 750=0.09%, >=2000=0.01%
cpu : usr=0.30%, sys=1.43%, ctx=25996, majf=0, minf=22
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued : total=r=0/w=25893/d=0, short=r=0/w=0/d=0
seq-write: (groupid=0, jobs=1): err= 0: pid=30122
write: io=93788KB, bw=960360 B/s, iops=234 , runt=100003msec
clat (usec): min=509 , max=4034.5K, avg=4250.95, stdev=39938.84
lat (usec): min=510 , max=4034.5K, avg=4254.40, stdev=39940.64
clat percentiles (usec):
| 1.00th=[ 756], 5.00th=[ 780], 10.00th=[ 804], 20.00th=[ 836],
| 30.00th=[ 860], 40.00th=[ 884], 50.00th=[ 916], 60.00th=[ 940],
| 70.00th=[ 972], 80.00th=[ 1012], 90.00th=[ 1096], 95.00th=[ 1368],
| 99.00th=[199680], 99.50th=[203776], 99.90th=[493568], 99.95th=[522240],
| 99.99th=[634880]
bw (KB/s) : min= 4, max= 2184, per=31.98%, avg=989.78, stdev=408.18
lat (usec) : 750=0.87%, 1000=76.62%
lat (msec) : 2=19.04%, 4=0.37%, 10=1.46%, 20=0.30%, 50=0.11%
lat (msec) : 100=0.04%, 250=0.91%, 500=0.17%, 750=0.09%, 1000=0.01%
lat (msec) : >=2000=0.01%
cpu : usr=0.30%, sys=1.92%, ctx=31587, majf=0, minf=22
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued : total=r=0/w=23447/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
WRITE: io=309588KB, aggrb=3095KB/s, minb=937KB/s, maxb=1122KB/s, mint=100001msec, maxt=100003msec

Disk stats (read/write):
sde: ios=13/77800, merge=0/44990, ticks=1008/3260968, in_queue=2594160, util=100.00%
Jobs: 3 (f=3): [WWW] [100.0% done] [0K/3653K /s] [0 /891 iops] [eta 00m:00s]
seq-write: (groupid=0, jobs=1): err= 0: pid=30214
write: io=119372KB, bw=1193.8KB/s, iops=298 , runt=100001msec
clat (usec): min=480 , max=837463 , avg=3337.99, stdev=26091.77
lat (usec): min=481 , max=837465 , avg=3341.11, stdev=26091.88
clat percentiles (usec):
| 1.00th=[ 524], 5.00th=[ 596], 10.00th=[ 660], 20.00th=[ 788],
| 30.00th=[ 820], 40.00th=[ 844], 50.00th=[ 868], 60.00th=[ 892],
| 70.00th=[ 924], 80.00th=[ 956], 90.00th=[ 1032], 95.00th=[ 1192],
| 99.00th=[47872], 99.50th=[201728], 99.90th=[497664], 99.95th=[518144],
| 99.99th=[602112]
bw (KB/s) : min= 4, max= 2496, per=35.18%, avg=1230.01, stdev=437.89
lat (usec) : 500=0.28%, 750=13.20%, 1000=73.42%
lat (msec) : 2=10.38%, 4=0.67%, 10=0.80%, 20=0.16%, 50=0.08%
lat (msec) : 100=0.03%, 250=0.81%, 500=0.07%, 750=0.09%, 1000=0.01%
cpu : usr=0.40%, sys=1.61%, ctx=29994, majf=0, minf=23
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued : total=r=0/w=29843/d=0, short=r=0/w=0/d=0
seq-write: (groupid=0, jobs=1): err= 0: pid=30215
write: io=116876KB, bw=1168.8KB/s,iops=292 , runt=100003msec
clat (usec): min=476 , max=951756 , avg=3409.88, stdev=26699.56
lat (usec): min=478 , max=951758 , avg=3412.95, stdev=26699.64
clat percentiles (usec):
| 1.00th=[ 540], 5.00th=[ 684], 10.00th=[ 764], 20.00th=[ 796],
| 30.00th=[ 828], 40.00th=[ 844], 50.00th=[ 868], 60.00th=[ 892],
| 70.00th=[ 916], 80.00th=[ 956], 90.00th=[ 1032], 95.00th=[ 1208],
| 99.00th=[61696], 99.50th=[201728], 99.90th=[497664], 99.95th=[522240],
| 99.99th=[569344]
bw (KB/s) : min= 4, max= 2504, per=34.45%, avg=1204.29, stdev=410.11
lat (usec) : 500=0.22%, 750=7.28%, 1000=79.96%
lat (msec) : 2=9.88%, 4=0.52%, 10=0.91%, 20=0.16%, 50=0.08%
lat (msec) : 100=0.01%, 250=0.81%, 500=0.08%, 750=0.10%, 1000=0.01%
cpu : usr=0.37%, sys=1.55%, ctx=29338, majf=0, minf=22
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued : total=r=0/w=29219/d=0, short=r=0/w=0/d=0
seq-write: (groupid=0, jobs=1): err= 0: pid=30216
write: io=113416KB, bw=1134.2KB/s, iops=283 , runt=100005msec
clat (usec): min=482 , max=1097.7K, avg=3513.74, stdev=27293.60
lat (usec): min=483 , max=1097.7K, avg=3516.88, stdev=27293.64
clat percentiles (usec):
| 1.00th=[ 548], 5.00th=[ 716], 10.00th=[ 772], 20.00th=[ 812],
| 30.00th=[ 844], 40.00th=[ 868], 50.00th=[ 892], 60.00th=[ 916],
| 70.00th=[ 940], 80.00th=[ 980], 90.00th=[ 1064], 95.00th=[ 1224],
| 99.00th=[116224], 99.50th=[201728], 99.90th=[497664], 99.95th=[518144],
| 99.99th=[602112]
bw (KB/s) : min= 3, max= 2480, per=33.41%, avg=1168.02, stdev=363.35
lat (usec) : 500=0.15%, 750=5.86%, 1000=77.70%
lat (msec) : 2=13.55%, 4=0.28%, 10=1.19%, 20=0.14%, 50=0.09%
lat (msec) : 100=0.03%, 250=0.84%, 500=0.08%, 750=0.09%, 2000=0.01%
cpu : usr=0.37%, sys=1.73%, ctx=28515, majf=0, minf=22
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued : total=r=0/w=28354/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
WRITE: io=349664KB, aggrb=3496KB/s, minb=1134KB/s, maxb=1193KB/s, mint=100001msec, maxt=100005msec

Disk stats (read/write):
sde: ios=1/87531, merge=0/14355, ticks=0/3385260, in_queue=2789384, util=100.00%

-------- local ----
seq-write: (g=0): rw=write, bs=4K-4K/4K-4K, ioengine=sync, iodepth=1
...
seq-write: (g=0): rw=write, bs=4K-4K/4K-4K, ioengine=sync, iodepth=1
fio 2.0.7
Starting 3 processes
seq-write: Laying out IO file(s) (1 file(s) / 1024MB)
seq-write: Laying out IO file(s) (1 file(s) / 1024MB)
Jobs: 3 (f=3): [WWW] [100.0% done] [0K/14566K /s] [0 /3556 iops] [eta 00m:00s]
seq-write: (groupid=0, jobs=1): err= 0: pid=30222
write: io=438048KB, bw=4380.5KB/s, iops=1095 , runt=100001msec
clat (usec): min=159 , max=679274 , avg=904.70, stdev=12497.03
lat (usec): min=160 , max=679276 , avg=906.94, stdev=12497.04
clat percentiles (usec):
| 1.00th=[ 209], 5.00th=[ 221], 10.00th=[ 225], 20.00th=[ 229],
| 30.00th=[ 231], 40.00th=[ 235], 50.00th=[ 239], 60.00th=[ 243],
| 70.00th=[ 249], 80.00th=[ 262], 90.00th=[ 298], 95.00th=[ 402],
| 99.00th=[ 812], 99.50th=[ 3376], 99.90th=[224256], 99.95th=[301056],
| 99.99th=[337920]
bw (KB/s) : min= 111, max= 8744, per=34.68%, avg=4475.22, stdev=1731.04
lat (usec) : 250=70.03%, 500=26.71%, 750=2.13%, 1000=0.30%
lat (msec) : 2=0.19%, 4=0.16%, 10=0.12%, 20=0.07%, 50=0.01%
lat (msec) : 100=0.01%, 250=0.18%, 500=0.08%, 750=0.01%
cpu : usr=0.58%, sys=3.42%, ctx=109670, majf=0, minf=23
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued : total=r=0/w=109512/d=0, short=r=0/w=0/d=0
seq-write: (groupid=0, jobs=1): err= 0: pid=30223
write: io=434468KB, bw=4344.7KB/s, iops=1086 , runt=100001msec
clat (usec): min=179 , max=691006 , avg=911.99, stdev=12768.08
lat (usec): min=180 , max=691007 , avg=914.21, stdev=12768.08
clat percentiles (usec):
| 1.00th=[ 207], 5.00th=[ 221], 10.00th=[ 225], 20.00th=[ 231],
| 30.00th=[ 233], 40.00th=[ 237], 50.00th=[ 239], 60.00th=[ 245],
| 70.00th=[ 251], 80.00th=[ 262], 90.00th=[ 302], 95.00th=[ 402],
| 99.00th=[ 756], 99.50th=[ 2128], 99.90th=[238592], 99.95th=[301056],
| 99.99th=[342016]
bw (KB/s) : min= 5, max= 8600, per=34.71%, avg=4479.71, stdev=1762.32
lat (usec) : 250=69.17%, 500=27.74%, 750=2.05%, 1000=0.29%
lat (msec) : 2=0.20%, 4=0.11%, 10=0.10%, 20=0.05%, 50=0.01%
lat (msec) : 100=0.01%, 250=0.17%, 500=0.09%, 750=0.01%
cpu : usr=0.68%, sys=3.71%, ctx=108938, majf=0, minf=22
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued : total=r=0/w=108617/d=0, short=r=0/w=0/d=0
seq-write: (groupid=0, jobs=1): err= 0: pid=30224
write: io=418116KB, bw=4181.2KB/s, iops=1045 , runt=100001msec
clat (usec): min=174 , max=577159 , avg=948.32, stdev=13147.12
lat (usec): min=175 , max=577160 , avg=950.53, stdev=13147.13
clat percentiles (usec):
| 1.00th=[ 209], 5.00th=[ 221], 10.00th=[ 225], 20.00th=[ 229],
| 30.00th=[ 231], 40.00th=[ 235], 50.00th=[ 237], 60.00th=[ 243],
| 70.00th=[ 249], 80.00th=[ 262], 90.00th=[ 294], 95.00th=[ 402],
| 99.00th=[ 772], 99.50th=[ 3120], 99.90th=[252928], 99.95th=[305152],
| 99.99th=[354304]
bw (KB/s) : min= 105, max= 8640, per=33.47%, avg=4319.83, stdev=1646.15
lat (usec) : 250=71.38%, 500=25.58%, 750=1.98%, 1000=0.28%
lat (msec) : 2=0.20%, 4=0.11%, 10=0.11%, 20=0.06%, 50=0.02%
lat (msec) : 100=0.01%, 250=0.17%, 500=0.10%, 750=0.01%
cpu : usr=0.72%, sys=3.02%, ctx=104679, majf=0, minf=22
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued : total=r=0/w=104529/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
WRITE: io=1260.4MB, aggrb=12906KB/s, minb=4181KB/s, maxb=4380KB/s, mint=100001msec, maxt=100001msec

Disk stats (read/write):
sda: ios=2583/323195, merge=14/28603, ticks=24160/4690956, in_queue=5321588, util=100.00%
rm: cannot remove `/tmp/iseq-write.*': No such file or directory
-------- end ----
sles11:~ #


なんともいえないのですは、この iSCSI ドライブは大体ローカルディスクの2割から3割程度のパフォーマンスしか出ていないようです。

ははーん、ボトルネックはここなんだ、と思うのは早計かも知れません。fioはあくまでもディスクの性能を測るものなので、システム全体の性能とは直結しているわけではありません。実際エンドユーザが利用したときのレスポンスとかが重要です。エンドユーザサイドで iSCSI で恐ろしいパフォーマンスを出す機器もあれば、円盤そのものの性能や、SAN装置のキャッシュの容量、RAIDコントローラの性能など色々な要素があるのです。


iSCSI は SUSE 仮想環境でファイルサーバとして使い物になるか

仮想環境では、iSCSI は容易に容量を拡張できる手段です。実際に2年前にこのエントリを書いたときからあまり環境が変わっていないことを考えると、ディスクの性能=システムの性能とは一概には言えません。

機器を納品した後、こうして初期性能を計っておくことはひとつの問題解決の準備段階として重要です。この数値を元に、後にクレームがきた場合のシステム全体の性能が低下したかどうかの基準として利用できるかも知れません。

一度、Raid の故障の後、性能が異常に低下したことがありました。原因はディスクのファームウェアにあったのですが、初期性能が正しく測定されており、機器の故障修理の後、同じパフォーマンスが出ているかを確認することも必要です。

ちなみに SAS Raid の fio の参考値 もご覧ください。

※ ちなみに fio は実稼動しているサーバーでは実行しないでください。CPU負荷が大きなWindows 系の仮想マシンが全滅しました。 Linux 系仮想マシンは全部無事だったけど。ユーザの負荷が少ないときに実施してくださいね。

-Keyword-

仮想環境 SUSE Linux SLES XEN iSCSI fio ディスクベンチマーク

islandcenter.jp
# by islandcenter | 2012-04-25 14:31 | SUSE | Comments(0)