2010年9月 3日(金曜日) 20:32 JST


本サイトでは、iSCSIを利用して複数のhostのstorageをまとめて管理するsoftwareの開発過程を公開しています。

以下の記事カテゴリを用意しています。

Concept
Software Storageを開発する上での、目標、指針を記しています。
Case Study
Software Storageの利用シーン、適用例を挙げています。
Documents
sstoragedのinstall/configuration方法を記したDocumentです。
Performance
iSCSI Enterprise Targetとの性能比較結果を記載しています。
iSCSI targetを作る
Software Storageの基本機能であるiSCSI targetの設計、実装過程を公開しています。
開発日誌
開発者の日誌、駄文です。
Trac
開発repositoryです。
 印刷用画面 2007年8月30日(木曜日) 17:36 JST  投稿者: sugiura
News

sstorage Version 0.1.2をreleaseしました。0.1.1からの変更点は以下の2点です。

  1. Disk I/Oの高速化[changeset 287-290]
    libaioを用いて、非同期書き込みを行うことにより、Disk I/Oを高速化しました。
    iSCSI Enterprise Targetとのperformance比較については、iSCSI Enterprise Targetとの性能比較を参照してください。
  2. port open check timingの変更[changeset 291]
    daemonize前にiSCSI portをlistenできることを確認する修正を加えました。
    これにより、service scriptでsstorageを起動した際にport open失敗がNGとして報告されるようになりました。

install/configuration方法については、Documentsを参照してください。

RPM、SRPMは、以下からdownloadしてください。

TypePackage
Source RPM sstorage-0.1.2-1.src.rpm
Fedora7 RPM sstorage-0.1.2-1.fc7.rpm
Fedora Core6 RPM sstorage-0.1.2-1.fc6.rpm
Fedora Core5 RPM sstorage-0.1.2-1.fc5.rpm
CentOS 5 RPM sstorage-0.1.2-1.cs5.rpm
CentOS 4 RPM sstorage-0.1.2-1.cs4.5.rpm

なお、sstoraged RPMをinstallするためには、log4cxx RPMが必要です。
sstoraged Source RPMをrebuildするためには、log4cxx-devel RPMも必要です。

[全文表示] [コメント投稿]
コメント (0件) トラックバック (0件)
 印刷用画面 2007年10月 2日(火曜日) 21:56 JST  投稿者: sugiura
開発日誌

Windows Vista business editionにOffice 2007をinstallしたところ、IMEで漢字が入力できなくなってしまいました。
検索しようにも漢字が入力できないので四苦八苦しましたが、最終的な解決手段はこちらに記載されていました。

http://support.microsoft.com/kb/932102/ja

それにしても、漢字が入力できないためcopy & pasteで検索keywordを並べていると、脅迫文を書いているような錯覚が…。早くUpdateだけで修正されるようにしてもらいたいものです。

[全文表示] [コメント投稿]
コメント (0件) トラックバック (0件)
 印刷用画面 2007年9月 8日(土曜日) 10:17 JST  投稿者: sugiura
Performance

IETとsstorageのarchitectureには、大きな違いがあります。
このことが、Write Cacheが有効な領域でsstorageがIETよりも性能を発揮できる原因にもなっています。

こちらのOpen Source iSCSI targetの比較資料の記述によると、IETのarchitectureは以下のように図示できます。

IETは、kernel内に実装された、受信を専門に行うReceive threadと、送信を行うSend thread、File I/Oを行うI/O threadの3種類のthreadから構成されています。
iSCSI protocolで要求されたREAD/WRITE requestを、Receive thread→Receive queue→I/O thread→Send queue→Send threadの順に処理し、replyを返すという単純なarchitectureです。

この構成の利点は、iSCSI targetの実装が特にcacheを管理しなくていいという点で、simpleになることです。
例えば、WRITEの直後に同じsegmentをREADするというaccess patternを考えて見ましょう。
IETのarchitectureであれば、VFS(Virtual File System)にcacheの管理を任せているため、単純にWRITE→READをVFSに発行して、replyを正直に返していけばよいことになります。

