CentOS 5.5(64bit)で試すiSCSI環境構築ガイド
長らくご無沙汰しておりました。最近は相変わらず社員教育と品質管理、設計開発作業やインフラエンジニアをしています。
最近、iSCSIを使ったネットワークストレージの話を耳にする事が増えてきました。
NFSより速いとか、GFSを使えばNFSのように使える、など。
早速検証環境を作って試してみたので、その構築記録を公開します。
ベンチマークは後日掲載予定です。
検証環境
【サーバ】
NEC Express5800/iR120a-1E …いわゆるラックマウントサーバ
CPU: Intel Xeon L5520 2.27GHz(Quad) x 2
NIC: Intel Corporation 82571EB Gigabit Ethernet Controller
Mem: 32GB
HDD: SAS 2.5inch 146GB 15krpm x 4 RAID 10
OS: CentOS 5.5(x86_64)
環境確認
# 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
もし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 bytesDevice Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 36404 292310707+ 8e Linux LVMDisk /dev/sdb: 236.2 GB, 236215955456 bytes
255 heads, 63 sectors/track, 28718 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytesDisk /dev/sdb doesn't contain a valid partition table
(以下省略)
既に他のサーバでフォーマット済みのディスクであれば、そのままマウントできます
以上で完了です。意外と簡単ですよね。
それではベンチマークしてみましょう。
読み込み:
# for i in [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12];do sleep 10;echo $'\n\n' $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 $'\n\n' $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