기술 가이드

E. iSCSI 개요 및 구성

5 min read 스토리지 업데이트됨 19 Oct 2025
iSCSI 서버 설치 및 구성 가이드
iSCSI 서버 설치 및 구성 가이드

개요

iSCSI는 기존 네트워크 인프라를 통해 블록 스토리지를 공유할 수 있게 해 주는 Storage Area Network(SAN) 프로토콜입니다. 이 글에서는 SourceForge의 iscsitarget(iet)을 사용해 물리 호스트에서 LUN을 제공하고, 여러 게스트(또는 서버)가 이를 공유해서 클러스터 환경을 테스트하는 방법을 소개합니다.

정의: LUN — 논리 유닛 번호(Logical Unit Number). 블록 디바이스를 식별하는 단위입니다.

1. iSCSI 서버 설치 및 구성

1.a iscsitarget 애플리케이션 tarball 컴파일

이 작업은 물리 호스트에서 수행해야 합니다.

  • SourceForge에서 tarball을 받아 /usr/local/src에 둡니다.
  • /usr/local/src로 이동:
cd /usr/local/src
  • 파일을 압축 해제하고 디렉터리로 이동:
tar xvf iscsitarget-0.4.16.tar.gz
cd iscsitarget-0.4.16
  • 빌드 및 설치:
make
make install

주의: 빌드 시 필요한 개발 툴(예: gcc, make, kernel-headers 등)이 설치되어 있어야 합니다.

1.b ietd.conf 예제 및 설명

아래는 제가 사용한 /etc/ietd.conf의 예시로, 물리 호스트의 디스크(또는 논리 볼륨)를 게스트에 할당하기 위한 LUN 정의를 포함합니다. (실제 파일은 더 많은 항목이 있을 수 있으며, 여기서는 주요 항목만 발췌했습니다.)

#/etc/ietd.conf
# NOTE: the config files has more entries than what i'm showing here.
# but i've commented out the original entries and made the following
Target iqn.2008-07.NODE00:LUN01.NODE00
   MaxConnections         2
   Lun 1 Path=/dev/Virtual00VG/lvLUN01,Type=fileio
   Alias LUN01
Target iqn.2008-07.NODE00:LUN02.NODE00
   MaxConnections         2
   Lun 2 Path=/dev/Virtual00VG/lvLUN02,Type=fileio
   Alias LUN02
# end of ietd.conf

설명 요약:

  • Target: iSCSI 타겟의 IQN(식별자)을 정의합니다.
  • MaxConnections: 동시에 허용할 연결 수.
  • Lun N Path=…: 호스트에서 제공할 블록 디바이스(논리 볼륨, 파일, 파티션 등)의 경로. 필요한 경우 Type=fileio 또는 Type=block을 사용합니다.
  • Alias: 사람이 읽기 쉬운 별칭.

참고: 제 물리 호스트에서는 각 50G 크기의 논리 볼륨 두 개를 만들었습니다. 파일이나 파티션을 사용할 경우 Path 항목만 변경하면 됩니다.

1.c 접근 제어(ACL)

iscsitarget는 /etc/initiators.allow 및 /etc/initiators.deny 파일을 사용하며, hosts.allow/deny와 유사하게 동작합니다. 제 예제에서는 node01, node02가 앞서 정의한 두 LUN에 접근하도록 허용했습니다.

#/etc/initiators.allow
#this should correspond to the definition in your /etc/ietd.conf
iqn.2008-07.NODE00:LUN01.NODE00 192.168.100.10, 192.168.100.20
iqn.2008-07.NODE00:LUN02.NODE00 192.168.100.10, 192.168.100.20
# endof initiators.allow

서비스 시작 및 부팅 시 자동 시작 등록:

service iscsi-target start

부팅 시 자동 시작 설정:

chkconfig --add iscsi-target
chkconfig iscsi-target on
chkconfig --list iscsi-target

출력 예시:

iscsi-target 0:off 1:off 2:on 3:on 4:on 5:on 6:off

중요: production 환경에서는 방화벽, 네트워크 분리, 인증(CHAP) 등 추가 보안 조치를 반드시 적용해야 합니다.

2. 클라이언트(이니시에이터) 측 설정