ただし、利点ばかりではありません。
requestを受けてからreplyを返す前に必ずFile I/Oを行う必要があるため、OSのFile I/O以上の性能は出ないのです。
現在のhardwareであれば、Gigabit Ethernet対応のNICは理論的に1Gbps、headerやhardwareのoverheadを加味してもSocket I/Oでの実測値で900Mbps強の性能を出すことが可能です。しかし、File I/Oはここまで早くありません。

高価なSASやSCSI HDDは理論的に2Gbps強のbusに接続することが可能ですが、この値はあくまでbusの太さであって、HDDのI/O性能は100MB/s = 800Mbps以下です。

RAID0などのstripingを用いて、遅いHDDへのaccessを分散しbusを有効利用しない限り性能を稼げません。

安価なIDEやSATA HDDの場合、cacheが効かない状況のHDD I/Oは、50MB/s = 400Mbps以下の性能であることも"ざら"です。
つまり、折角Gigabit EthernetでiSCSI targetとinitiatorを接続してもOSのbuffer cacheが効かない場合、File I/O性能に引っ張られてGigabit Ethernetの性能が出ない状況に陥ってしまうのです。

一方、sstorageのarchitectureは、...

[全文表示] [コメント投稿]
コメント (0件) トラックバック (0件)
 印刷用画面 2007年8月30日(木曜日) 20:20 JST  投稿者: sugiura
Performance

mysqlbenchは、databaseのbenchmarkであるTPC-Bに似た試験を行います。
iozoneやbonnie++よりも実際の運用で用いられる状況に近いbenchmarkであるといえます。

このbenchmarkによる測定では、sstorageをiSCSI targetとして用いた場合、IETよりも約72%ほど高速で動作し、iSCSI target hostのCPU負荷も軽減することが判明しました。

測定方法、結果を以下に示します。

[全文表示] [コメント投稿]
コメント (0件) トラックバック (0件)
 印刷用画面 2007年8月30日(木曜日) 19:16 JST  投稿者: sugiura
Performance

bonnie++は、決まったsizeのfileに対して、1byte/block単位でread/writeを行い性能測定を行うHDD benchmarkです。
optionなしで起動すると、元々RAM sizeの2倍のfile sizeでの測定を行うようになっているので、OSのbuffer cacheの効果を排除して、diskそのものの性能を測定するために用いられます。

測定には、以下のcommandを用いました。

% bonnie++ -n 0 -x10

file creation testを行わずにRead/Write試験を10回繰り返し、平均値を算出しました。

その結果、...

[全文表示] [コメント投稿]
コメント (0件) トラックバック (0件)
 印刷用画面 2007年8月30日(木曜日) 18:52 JST  投稿者: sugiura
Performance

iozoneの測定に用いるfile sizeが、sstorageのWrite Cacheよりも小さい場合についても、測定を行いました。

この場合、sstorageはIETよりも高速に動作し、iSCSI target hostへの負荷も小さいことが判明しました。

測定結果は、...

[全文表示] [コメント投稿]
コメント (0件) トラックバック (0件)
 印刷用画面 2007年8月30日(木曜日) 18:15 JST  投稿者: sugiura
Performance

iozone

iozoneは、fileへのSequenctial Read/WriteをおよびRandom Read/Write性能をfile sizeとaccessする際のbuffer sizeを変えつつ測定を行うHDD benchmarkです。

まずは、initiatorのRAM sizeと同じfile sizeまでの範囲で測定を行いました。
その結果、file sizeが、initiator hostが持つRAM size = 1GBと、sstorageが持つWrite Cacheのdefault値256MBにおいて性能や挙動に違いがあることが判明しました。

では、結果を以下に示します。

[全文表示] [コメント投稿]
コメント (0件) トラックバック (0件)
 印刷用画面 2007年8月30日(木曜日) 17:58 JST  投稿者: sugiura
Performance

sstorageとiSCSI Enterprise Target(IET)との性能比較を行いました。

