웹사이트 검색

Ubuntu 18.04 LTS에서 iSCSI 스토리지 서버를 설정하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • Ubuntu 20.04(Focal Fossa)
  • Ubuntu 18.04(Bionic Beaver)

이 페이지에서

  1. 요구 사항\n
  2. 시작하기\n
  3. iSCSI 대상 설치
  4. iSCSI 대상 구성
  5. iSCSI 초기자 설치 및 구성

iSCSI는 (Internet Small Computer System Interface)의 약자로 온라인 스토리지 관리에 사용할 수 있는 SAN(Storage Area Network) 프로토콜입니다. TCP/IP 네트워크를 통해 SCSI 명령을 전달하여 스토리지 장치에 대한 블록 수준 액세스를 제공하는 IP 기반 스토리지 네트워킹 표준입니다.

iSCSI는 두 가지 구성 요소 iSCSI 대상과 iSCSI 초기자로 구성됩니다. iSCSI 대상은 공유 스토리지에 대한 액세스를 제공하는 iSCSI 서버의 서비스이고 iSCSI 초기자는 대상에 연결하고 공유 스토리지에 액세스하는 iSCSI 클라이언트입니다.

이 자습서에서는 Ubuntu 18.04 서버에서 iSCSI 대상 및 iSCSI 초기자를 설정하는 방법을 보여줍니다.

요구 사항

  • 2GB 외장 HDD가 장착된 iSCSI 대상용 최신 Ubuntu 18.04 서버.
  • iSCSI 이니시에이터용 새 Ubuntu 18.04 서버.
  • 고정 IP 주소 192.168.0.103은 iSCSI 대상에 구성되고 192.168.0.102는 iSCSI 초기자에 구성됩니다.
  • 루트 암호는 두 서버 모두에서 구성됩니다.\n

시작하기

시작하기 전에 두 서버를 모두 최신 버전으로 업데이트해야 합니다. 두 $에서 다음 명령을 실행하여 업데이트할 수 있습니다.

apt-get update -y
apt-get upgrade -y

두 서버가 모두 업데이트되면 다시 시작하여 변경 사항을 적용합니다.

iSCSI 대상 설치

먼저 iSCSI 대상 서버에 대상 프레임워크(TGT) 패키지를 설치해야 합니다. 다음 명령으로 설치할 수 있습니다.

apt-get install tgt -y

TGT가 설치되면 다음 명령을 실행하여 TGT의 상태를 확인합니다.

systemctl status tgt

다음 출력이 표시되어야 합니다.