클라이언트에는 iscsi-initiator-utils 패키지(예: iscsi-initiator-utils-6.2.0.865-0.8.el5)가 설치되어 있어야 합니다.

2.a 이니시에이터 설정

  • /etc/iscsi/initiatorname.iscsi 파일을 편집해 InitiatorName을 정의합니다.

제 예시 파일:

#/etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2008-07.NODE00:LUN01.NODE00
InitiatorName=iqn.2008-07.NODE00:LUN02.NODE00
# end of #/etc/iscsi/initiatorname.iscsi

참고: 여러 InitiatorName 항목을 나란히 두는 대신, 일반적으로 각 호스트별 하나의 InitiatorName을 설정합니다. 위 예시는 구성 상의 연관을 보기 쉽게 나열한 것입니다.

  • iscsid 서비스 시작 및 LUN 탐색(discovery):
service iscsid start

서비스 시작 메시지 예시:

Turning off network shutdown. Starting iSCSI daemon: [ OK ]

타겟 검색:

iscsiadm -m discovery -t st -p node00

출력 예시:

192.168.222.1:3260,1 iqn.2008-07.NODE00:LUN01.NODE00
192.168.222.1:3260,1 iqn.2008-07.NODE00:LUN02.NODE00
  • iscsi 서비스 시작:
service iscsi start

시작 후 출력 예시(로그):

    iscsid (pid 964 963) is running...
    Setting up iSCSI targets: Login session [iface: default, target: \

    iqn.2008-07.NODE00:LUN02.NODE00, portal: 192.168.222.1,3260]
    Login session [iface: default, target: iqn.2008-07.NODE00:LUN01.\
    NODE00, portal: 192.168.222.1,3260] [  OK  ]
  • dmesg 로그에서 디스크 인식 확인:
dmesg

출력 예시 발췌:

        scsi0 : iSCSI Initiator over TCP/IP
         Vendor: IET       Model: VIRTUAL-DISK      Rev: 0
         Type:   Direct-Access                      ANSI SCSI revision: 04
        scsi 0:0:0:2: Attached scsi generic sg0 type 0
        SCSI device sda: 104857600 512-byte hdwr sectors (53687 MB)
        ...
        SCSI device sdb: 104857600 512-byte hdwr sectors (53687 MB)

위 예시에서는 sda, sdb가 각각 약 53.6 GB로 잡혔습니다(환경에 따라 값이 다릅니다).

  • fdisk로 디스크 목록 확인:
fdisk -l

출력 예시 발췌:

        Disk /dev/sda: 53.6 GB, 53687091200 bytes
        Disk /dev/sdb: 53.6 GB, 53687091200 bytes

이후 동일한 절차를 node02에서도 반복하여 두 노드가 동일한 LUN을 볼 수 있게 합니다. 이렇게 준비한 iSCSI LUN을 사용해 두 노드 클러스터(예: Oracle RAC 테스트, 공유 ASM, OCFS2 등)를 구성할 수 있습니다.

중요한 주의사항

  • 이 구성은 학습 및 테스트 목적으로 적합합니다. 실제 운영 환경에서는 성능, 가용성(데이터 경합), 동시접근의 잠금/파일시스템 지원 등을 검토해야 하며, 이 문서의 구성만으로는 운영 환경 사용을 권장하지 않습니다.
  • 동일 LUN에 다수의 노드가 직접 블록 장치를 동시에 마운트하려면 클러스터 공용 파일시스템(OCFS2, GFS2 등)이나 클러스터 파일시스템용 락 매커니즘이 필요합니다.

부가 가치 섹션

언제 이 방법이 실패하거나 부적합한가

  • 네트워크 지연(latency)이 높거나 불안정할 때: iSCSI는 TCP 기반이므로 지연 및 패킷 손실에 민감합니다.
  • 동시 쓰기 시 데이터 손상 위험: 여러 노드가 동일 블록을 직접 사용하면 파일시스템 손상 가능성이 높습니다(공유 파일시스템 미사용 시).
  • 성능 요구가 매우 높은 프로덕션 환경: 로컬 RAID나 FC(Fibre Channel)가 더 적합할 수 있습니다.