測定の結果、ある条件を満たせばsstorageがIETよりも高速で、CPUへの負荷も低いことが判明しました。

Hardware構成
測定環境は少し古めのDell PowerEdge SC420を2台をGb Etherで接続した、以下のものです。
Software構成
この環境でiSCSI Targetである、IETとsstoragedを入れ替えて性能測定を行いました。

使用したsoftwareのversionは以下の通りです。
HostSoftwareVersion
initiator kernel 2.6.9-42
iscsi-initiator-utils (Linux-iSCSI) 4.0.3.0-5
iozone 3-283
bonnie++ 1.03a
mysqlbench 0.1
target kernel 2.6.18-8.1.8
iscsitarget (iSCSI Enterprise Target) 0.4.15
sstoraged (Software Storage) 0.1.2
iSCSI parameter
試験に用いたiSCSI parameterは以下の通りです。
ParameterValue
InitialR2TNo
ImmediateDataYes
MaxRecvDataSegmentLength64KB
MaxBurstLength~16MB
FirstBurstLength256KB
MaxConnections1
MaxOutstandingR2T1
測定対象
実際に測定を行った測定対象を以下に示します。

各HDD benchmarkの数値に加えて、Gb Ether NetworkのThroughput、iSCSI Target hostのCPU利用率、Block deviceのI/O Throughputの測定を行いました。

測定結果については、以下を参照してください。

[全文表示] [コメント投稿]
コメント (0件) トラックバック (0件)
 印刷用画面 2007年8月29日(水曜日) 15:09 JST  投稿者: sugiura
News

log4cxx 0.10.0-1をSElinuxがenforced=有効な状態で利用すると、以下のerrorが/var/log/messagesに記録され、shared library liblog4cxx.soのloadに失敗してしまう不具合がありました。

avc denied { execmod } for pid = 9878 comm="sstoraged" name="liblog4cxx.so" 
dev=dm-0 ino=14325 scontext_t=user_u:system_r:initrc_t:s0 tcontext=system_u:object_r:lib_t:s0 tclass=file

これを解消するため、RPM packagingを修正した0.10.0-2を公開します。
変更点は、以下を%postで実行するようにしたことです。

chcon -t textrel_shlib_t /usr/lib/liblog4cxx.so

なお、Fedora Core用のpackageは2007年8月中旬のSVN HEAD Rev.560887、CentOS用のpackageはautomakeによるbuildが可能だった2007年4月中旬のSVN HEADのsourceを用いています。

以下からdownloadしてください。

OSSRPMRPM
Fedora7 log4cxx-0.10.0-2.fc7.src.rpm log4cxx-0.10.0-2.fc7.rpm
log4cxx-devel-0.10.0-2.fc7.rpm
Fedora Core6 log4cxx-0.10.0-2.fc6.src.rpm log4cxx-0.10.0-2.fc6.rpm
log4cxx-devel-0.10.0-2.fc6.rpm
Fedora Core5 log4cxx-0.10.0-2.fc5.src.rpm log4cxx-0.10.0-2.fc5.rpm
log4cxx-devel-0.10.0-2.fc5.rpm
CentOS 5 log4cxx-0.10.0-2.cs5.src.rpm log4cxx-0.10.0-2.cs5.rpm
log4cxx-devel-0.10.0-2.cs5.rpm
CentOS 4 log4cxx-0.10.0-2.cs4.5.src.rpm log4cxx-0.10.0-2.cs4.5.rpm
log4cxx-devel-0.10.0-2.cs4.5.rpm
[全文表示] [コメント投稿]
コメント (0件) トラックバック (0件)
 印刷用画面 2007年8月13日(月曜日) 21:32 JST  投稿者: sugiura
News

予定より4ヵ月半遅れですが、sstoraged Version 0.1.1をreleaseしました。
今のところ単純なiSCSI targetの機能しか備えていません。

install/configuration方法についてはDocuments、RPM packageの入手はDownloadを参照してください。

[全文表示] [コメント投稿]
コメント (0件) トラックバック (0件)