Rocky Linux 9 에서 iSCSI 서비스 구축하기
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
'리눅스 > OS 일반' 카테고리의 다른 글
리눅스 CLI 에서 Github 원격지 리포지토리 (repogitory) 소스코드 다운로드하기 (Public / Private) (0) | 2023.06.16 |
---|---|
CentOS 7 에서 GlusterFS 를 yum 으로 설치하기 (각종 구성 방법) (0) | 2023.06.07 |
curl 명령으로 telegram 메세지 보내기 (Bot Token, Chat ID 필요) (0) | 2023.04.26 |
Openssl 로 자체 서명 인증서 (SSL) 생성하기 (0) | 2023.04.11 |
- 로 시작하는 파일명 삭제하기 (0) | 2023.03.31 |