CentOS 5.5(64bit)で試すiSCSI環境構築ガイド – よし研 -日々クリエイション-

早速検証環境を作って試してみたので、その構築記録を公開します。

検証環境

【サーバ】

NEC Express5800/iR120a-1E …いわゆるラックマウントサーバ

CPU: Intel Xeon L5520 2.27GHz(Quad) x 2

Mem: 32GB

HDD: SAS 2.5inch 146GB 15krpm x 4 RAID 10

OS: CentOS 5.5(x86_64)

【クライアント】

NEC Express5800/iR120a-1E

CPU: Intel Xeon L5520 2.27GHz(Quad)

Mem: 16GB

HDD: SAS 2.5inch 300GB 10krpm x 2 RAID 1

OS: CentOS 5.5(x86_64)

【ネットワーク】

GigabitのCiscoスイッチングハブにそれぞれぶら下がっています

この2台以外は稼働していないので、スイッチの負荷は掛かっていません。

環境確認

# rpm -qa | grep kernel

kernel-2.6.18-194.8.1.el5

kernel-devel-2.6.18-194.8.1.el5

kernel-headers-2.6.18-194.8.1.el5

ダウンロード

# wget http://downloads.sourceforge.net/project/iscsitarget/iscsitarget/1.4.20.2/iscsitarget-1.4.20.2.tar.gz

rpmをbuild(コマンドがなければ yum -y install rpm-build で入れて下さい)

# rpmbuild -ta iscsitarget-1.4.20.2.tar.gz

…中略…

Wrote: /usr/src/redhat/SRPMS/iscsitarget-1.4.20.2-1.src.rpm

Wrote: /usr/src/redhat/RPMS/x86_64/iscsitarget-1.4.20.2-1.x86_64.rpm

Wrote: /usr/src/redhat/RPMS/x86_64/kmod-iscsitarget-1.4.20.2-1_2.6.18_194.8.1.el5.x86_64.rpm

もし以下のように文句言われてしまった場合には、メッセージで指示された通りkernel-develをバージョン決めうちでインストールしておいて下さい。(古い必要はありません)

# rpmbuild -ta iscsitarget-1.4.20.2.tar.gz

…中略…

error: Failed build dependencies:

kernel-devel = 2.6.18-194.8.1.el5 is needed by iscsitarget-1.4.20.2-1.x86_64

iSCSIのtargetになる為のプログラムをインストールします

□ こちらは問題なくできた場合

# cd /usr/src/redhat/RPMS/x86_64/ && rpm –ivh iscsitarget* kmod-iscsitarget*

Preparing… ########################################### [100%]

1:kmod-iscsitarget ########################################### [ 50%]

2:iscsitarget ########################################### [100%]

□ 以下は問題が起きた場合

もし、以下の結果となる場合には、利用前にkernelの関連のバージョンを合わせて再起動しておきましょう。

理由としては、インストール時に利用されたkernel-develと、現在読み込まれているkernelとのバージョンが不一致であるから。

# cd /usr/src/redhat/RPMS/x86_64/ && rpm -ivh iscsitarget* kmod-iscsitarget*

Preparing… ########################################### [100%]

1:kmod-iscsitarget ########################################### [ 50%]

modinfo: could not find module /lib/modules/2.6.18-194.8.1.el5/kernel/iscsi/iscsi_trgt.ko

FATAL: /lib/modules/2.6.18-194.8.1.el5/kernel/iscsi/iscsi_trgt.ko: No such file or directory

Warning: Module iscsi_trgt.ko from kernel has no modversions, so it cannot be reused for kernel 2.6.18-194.11.1.el5

2:iscsitarget ########################################### [100%]

※ 現在読み込まれているkernelを確認するには「uname -r」を、インストールされているkernelを確認するには「rpm -qa | grep ker」を実行します

共有するパーティションを選択

今回は/dev/drbd0を使います。(実際はLVMパーティションです)

# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/VolGroup00-system

30G 2.6G 26G 10% /

/dev/sda1 99M 14M 81M 15% /boot

tmpfs 16G 0 16G 0% /dev/shm

/dev/drbd0 217G 209M 206G 1% /test

設定を “/etc/iet/ietd.conf” に書き込みます。今回は以下の情報で書き込みました。

ADDRESS 192.168.0.104

Target iqn.2010-08.com.example.iscsi01:disk1

Lun 0 Path=/dev/drbd0,Type=fileio

MaxConnections 1

iSCSI Enterprise Target(iSCSIのサーバプロセス)のサービスを起ち上げます

# service iscsi-target start

もしstartしたあと/var/log/messagesに以下のログが出ていた場合

「ADDRESS 192.168.0.104」を “/etc/iet/ietd.conf” に追加して下さい。

Aug 15 21:43:21 s104-unity kernel: iscsi_trgt: Removing all connections, sessions and targets

Aug 15 21:43:22 s104-unity ietd: unable to create server socket (Address family not supported by protocol) 10 1 6!

クライアント側で探索し、その後にログインします

# iscsiadm -m discovery –type sendtargets -p 192.168.0.104

# iscsiadm -m node 192.168.0.104,1 -T iqn.2010-08.com.example.iscsi01:disk1 -l

クライアント側で接続確認をば

iscsiadm -m session -P 3

どのデバイスをマウントするのか以下で確認します

# fdisk -l

Disk /dev/sda: 299.4 GB, 299439751168 bytes

255 heads, 63 sectors/track, 36404 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/sda1 * 1 13 104391 83 Linux

/dev/sda2 14 36404 292310707+ 8e Linux LVM

Disk /dev/sdb: 236.2 GB, 236215955456 bytes

255 heads, 63 sectors/track, 28718 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdb doesn’t contain a valid partition table

(以下省略)

既に他のサーバでフォーマット済みのディスクであれば、そのままマウントできます

mkdir -p /mnt/iscsi

mount -t ext3 /dev/sdb /mnt/iscsi/

以上で完了です。意外と簡単ですよね。

それではベンチマークしてみましょう。

読み込み:

# for i in [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12];do sleep 10;echo $’nn’ $i;hdparm -t /dev/sdb;done

書き込み:

for i in [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12];do sleep 10;echo $’nn’ $i;date;time dd if=/dev/zero of=/mnt/iscsi/$i.tmp ibs=1M obs=1M count=1024;date;done

他に、bonnie++でのベンチマークも行う予定です。

この結果は次の記事で発表します。

ログアウトはこのやり方で

# iscsiadm -m node 192.168.0.104,1 -T iqn.2010-08.com.example.iscsi01:disk1 –logout

Logging out of session [sid: 4, target: iqn.2010-08.com.example.iscsi01:disk1, portal: 192.168.0.104,3260]

Logout of [sid: 4, target: iqn.2010-08.com.example.iscsi01:disk1, portal: 192.168.0.104,3260]: successful

注意

ext3はGFS(GlobalFileSystem)やOCFS2(Oracle Cluster File System)と違って共有ファイルシステムではないので、複数台のマシンにマウントしてしまうとデータが壊れる可能性があります。

もしNFSのように使いたい場合には、CentOSなら以下のサイトで紹介されているOCFS2や、GFSなどの分散ファイルシステムを使いましょう。

http://bitstar.jp/blog/?p=1350

http://bitstar.jp/blog/?p=1600

参考にしたサイト

http://network.station.ez-net.jp/server/linux/storage/iscsi.asp

http://storage.isp.jp/article.php/open-iscsi-setup

http://d.hatena.ne.jp/bitwaka/20090507/1241676154

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中