? tgt.service - (i)SCSI target daemon
   Loaded: loaded (/lib/systemd/system/tgt.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-11-08 07:40:28 UTC; 27s ago
     Docs: man:tgtd(8)
 Main PID: 2343 (tgtd)
   Status: "Starting event loop..."
    Tasks: 1
   CGroup: /system.slice/tgt.service
           ??2343 /usr/sbin/tgtd -f

Nov 08 07:40:28 ubuntu systemd[1]: Starting (i)SCSI target daemon...
Nov 08 07:40:28 ubuntu tgtd[2343]: tgtd: iser_ib_init(3431) Failed to initialize RDMA; load kernel modules?
Nov 08 07:40:28 ubuntu tgtd[2343]: tgtd: work_timer_start(146) use timer_fd based scheduler
Nov 08 07:40:28 ubuntu tgtd[2343]: tgtd: bs_init(387) use signalfd notification
Nov 08 07:40:28 ubuntu systemd[1]: Started (i)SCSI target daemon.

완료되면 다음 단계로 진행할 수 있습니다.

iSCSI 대상 구성

다음으로 iSCSI 서버에 LUN(Logical Unit Number) 장치를 생성해야 합니다. LUN은 초기자가 연결하여 나중에 사용할 백엔드 스토리지 장치입니다.

/etc/tgt/conf.d 디렉토리 내에 구성 파일을 생성하여 이를 수행할 수 있습니다.

nano /etc/tgt/conf.d/iscsi.conf

다음 줄을 추가합니다.

<target iqn.2019-11.example.com:lun1>
     # Provided device as an iSCSI target
     backing-store /dev/sdb1                             
     initiator-address 192.168.0.102 
    incominguser iscsi-user password
     outgoinguser iscsi-target secretpass
</target>

완료되면 파일을 저장하고 닫습니다. 그런 다음 TGT 서비스를 다시 시작하여 구성 변경 사항을 적용합니다.

systemctl restart tgt

다음은 각 매개변수에 대한 간략한 설명입니다.

target : 특정 대상의 이름입니다.

backing-store : 이 옵션은 초기자가 사용할 스토리지 디스크를 지정합니다.

initiator-address : 개시자의 IP 주소입니다.

들어오는 사용자 : LUN을 보호하기 위해 들어오는 사용자 이름/암호입니다.

outgoinguser : 상호 CHAP 인증을 위한 발신 사용자 이름/비밀번호입니다.

TGT 서비스를 다시 시작한 후 다음 명령을 사용하여 iSCSI 대상 서버를 확인하십시오.

tgtadm --mode target --op show

iSCSI 대상이 사용 가능한 상태인지 확인해야 합니다.

Target 1: iqn.2019-11.example.com:lun1
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    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
            SWP: No
            Thin-provisioning: No
            Backing store type: null
            Backing store path: None
            Backing store flags: 
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 2146 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            SWP: No
            Thin-provisioning: No
            Backing store type: rdwr
            Backing store path: /dev/sdb1
            Backing store flags: 
    Account information:
        iscsi-user
        iscsi-target (outgoing)
    ACL information:
        192.168.0.102

iSCSI 초기자 설치 및 구성

다음으로 iSCSI 초기자 서버에 iSCSI 초기자 패키지를 설치해야 합니다. 다음 명령으로 설치할 수 있습니다.

apt-get install open-iscsi -y

설치가 완료되면 iSCSI 대상 서버에 대해 대상 검색을 실행하여 공유 대상을 찾으십시오.

iscsiadm -m discovery -t st -p 192.168.0.103

다음 출력에 사용 가능한 대상이 표시되어야 합니다.

192.168.0.103:3260,1 iqn.2019-11.example.com:lun1

위의 명령은 또한 LUN 정보가 있는 두 개의 파일을 생성합니다. 다음 명령으로 볼 수 있습니다.

ls -l /etc/iscsi/nodes/iqn.2019-11.example.com\:lun1/192.168.0.103\,3260\,1/ /etc/iscsi/send_targets/192.168.0.103,3260/

다음 파일이 표시됩니다.

/etc/iscsi/nodes/iqn.2019-11.example.com:lun1/192.168.0.103,3260,1/:
total 4
-rw------- 1 root root 1840 Nov  8 13:17 default

/etc/iscsi/send_targets/192.168.0.103,3260/:
total 8
lrwxrwxrwx 1 root root  66 Nov  8 13:17 iqn.2019-11.example.com:lun1,192.168.0.103,3260,1,default -> /etc/iscsi/nodes/iqn.2019-11.example.com:lun1/192.168.0.103,3260,1
-rw------- 1 root root 547 Nov  8 13:17 st_config

다음으로 기본 파일을 편집하고 iSCSI 초기자에서 iSCSI 대상에 액세스하기 위해 iSCSI 대상에 구성한 CHAP 정보를 정의해야 합니다.

nano /etc/iscsi/nodes/iqn.2019-11.example.com\:lun1/192.168.0.103\,3260\,1/default

다음 줄을 추가/변경합니다.

node.session.auth.authmethod = CHAP  
node.session.auth.username = iscsi-user
node.session.auth.password = password          
node.session.auth.username_in = iscsi-target
node.session.auth.password_in = secretpass         
node.startup = automatic

완료되면 파일을 저장하고 닫습니다. 그런 다음 iSCSI 초기자 서비스를 다시 시작하여 구성 변경 사항을 적용합니다.

systemctl restart open-iscsi

다음 출력이 표시되어야 합니다.

 * Unmounting iscsi-backed filesystems                                                                                                  [ OK ] 
 * Disconnecting iSCSI targets                                                                                                                 iscsiadm: No matching sessions found
                                                                                                                                        [ OK ]
 * Stopping iSCSI initiator service                                                                                                     [ OK ] 
 * Starting iSCSI initiator service iscsid                                                                                              [ OK ] 
 * Setting up iSCSI targets                                                                                                                    
Logging in to [iface: default, target: iqn.2019-11.example.com:lun1, portal: 192.168.0.103,3260] (multiple)
Login to [iface: default, target: iqn.2019-11.example.com:lun1, portal: 192.168.0.103,3260] successful.
                                                                                                                                        [ OK ]
 * Mounting network filesystems                                                                                                         [ OK ] 

이제 다음 명령을 사용하여 iSCSI 대상에서 공유된 스토리지 디스크를 확인할 수 있습니다.

lsblk

이제 스토리지 디스크가 sdb로 초기자에 사용 가능한지 확인해야 합니다.

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 465.8G  0 disk 
??sda1   8:1    0  93.1G  0 part /
??sda2   8:2    0     1K  0 part 
??sda5   8:5    0 186.3G  0 part /home
??sda6   8:6    0 181.6G  0 part /Data
??sda7   8:7    0   4.8G  0 part [SWAP]
sdb      8:16   0     2G  0 disk 

다음 명령을 사용하여 iSCSI 연결을 확인할 수도 있습니다.

tgtadm --mode conn --op show --tid 1

다음 출력이 표시되어야 합니다.

Session: 1
    Connection: 0
        Initiator: iqn.1993-08.org.debian:01:2e1e2383de41
        IP Address: 192.168.0.102

다음으로 이 공유 장치(sdb)에 파일 시스템을 만들고 이 장치를 사용할 수 있도록 마운트해야 합니다.

먼저 다음 명령을 사용하여 공유 장치(sdb)에 파일 시스템을 만듭니다.

fdisk /dev/sdb

다음 출력이 표시되어야 합니다.

Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x06091fe8.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-4194303, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-4194303, default 4194303):

Created a new partition 1 of type 'Linux' and of size 2 GiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

그런 다음 다음 명령을 사용하여 이 파티션을 포맷합니다.

mkfs.ext4 /dev/sdb1

다음으로 다음 명령을 사용하여 이 파티션을 /mnt 디렉토리에 마운트합니다.

mount /dev/sdb1 /mnt

이제 다음 명령으로 마운트된 장치를 확인할 수 있습니다.

df -h

다음 출력이 표시되어야 합니다.

Filesystem      Size  Used Avail Use% Mounted on
udev            1.9G  4.0K  1.9G   1% /dev
tmpfs           384M  1.2M  383M   1% /run
/dev/sda1        92G   36G   51G  42% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
none            5.0M     0  5.0M   0% /run/lock
none            1.9G   54M  1.9G   3% /run/shm
none            100M   48K  100M   1% /run/user
/dev/sda5       184G   96G   79G  55% /home
/dev/sda6       179G   32G  138G  19% /Data
/dev/sdb1       2.0G  3.0M  1.9G   1% /mnt

축하합니다! iSCSI 대상 서버를 성공적으로 설치하고 iSCSI 초기자에서 연결했습니다. 이제 이 공유 iSCSI 장치를 일반 연결된 디스크로 사용할 수 있습니다.