Rocky Linux 9 에서 iSCSI 서비스 구축하기

리눅스/OS 일반|2023. 6. 2. 14:10
반응형

iSCSI 는 서버 간에 SCSI 명령을 TCP/IP 네트워크를 통해 전송하기 위한 프로토콜입니다. 이를 통해 원격 스토리지 장치에 접근하여 데이터를 전송하고 저장할 수 있습니다. iSCSI는 LAN 또는 WAN 을 통해 스토리지 리소스를 공유하고, 데이터 센터에서 스토리지 자원을 효율적으로 활용할 수 있도록 도와줍니다. iscsi-initiator (client) 와 target (server or storage) 간의 설정을 통해 iSCSI 를 사용하여 스토리지를 관리하고 데이터를 전송할 수 있습니다.

본 매뉴얼은 Rocky Linux 9 환경 (IP : 192.168.10.2) 에서 테스트 후 작성되었습니다.

 

 

1. iSCSI 서버 설치

 

1) targetcli 패키지 설치

targetcli 패키지를 설치합니다.

# dnf -y install targetcli

 

서버 부팅시 데몬이 자동으로 실행될 수 있도록 하고, 현재 세션에서도 데몬을 가동 시킵니다.

# systemctl enable target
# systemctl start target

 

이미지 파일이 저장될 디렉토리를 생성합니다.

볼륨이 큰 파티션이나 추가 장치를 마운트 해서 연결해도 됩니다.

# mkdir /storage

 

2) iSCSI target 만들기

targetcli 에 진입하면 IQN, LUN 등의 생성 및 관리 작업을 할 수 있습니다.

# targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.53
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.

/> 

 

targetcli 에 진입하면 위와 같이 Warning 메세지를 볼 수 있는데, 별도의 사용자 환경 설정 파일을 생성하지 않아서 로드하지 못했다는 경고 메세지 입니다. 이 메시지는 문제를 일으키지 않으며, targetcli 의 기능에 지장을 주지 않습니다.

다음과 같이 1G 짜리 저장소 파일 (taget) 을 생성합니다.

형식) backstores/fileio create <backstore_fileio_이름> <이미지파일_전체_경로> <용량> <기록 방식>

/> backstores/fileio create disk01 /storage/1GB_image.img 1G write_back=false

Created fileio disk01 with size 1073741824

 

[ 스토리지 개체 생성 방식 ]

위 예시에서 이미 fileio 타입으로 파일을 생성했지만, 스토리지 개체를 생성하는 방식에는 두가지가 있으며 차이점은 아래와 같습니다.
- backstores/fileio : 파일을 사용하여 스토리지를 제공합니다. 이 방법은 이미지 파일이나 기존 파일 시스템을 사용하여 스토리지를 만들 수 있습니다. 파일 시스템 이미지 파일을 사용하면 가상의 블록 디바이스가 생성되어 iSCSI 타겟에 연결될 수 있습니다.
- backstores/block : 블록 장치 (파티션) 를 사용하여 스토리지를 제공합니다. 실제 블록 장치 (예: 하드 디스크) 나 루프백 장치를 사용하여 스토리지를 만들 수 있습니다. 블록 백스토어를 사용하면 블록 디바이스가 직접 iSCSI 타겟에 연결될 수 있습니다.

 

[ 쓰기 방식 ]

- write_back=true : 데이터를 메모리에 캐시한 후 비동기적으로 디스크에 기록합니다. 이는 성능을 향상시킬 수 있는 방식이지만, 시스템이 갑작스럽게 종료되는 경우 데이터 손실의 위험성이 있습니다.
- write_back=false : 데이터를 직접 디스크에 기록하며, 동기적인 방식으로 수행됩니다. 데이터의 일관성과 안정성이 보장됩니다. 그러나 성능은 약간 저하될 수 있습니다.

 

3) IQN 설정

IQN 은 반드시 형식에 맞게 작성해주어야 합니다.

형식) iqn.<연도>-<월>.<도메인 이름 역순>:<고유 이름>

/> iscsi/ create iqn.2023-06.kr.sysdocu:target01

Created target iqn.2023-06.kr.sysdocu:target01.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.

 

4) LUN 만들기

LUN (Logical Unit Number) 은 iSCSI target 에 연결된 논리적인 디스크 단위입니다.

