본문 바로가기

시스템/Infrastructure operation

[ISCSI] 초기 TEST 셋팅 및 명령어 정리

※ Test 환경

ISCSI 지원되는 보드 서버 1대

Target 서버로 사용할 이미지 서버 1대

IP는 기술지원 작업대 192.168.9.33/27 사용.

192.168.9.35
192.168.9.36

Test 간단 요약

* 192.168.9.35 Target 서버 (이미지서버) 사용.
* 192.168.9.36 Client 서버 ( OS가 설치될 서버) 사용.
i)  192.168.9.36 서버를 BIOS mode 에서 ISCSI 환경 설정. 
ii)  192.168.9.35 서버를 ISCSI 서버로 사용.
iii) ISCSI 서버에서 boot img 생성 후 192.168.9.36 서버와 연결.
iv) boot img, 고객 disk img 생성
v) 고객 disk IMG -> 고객 디스크 복사.



i) 192.168.9.36 서버 ISCSI Client 설정.
- BIOS boot mode ISCSI.
- 모든 환경은 Legacy 모드로 변경 UFEI, DAUL은 안씀.
- 부팅 중 Ctrl + D 눌러서 ISCSI mode로 진입
- IQN 정보, ISCSI IP, Target Server IP 설정
( iqn은 Target 서버와 정보를 공유하기 위한 client 고유 이름 값.)
ex)

  • 맨위 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)

저장 후 부팅중 ISCSI로 연결을 시도 하는 창이 나오면 정상


저장 후 esc 로 bios 를 나오면 자동으루 부팅 진행.




본 TEST 에서는 iqn을  iqn:192.168.9.36 으로 설정.


  • 설정이 완료 되면 위 사진 처럼 설정 내용이 확인 되고, iscsi 스토리지에서 타겟 및 디스크 할 당을 하지 않았기 때문에 디스크가 없다고 나옴.

  • 추후 문제 발생시 해당 화면 및 iscsi rom bios 에서 설정 내용등을 확인 하여 트러블슈팅 진행


ii) 192.168.9.35 서버를 ISCSI 서버 구축.

ISCSI 스토리지 설치

mkdir /ISCSI_STORAGE

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 파일시스템으로 포맷해서 사용 ############


  1. 최신 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



tgtimg --op new --device-type disk --size=10240M --type=disk --file=/ISCSI_STORAGE/service/boot_test.img
(ISCSI IMG로 사용할 파일 생성)

init 6

iii) ISCSI 서버에서 boot img 생성 후 192.168.9.36 서버와 연결.

1. Target 연결
2. Lun 연결
3. ACL 허용.


1.

# 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에서는 유일 값으로만 기입하면 상관 없다.

2.

# 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로 다이렉트로 연결 하여 사용 가능합니다


3.

# 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


위 와 같은 방식으로 1~3 번까지 정상적으로 명령어 삽입이 이루어 졌다면
#tgt-admin -s 로 확인이 가능 하다.

# tgt-admin -s
Target 1: iqn:192.168.9.36
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
        I_T nexus: 72
            Initiator: iqn:192.168.9.36
            Connection: 0
                IP Address: 192.168.9.36
    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
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 4295 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: rdwr
            Backing store path: /ISCSI_STORAGE/service/boot_test.img
            Backing store flags: 
    Account information:
    ACL information:
        192.168.9.36


** 위 타겟 연결 명령어는 저 3가지 명령어가 가장 기본적인 구성 명령어 입니다. 3가지중 한가지라도 입력 되지 않으면 iscsi 는 연결되지 않습니다. 


이렇게 정상적으로 나왔을때 192.168.9.36번 서버를 부팅해서 ISCSI 연결이 되었을때를
그림으로 간략하게 나타내면 아래와 같음.


tgtimg --op new --device-type disk --size=10240M --type=disk --file=/ISCSI_STORAGE/service/boot_test.img

- ii) 항목에서 위 명령어로 10G 짜리 img를 생성했기 때문에 현재 상태는 10G 짜리 빈 disk가 장착이 된 상태와 같음

그럼 이제 디스크가 생겼으니 OS를 설치를 하면 됨.

본 Test 에서는 4G disk_img에 bootOS 1개
10G disk_img에 고객 ServiceOS 1개를 설치하여 Test를 진행 예정


※ Target 관련 명령어 

*[ 타겟 백업 ]

# 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
ISCSI Target 관련 명령어 출처 
- https://hoguinside.blogspot.com/2018/01/iscsi-iscsi-target.html




iv) boot img 그리고 고객 disk img OS 설치
ISCSI를 이용하여 자동화 OS설치를 하기 위해서는 boot 전용 OS img와 실제로 고객이 사용할 disk img 2개가 필요하다.
boot.img 는 4G로 파일을 생성하여 CentOS 6.4 또는 6.7을 설치를 진행하고
고객 Disk img에는 10G로 파일을 생성하여 각각의 OS를 설치하여 원본파일을 만들고 추 후 이미지를 수정 한다.


* iii) 항목까지 이상이 없었으면 iscsi Target 연결은 정상적으로 잘 진행되었다고 판단할 수 있다.
다음 Test를 이어나가기 위해서 192.168.9.36 서버를 종료하고 Target 을 제거한뒤 깔끔한 상태에서
다시 Test를 진행 한다. 

boot img를 만들고 고객 OS를 설치하는 글은 다음 포스팅 에서 이어서 작성 하겠습니다.


이전글 참고 :  http://heartbleed.tistory.com/114 [HeartBleed]