[클러스터][파일] 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배 정도의 속도

가 난다. 하지만 읽기 속도가 아주 저조하다. (튜닝 필요..)

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.