LUN 을 만들기 위해 다음과 같이 명령을 실행합니다.

/> iscsi/iqn.2023-06.kr.sysdocu:target01/tpg1/luns create /backstores/fileio/disk01

Created LUN 0.

 

위 명령어는 target01 이라는 IQN 을 가진 target 의 TPG (Target Portal Group) 1 에 LUN 을 생성하고, 해당 LUN 을 /backstores/fileio/disk01 에 연결한다는 의미입니다.

 

5) IQN 의 ACL 생성

IQN ACL 을 생성하여 iSCSI 대상에 대한 액세스를 허용할 IQN 식별자를 명시적으로 지정합니다.

/> iscsi/iqn.2023-06.kr.sysdocu:target01/tpg1/acls create iqn.2023-06.kr.sysdocu:initiator01
Created Node ACL for iqn.2023-06.kr.sysdocu:initiator01
Created mapped LUN 0.

 

6) 계정 생성

target 에 계정을 생성하여 접근을 강화 할 수 있습니다.

본 항목을 건너뛰어도 Client 에서 마운트 가능하지만, Openshift 등 필요로 하는 곳이 있습니다.

계정 생성을 위해 target 의 initiator 로 이동합니다.

/> cd iscsi/iqn.2023-06.kr.sysdocu:target01/tpg1/acls/iqn.2023-06.kr.sysdocu:initiator01/

 

계정과 패스워드를 설정합니다.

/iscsi/iqn.20...u:initiator01> set auth userid=sysdocu
Parameter userid is now 'sysdocu'.
/iscsi/iqn.20...u:initiator01> set auth password=12345678
Parameter password is now '12345678'.

 

설정된 정보를 확인합니다.

/iscsi/iqn.20...u:initiator01> info
chap_password: 12345678
chap_userid: sysdocu
wwns:
iqn.2023-06.kr.sysdocu:initiator01

 

7) 정보 확인 및 저장

다음 명령어를 사용하여 생성한 IQN 과 LUN 정보를 확인할 수 있습니다.

/> ls iscsi/iqn.2023-06.kr.sysdocu:target01/tpg1/luns
o- luns .................................................................................................................. [LUNs: 1]
  o- lun0 .............................................................. [fileio/disk01 (/storage/1GB_image.img) (default_tg_pt_gp)]

 

그리고 exit 명령을 이용해 현재 상태를 저장하고 targetcli 를 빠져나갈 수 있습니다.

/> exit
Global pref auto_save_on_exit=true
Configuration saved to /etc/target/saveconfig.json

 

 

2. Client 에서 마운트 하기

 

1) client 패키지 설치

# yum install iscsi-initiator-utils  // CentOS

# apt-get install open-iscsi         // Ubuntu

 

2) iSCSI 시작

아래 파일에 IQN ACL 이름을 작성합니다.

# vi /etc/iscsi/initiatorname.iscsi

InitiatorName=iqn.2023-06.kr.sysdocu:initiator01

 

iscsi 와 iscsid 데몬이 시스템 부팅시 자동 구동되게 설정하고 현재 세션에서도 구동 합니다.

# systemctl enable iscsi

# systemctl enable iscsid

# systemctl start iscsi

# systemctl start iscsid

 

추후에 /etc/iscsi/initiatorname.iscsi 파일이 변경된 경우 iscsid 데몬을 재시작 해주어야 합니다.

 

3) Target 검색 및 연결

연결할 iSCSI Target 을 검색합니다.

# iscsiadm -m discovery -t st -p 192.168.10.2
192.168.10.2:3260,1 iqn.2023-06.kr.sysdocu:target01

 

iSCSI 장치를 연결합니다.

# iscsiadm -m node -T iqn.2023-06.kr.sysdocu:target01 -p 192.168.10.2:3260 -l

 

연결된 장치를 확인합니다.

# fdisk -l

...

Disk /dev/sda: 1 GiB, 1073741824 bytes, 2097152 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 8388608 bytes

 

4) 해제 방법

사용을 하지 않을때 해제하는 방법은 아래와 같습니다.

연결 명령 마지막 옵션 l 을 u 로만 바꾸면 됩니다.

# iscsiadm -m node -T iqn.2023-06.kr.sysdocu:target01 -p 192.168.10.2:3260 -u

 

반응형

댓글()