대안 접근법

  • 로컬 디스크를 사용한 테스트(VM 내부 가상 디스크) — 설정이 단순함.
  • NFS를 이용한 파일 레벨 공유 — 블록 수준 제어가 필요 없고 운영이 쉬움.
  • 상용/전문 SAN(FC) 또는 iSCSI SAN Appliance — 성능·가용성·관리 도구 제공.

간단한 방법론(작업 절차)

  1. 물리 호스트에서 LUN(파일/파티션/논리볼륨) 준비
  2. iscsitarget 빌드/설치
  3. /etc/ietd.conf에 타겟 및 LUN 정의
  4. initiators.allow에 접근 허용 목록 등록
  5. iscsi-target 서비스 시작 및 자동 등록
  6. 각 클라이언트에서 initiator 설정, discovery, 로그인
  7. dmesg/fdisk로 디스크 인식 확인
  8. 클러스터 파일시스템 및 테스트

역할별 체크리스트

  • 스토리지 관리자:
    • LUN 용량/크기 설계
    • ietd.conf에서 올바른 Path 및 Type 설정
    • ACL(initiators.allow/deny) 검토
  • 네트워크 관리자:
    • iSCSI 전용 네트워크 분리(가능하면 VLAN)
    • 방화벽 포트(3260) 정책 확인
  • 시스템 관리자(클라이언트):
    • iscsi-initiator-utils 설치
    • initiatorname.iscsi 설정
    • 서비스 시작 및 로그 확인

보안 강화 팁

  • CHAP 인증을 활성화하여 이니시에이터 인증을 사용하세요.
  • iSCSI 트래픽을 전용 네트워크 또는 VLAN으로 분리하세요.
  • 방화벽으로 포트 3260 접근을 제한하고, 관리 네트워크만 허용하세요.
  • initiators.allow/deny 파일을 통해 허용된 IQN만 접근하도록 제한하세요.

1줄 용어집

  • iSCSI: 네트워크를 통한 블록 스토리지 전송 프로토콜
  • IQN: iSCSI Qualified Name, 타겟/이니시에이터 식별자
  • LUN: Logical Unit Number, 블록 장치 단위

테스트 케이스(간단한 수락 기준)

  • iscsitarget 서비스가 정상적으로 시작된다.
  • 클라이언트에서 iscsiadm discovery로 타겟이 발견된다.
  • 클라이언트의 dmesg/fdisk 출력에 예상한 디바이스(sda/sdb)가 표시된다.
  • initiators.allow에 등록되지 않은 호스트는 접속이 거부된다.

결론

이 방식은 추가 하드웨어 없이도 클러스터링과 공유 스토리지의 개념을 학습하고 실습할 수 있게 해 줍니다. 다만, 이 구성은 실무 운영 환경의 모든 요구사항(보안, 성능, 가용성)을 충족하지 않으므로, 개념 학습 후에는 실제 물리적 장비 또는 상용 솔루션으로 이전하는 것이 필요합니다.

추가 자료

요약:

  • iscsitarget을 통해 호스트에서 LUN을 제공하고, 클라이언트는 iscsiadm로 이를 발견해 블록 디바이스로 사용한다.
  • ACL과 CHAP 등 보안 조치를 반드시 고려해야 하며, 동일 LUN 동시 접근 시에는 클러스터 파일시스템과 동기화 매커니즘을 사용해야 한다.
공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

Ubuntu 12.04에서 X2Go에 WiKID 2단계 인증 설정
원격 데스크톱 보안

Ubuntu 12.04에서 X2Go에 WiKID 2단계 인증 설정

WikiLeaks ‘Grasshopper’ 유출 — CIA의 Windows 해킹 도구
보안

WikiLeaks ‘Grasshopper’ 유출 — CIA의 Windows 해킹 도구

Windows 10 기본 위치 설정 방법
Windows 설정

Windows 10 기본 위치 설정 방법

브라우저에서 파워포인트 열기: 온라인 뷰어 비교
생산성

브라우저에서 파워포인트 열기: 온라인 뷰어 비교

Windows에서 명령 프롬프트 관리자 권한 실행 방법
Windows 팁

Windows에서 명령 프롬프트 관리자 권한 실행 방법

Click-to-Run 높은 CPU·메모리 사용 문제 해결
Windows 문제해결

Click-to-Run 높은 CPU·메모리 사용 문제 해결