[클러스터][파일] Redhat ES4 + ISCSI-Target + ISCSI-initiator 설치 하기
##### Redhat ES4 + ISCSI-Target + ISCSI-initiator 설치 하기 #######
작성일 : 2007년 12월 20일
작성자 : 서진우
Redhat ES4 환경에서 특정 서버의 로컬 하드 디스크를 다른 호스트에서 로컬 SCSI 장치 처럼 인식하여
사용하게 하는 ISCSI 환경 구축에 대해 알아보자
ISCSI 전용 스토리지가 있을 경우에는 별도의 ISCSI-Target 이 필요 없다. 단지 클라이언트 시스템에서
ISCSI-initiator를 통해 원격 스토리지 장치를 인식하여 사용하면 된다. 하지만 ISCSI 전용 스토리지가
아닌 일반 서버에 장착된 디스크를 ISCSI 스토리지 처럼 사용하고자 할 경우 ISCSI-Target 이 필요하게
된다.
테스트 환경 :
node01 : file server
node02 : file client1
node03 : file client2
1. 일반 서버를 ISCSI 로 만들기
node01 서버에 ISCSI-target을 설치 한다. 관련 패키지를 설치 전에 다음 환경이 구성되어 있어야 한다.
Redhat ES4 기반 Kernel
kernel-devel openssl-devel gcc rpm-build 패키지 설치
# mkdir /usr/src/iscsitarget
# cd /usr/src/iscsitarget
# wget http://www.cryptoforge.net/iscsi/RPMS/iscsitarget-0.4.12-6.src.rpm
혹은 ..
# wget http://www.digicola.com/developer/iscsitarget-0.4.12-6.src.rpm
# rpmbuild –rebuild iscsitarget-0.4.12-6.src.rpm
무사히 iscsitarget rpm build 가 완성 되면..rpm 을 설치 한다.
# cd /usr/src/redhat/RPMS/x86_64
# rpm -Uvh iscsitarget-0.4.12-6.x86_64.rpm iscsitarget-kernel-smp-0.4.12-6_2.6.9_55.EL.x86_64.rpm
해당 kernel modules 디렉토리에 iscsi-taget module 인 /lib/modules/2.6.9-55.ELsmp/kernel/iscsi/iscsi_trgt.ko
이 설치된다.
모듈 적용을 해준다.
# depmod -a /lib/modules/2.6.9-55.ELsmp
# modprobe iscsi_trgt
부팅 시 iscsi-target 관련 서비스 데몬이 자동으로 적용되게 한다.
# chkconfig –add iscsi-target
# chkconfig –level 345 iscsi-target on
iscsi-target 설정 파일을 수정한다.
# vi /etc/ietd.conf
————————————————————————————————-
IncomingUser clunix root///
OutgoingUser
# Targets definitions start with “Target” and the target name.
# The target name must be a globally unique name, the iSCSI
# standard defines the “iSCSI Qualified Name” as follows:
#
# iqn.yyyy-mm.<reversed domain name>[:identifier]
#
# “yyyy-mm” is the date at which the domain is valid and the identifier
# is freely selectable. For further details please check the iSCSI spec.
Target iqn.2000-12.com.node01:storage.lun1
# Users, who can access this target. The same rules as for discovery
# users apply here.
# (no users means anyone can access the target)
IncomingUser clunix root///
OutgoingUser
# Logical Unit definition
# You must define one logical unit at least.
# Block devices, regular files, LVM, and RAID can be offered
# to the initiators as a block device.
Lun 0 Path=/dev/sda4,Type=fileio
# Alias name for this target
Alias iDISK0
# various iSCSI parameters
# (not all are used right now, see also iSCSI spec for details)
#MaxConnections 6
#InitialR2T Yes
#ImmediateData No
#MaxRecvDataSegmentLength 8192
#MaxXmitDataSegmentLength 8192
#MaxBurstLength 262144
#FirstBurstLength 65536
#DefaultTime2Wait 2
#DefaultTime2Retain 20
#MaxOutstandingR2T 8
#DataPDUInOrder Yes
#DataSequenceInOrder Yes
#ErrorRecoveryLevel 0
#HeaderDigest CRC32C,None
#DataDigest CRC32C,None
# various target parameters
#Wthreads 8
———————————————————————————————————-
# /etc/rc.d/init.d/iscsi-target restart
message 파일을 보고 정상적인 동작 유무를 확인한다.
# tail -f /var/log/message
———————————————————————————————————-
Dec 20 11:24:58 woos00 kernel: ip_tables: (C) 2000-2002 Netfilter core team
Dec 20 11:26:17 woos00 kernel: iSCSI Enterprise Target Software – version 0.4.12
Dec 20 11:26:17 woos00 kernel: iotype_init(90) register fileio
Dec 20 11:26:17 woos00 kernel: iotype_init(90) register nullio
Dec 20 11:26:23 woos00 kernel: iSCSI Enterprise Target Software – version 0.4.12
Dec 20 11:26:23 woos00 kernel: iotype_init(90) register fileio
Dec 20 11:26:23 woos00 kernel: iotype_init(90) register nullio
Dec 20 11:26:23 woos00 kernel: sess_param(173) 1 1 6 8192 8192 262144 65536 2 20 1 1 1 0 1 1
Dec 20 11:26:23 woos00 iscsi-target: ietd startup succeeded
———————————————————————————————————–
2. ISCSI 클라이언트 서버 구축
node02, node03 서버에 iscsi-initiator-utils 패키지를 설치 한다.
관련 패키지는 updates.redhat.com 에서 다운 받는다.
# rpm -Uvh iscsi-initiator-utils-4.0.3.0-6.x86_64.rpm
iscsi 클라이언트 설정 파일을 수정한다.
# vi /etc/iscsi.conf
———————————————————————————————————-
OutgoingUserName=clunix
OutgoingPassword=root///
DiscoveryAddress=192.168.123.51
OutgoingUserName=clunix
OutgoingPassword=root///
LoginTimeout=15
DiscoveryAddress=192.168.123.51
———————————————————————————————————–
iscsi 클라이언트 데몬을 시작한다.
# /etc/rc.d/init.d/iscsi restart
# chkconfig –add iscsi
# chkconfig –level 345 iscsi on
정상적으로 동작하는지 로그 및 장치 정보를 확인한다.
# tail -f /var/log/message
———————————————————————————————————–
Dec 20 13:22:32 dm003 iscsi: iscsid shutdown succeeded
Dec 20 13:22:32 dm003 kernel: Synchronizing SCSI cache for disk sda:
Dec 20 13:22:32 dm003 kernel: iscsi-sfnet:host0: Session dropped
Dec 20 13:22:32 dm003 iscsi: removing driver succeeded
Dec 20 13:22:32 dm003 iscsi: iscsi config check succeeded
Dec 20 13:22:32 dm003 kernel: iscsi-sfnet: Loading iscsi_sfnet version 4:0.1.11-3
Dec 20 13:22:32 dm003 kernel: iscsi-sfnet: Control device major number 253
Dec 20 13:22:32 dm003 iscsi: Loading iscsi driver: succeeded
Dec 20 13:22:37 dm003 iscsid[27397]: version 4:0.1.11-6 variant (03-Aug-2007)
Dec 20 13:22:37 dm003 iscsi: iscsid startup succeeded
Dec 20 13:22:37 dm003 iscsid[27400]: Connected to Discovery Address 192.168.123.51
Dec 20 13:22:37 dm003 iscsid[27398]: ignoring duplicate discovery address 192.168.123.51 in the config file
Dec 20 13:22:37 dm003 kernel: iscsi-sfnet:host1: Session established
Dec 20 13:22:37 dm003 kernel: scsi1 : SFNet iSCSI driver
Dec 20 13:22:37 dm003 kernel: Vendor: IET Model: VIRTUAL-DISK Rev: 0
Dec 20 13:22:37 dm003 kernel: Type: Direct-Access ANSI SCSI revision: 04
Dec 20 13:22:37 dm003 kernel: SCSI device sda: 369607455 512-byte hdwr sectors (189239 MB)
Dec 20 13:22:37 dm003 kernel: SCSI device sda: drive cache: write back
Dec 20 13:22:37 dm003 kernel: SCSI device sda: 369607455 512-byte hdwr sectors (189239 MB)
Dec 20 13:22:37 dm003 kernel: SCSI device sda: drive cache: write back
Dec 20 13:22:37 dm003 kernel: sda: sda1
Dec 20 13:22:37 dm003 kernel: Attached scsi disk sda at scsi1, channel 0, id 0, lun 0
Dec 20 13:22:37 dm003 scsi.agent[27440]: disk at /devices/platform/host1/target1:0:0/1:0:0:0
Dec 20 13:22:51 dm003 sshd(pam_unix)[27540]: session opened for user root by root(uid=0)
————————————————————————————————————
# cat /proc/scsi/scsi
————————————————————————————————————
Attached devices:
Host: scsi1 Channel: 00 Id: 00 Lun: 00
Vendor: IET Model: VIRTUAL-DISK Rev: 0
Type: Direct-Access ANSI SCSI revision: 04
————————————————————————————————————
# scsi-ls
————————————————————————————————————
*******************************************************************************
SFNet iSCSI Driver Version …4:0.1.11-6(03-Aug-2007)
*******************************************************************************
TARGET NAME : iqn.2000-12.com.woos00:storage.lun1
TARGET ALIAS :
HOST ID : 1
BUS ID : 0
TARGET ID : 0
TARGET ADDRESS : 192.168.123.51:3260,1
SESSION STATUS : ESTABLISHED AT Thu Dec 20 13:22:38 KST 2007
SESSION ID : ISID 00023d000001 TSIH 500
*******************************************************************************
————————————————————————————————————-
파티션 나누고, 포맷하고, 마운트 해서 잘 사용하시면 된다.
# fdisk /dev/sda
# mkfs.ext3 /dev/sda1
# mount -t ext3 /dev/sda1 /data
node02, node03 동일한 방식으로 설정한 후 GFS 셋팅해서 사용하면 NFS를 대체할 수 있어 보인다.
성능 평가 테스트를 해본 결과…
– 로컬 디스트 속도
Version 1.03 ——Sequential Output—— –Sequential Input- –Random-
-Per Chr- –Block– -Rewrite- -Per Chr- –Block– –Seeks–
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
dm002 2000M 69055 86 150770 26 37456 3 80171 99 3417821 99 +++++ +++
——Sequential Create—— ——–Random Create——–
-Create– –Read— -Delete– -Create– –Read— -Delete–
files:max:min /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
dm002 16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
– NFS 디스트 속도
Version 1.03 ——Sequential Output—— –Sequential Input- –Random-
-Per Chr- –Block– -Rewrite- -Per Chr- –Block– –Seeks–
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
dm004 2000M 33579 39 54127 5 8374 69 39581 59 3203894 99 +++++ +++
——Sequential Create—— ——–Random Create——–
-Create– –Read— -Delete– -Create– –Read— -Delete–
files:max:min /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
dm004 16 1037 3 805 86 2581 7 998 3 8001 7 1901 4
– ISCSI 디스크 속도
Version 1.03 ——Sequential Output—— –Sequential Input- –Random-
-Per Chr- –Block– -Rewrite- -Per Chr- –Block– –Seeks–
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
dm002 2000M 66477 85 396865 70 12579 1 88356 99 3170283 99 62.7 0
——Sequential Create—— ——–Random Create——–
-Create– –Read— -Delete– -Create– –Read— -Delete–
files:max:min /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
dm002 16 5367 99 +++++ +++ +++++ +++ 5410 99 +++++ +++ 17105 100
– PVFS 디스크 속도
Version 1.03 ——Sequential Output—— –Sequential Input- –Random-
-Per Chr- –Block– -Rewrite- -Per Chr- –Block– –Seeks–
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
dm002 2000M 61735 69 23101 1 11576 1 58388 73 24594 1 4897.2 3
——Sequential Create—— ——–Random Create——–
-Create– –Read— -Delete– -Create– –Read— -Delete–
files:max:min /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
dm002 16 276 0 1138 1 230 0 169 0 1066 1 62 0
결론은 쓰기, 읽기 부분에서 로컬 디스크와 유사한(10% 정도 낮음) 속도를 보장한다.
또한 NFS 와 같은 ISCSI 서버에 부하가 거의 없다는 장점도 있다. 하지만 ISCSI 클라이언트
의 부하가 로컬 디스크에 비해 다소 높다. 하지만 NFS 수준엔 비할수 없을 정도로 낮다.
부하로 보면 PVFS2의 부하가 가장 낮다. 6GB 이상의 파일을 복사할 경우 쓰기 읽기 모두
모든 부하를 여러대의 I/O 서버가 분산함으로 발생하지 않는다..(0.07~0.5)
로컬에서 동일 작업을 하면 (2~4 정도의 부하 발생), NFS 서버에 동일 작업을 하면 (10이상)
그에 비하면 PVFS2 의 부하는 거의 환상적이다.
쓰기 역시 4대의 I/O 서버를 이용해서 구성했을 경우 로컬 디스크 보다 2배 정도의 속도
가 난다. 하지만 읽기 속도가 아주 저조하다. (튜닝 필요..)