※ Test 환경
Target 서버로 사용할 이미지 서버 1대
192.168.9.36
i) 192.168.9.36 서버를 BIOS mode 에서 ISCSI 환경 설정.
맨위 dhcp 해제
Initiator Name : 고유 “ iqn” 넘버 할당. 클라이언트의 이름이라고 생가하면됨.
본 TEST 에서는 iqn을 iqn:192.168.9.36 으로 설정.Initiator IP : 클라이언트 IP 입력
subnet mask, gateway : 클라이언트가 사용하는 ip입력
Target Name : Initiator Name 과 동일한 넘버. 스토리지에서 동일한 값 이어야됨
Target IP, Target port : iscsi 스토리지 IP. Iscsi port(해당 포트는 항상 동일)
Boot Lun : 최초 1부터 사용 가능하고, 디바이스 장치라고 생각하면됨 (/dev/sda, /dev/sdb)
- 저장 후 esc 로 bios 를 나오면 자동으루 부팅 진행.
본 TEST 에서는 iqn을 iqn:192.168.9.36 으로 설정.
설정이 완료 되면 위 사진 처럼 설정 내용이 확인 되고, iscsi 스토리지에서 타겟 및 디스크 할 당을 하지 않았기 때문에 디스크가 없다고 나옴.
추후 문제 발생시 해당 화면 및 iscsi rom bios 에서 설정 내용등을 확인 하여 트러블슈팅 진행
ii) 192.168.9.35 서버를 ISCSI 서버 구축.
mkdir /ISCSI_STORAGE/ready-image
mkdir /ISCSI_STORAGE/service
- parted /dev/sda1
mklabel – gpt
mkpart 1 / 100%
/etc/fstab 내 마운트 명령어 추가
/dev/sda1 /ISCSI_STORAGE ext4 defaults 0 0
############################# 단순히 TEST 용도라면 위에 과정은 생략 가능 OS 영역외에 스토리지 영역을 따로 추가 하고 싶을때 혹은 스토리지 영역이 TB급 이상일때 parted 를 이용해서 gpt 파일시스템으로 포맷해서 사용 ############
최신 update 및 관련 패키지 추가
- yum install -y openssl openssl-devel mhash mhash-devel libtool libtool-ltdl libtool-ltdl-devel imap-devel imap zlib-devel zlib freetype-devel freetype libpng-devel libpng libjpeg-devel libjpeg libtiff-devel libtiff gd-devel gd pcre-devel pcre libxml-devel libxml libxml2-devel libxml2 gdbm-devel gdbm ncurses-devel ncurses curl-devel curl expat-devel expat bzip2-devel bzip2-libs bzip2 libc libc-devel libc-client-devel gcc*
ntfs 마운트 관련 패키지 설치
yum install fuse-ntfs*
yum install ntfsprogs*
findntfs-1.3-1.el6.rf.x86_64.rpm
fuse-ntfs-3g-2013.1.13-2.el6.rf.x86_64.rpm
fuse-ntfs-3g-devel-2013.1.13-2.el6.rf.x86_64.rpm
ntfsprogs-2013.1.13-2.el6.rf.x86_64.rpm
- iptables 셋팅
서버에 맞게 개별 구성
- selinux 해제
setenforce 0
/etc/sysconfig/selinux
SELINUX=disabled
4) iscsi 관리 툴 설치
- yum install scsi-target-utils
- tgt 데몬이 매 부팅 때마다 동작하도록 등록
chkconfig --level 35 tgtd on
- tgtd 데몬의 실행
/etc/init.d/tgtd start
- ipmitool 설치
yum install -y ipmitool
iii) ISCSI 서버에서 boot img 생성 후 192.168.9.36 서버와 연결.
# tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn:192.168.9.36 # tgtadm --lld iscsi --op new --mode target --tid (tid Num) -T (iqn Num)
- 클라이언트가 연결되는 타겟을 생성합니다. (tid num) : 타겟을 번호. 무작위로 숫자를 기입하여도 무방 (iqn) : 타겟의 고유값. tgt에서는 무작위 값을 넣어도 되지만 CENTOS 7에서는 tgt가 아닌 targetcli 라는 패키지 형태로 iscsi 연결을 하는데 targetcli에서 iqn 은 고정적이고 복잡한 형대로 기입 하지만 tgt에서는 유일 값으로만 기입하면 상관 없다.
# tgtadm --lld iscsi --op new --mode logicalunit --tid (tid num) --lun (lun num) --b (img path) # tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /ISCSI_STORAGE/service/boot_test.img - 클라이언트가 사용할 이미지(디스크)를 연결합니다. (lun num) : 디바이스장치 형태로 기본은 1 부터 사용합니다. (img path) : 절대 경로로 이미지명을 입력합니다 또는 레이드장치로 연결된 대용량 디렉토리 말고 HDD, SSD로 다이렉트로 연결 하여 사용 가능합니다
# tgtadm --lld iscsi --op bind --mode target --tid 1 -I 192.168.9.36 # tgtadm --lld iscsi --op bind --mode target -tid (tid num) -I ("{ip}" | ALL ) - 클라이언트가 접근할 ip를 설정 합니다. ("{ip}" | ALL ) : 클라이언트가 접근할 ip를 설정하는데 ALL 로 했을 경우 모든 ip가 접근 가능 합니다. 보 안에 매우 취약 합니다. ex) tgtadm --lld iscsi --op bind --mode target -tid 15 -I 192.168.10.10
*[ 타겟 백업 ] # tgt-admin --dump > /etc/tgt/targets.conf - 기본구성 명령어 입력후 상태 값을 백업합니다. 한개의 타겟이 아닌 다수의 타겟이 연결 되고 서버가 장애로 다운 됐을때 상태값이 백업 되있다면 tgt데몬 구동시 연결되어 있는 명령어들이 자동으로 적용이 됩니다.* [ 타겟 상태 변경 ]
# tgtadm --op update --mode target --tid=(tid num) -n state -v (offline | ready) - 타겟을 제거 하지 않고, 사용을 제한 할 수 있습니다. ready 는 운영이고 offline 은 제한입니다. ex) tgtadm --op update --mode target --tid 15 -n state -v offline ex) tgtadm --op update --mode target --tid 15 -n state -v ready
* [ 타겟제거 ] # tgtadm --lld iscsi --op delete --force --mode target --tid=(tid num) - target 제거 입니다. 옵션중 --force를 넣어 주면 강제로 해당 타겟을 제거 합니다. # tgtadm --lld iscsi --op delete --mode logicalunit –tid (tid num) –lun (lun num) - target의 lun을 제거 합니다. # tgt-admin --update tid=(tid num) -c /dev/null -f - target 강제 제거랑 같은 명령어 입니다. # tgt-admin --update ALL -c /dev/null -f - 모든 target을 제거 합니다. 잘못 내리면 재앙이 내립니다.
** iscsi 주된 목적은 용량 증설이기 때문에 레이드로 마운트된 디렉토리에 빈 이미지를 생성합니다.
** 생성된 이미지는 외부 클라이언트의 추가 디스크가 됩니다.
* [ 빈 이미지 생성 ]# tgtimg --op new --device-type disk --size={용량}M --type=disk --file={path} - 용량은 자율적으로 적용합니다. ex) tgtimg --op new --device-type disk --size=102400M --type=disk --file=/ISCSI_storage/test.img
* [ 명령어 입력 ] # tgt-admin -s ==> 명령어 입력시 iscsi target 상태값 확인이 가능합니다. Target 1: iqn-192.168.10.10 -> 클라이언트 iqn numb System information: Driver: iscsi State: ready -> 해당 타겟 상태값 ready 상태면 사용가능 offline 이면 사용불가 I_T nexus information: → 넥서스 정보는 클라이언트 간의 세션 상태. 약 1시간 유지 LUN information: LUN: 0 Type: controller SCSI ID: IET 00010000 SCSI SN: beaf10 Size: 0 MB, Block size: 1 Online: Yes Removable media: No Prevent removal: No Readonly: No Backing store type: null Backing store path: None Backing store flags: LUN: 1 → 위에서 설명한 이미지를 장착한 디바이스 장치 무조건 1부터 사용 Type: disk SCSI ID: IET 00010001 SCSI SN: beaf11 Size: 10737 MB, Block size: 512 Online: Yes Removable media: No Prevent removal: No Readonly: No Backing store type: rdwr Backing store path: /ISCSI_storage/test.img -> 이미지경로 Backing store flags: Account information: ACL information: → 보안정책 해당 IP 만 접근하여 엑세스 할수 있도록 정의 192.168.10.10