웹사이트 검색

Debian 9에서 iSCSI 서버(대상) 및 클라이언트(초기자)를 설정하는 방법


데이터 센터 세계에서는 대용량 SAN(SAN)이 최소 표준이 되었습니다. 클라우드 제공업체와 가상화가 기술 세계에 지속적으로 큰 영향을 미치면서 더 많은 SAN 스토리지 공간에 대한 필요성이 분명해졌습니다.

대부분의 SAN 하드웨어는 최소한의 컨트롤러(또는 컨트롤러 세트)와 대량의 데이터 가용성 및 무결성을 지원하도록 구성된 대용량 드라이브 모음으로 구성됩니다.

이러한 전문 제품 중 상당수는 Netapp, Dell Equalogic, HP Storageworks 또는 EMC와 같은 유명 공급업체에서 제조되며 대기업만이 감당할 수 있는 가격표가 붙어 있습니다.

현실적으로 이러한 장치는 네트워크로 연결된 클라이언트에 하드 디스크 공간을 제공하는 컨트롤러가 있는 대형 하드 디스크 어레이에 지나지 않습니다. 이 기능이나 유사한 기능을 상당히 저렴한 가격으로 제공하는 많은 기술이 수년에 걸쳐 존재해 왔습니다.

Debian GNU/Linux 배포판은 데비안 시스템이 아주 적은 비용으로 기업 수준 SAN 저장 장치의 목적을 달성할 수 있도록 하는 패키지를 제공합니다! 이를 통해 일반 가정 사용자나 대규모 데이터 센터의 모든 사람이 벤더 독점 솔루션에 막대한 비용을 들이지 않고도 SAN 스토리지의 이점을 얻을 수 있습니다.

이 기사에서는 인터넷 소형 컴퓨터 시스템 인터페이스 또는 줄여서 iSCSI라고 알려진 시스템을 사용하여 디스크 공간을 제공하기 위해 Debian 9(Stretch) 시스템을 설정하는 방법을 살펴보겠습니다. iSCSI는 다른 시스템에 블록(하드 드라이브) 저장소를 제공하기 위한 인터넷 프로토콜(IP) 기반 표준입니다. iSCSI는 클라이언트 서버 모델에서 작동하지만 클라이언트를 서버와 구별하기 위해 다른 이름을 사용합니다.

iSCSI 용어로 '디스크 공간'을 제공하는 서버는 iSCSI '대상'으로 알려져 있으며 요청하는 시스템은 /디스크 공간을 활용하는 것을 iSCSI '초기자'라고 합니다. 즉, '초기자'는 '대상'으로부터 블록 스토리지를 요청합니다.

환경설정

이 가이드는 간단한 iSCSI 서버(대상) 및 클라이언트(초기자) 모두와 관련된 기본 설정을 안내합니다. Debian 9(Stretch)를 실행 중입니다.


Debian iSCSI Target: 192.168.56.101/24
Storage: Contains two extra hard drives to be used as the storage in the iSCSI setup
Debian iSCSI Initiator: 192.168.56.102/24

네트워크는 아래와 같이 볼 수 있습니다.

Debian iSCSI 대상 구성

iSCSI 세계에서 대상초기자가 사용할 저장 장치가 포함된 호스트로 간주됩니다.

이 문서에서는 IP가 192.168.56.101인 서버가 대상으로 사용됩니다. 이 섹션의 모든 구성은 해당 호스트에서 수행됩니다.

첫 번째 단계는 데비안 시스템이 iSCSI 대상을 제공하는 데 필요한 패키지를 설치하는 것입니다. 이 소프트웨어 패키지는 Target Framework(TGT)로 알려져 있습니다.

이 가이드에 사용되는 다른 항목은 논리 볼륨(LV)과 같은 논리 볼륨 관리(LVM) 도구입니다. Strong>)은 iSCSI 대상의 스토리지 백업으로 사용됩니다.

두 패키지 모두 다음 명령을 사용하여 설치할 수 있습니다.


apt-get update
apt-get install tgt lvm2

패키지가 설치되면 LVM을 사용하여 iSCSI LUN으로 사용할 대상의 하드 디스크를 준비합니다. 첫 번째 명령은 LVM 설정에 포함할 디스크를 준비하는 데 사용됩니다. 다양한 시나리오에 맞게 필요에 따라 명령을 수정하십시오!


lsblk (Only used to confirm disks to be used in the LVM setup)
pvcreate /dev/sd{b,c}

위의 'pvcreate' 명령을 사용하여 디스크가 준비되면 이제 이러한 특정 디스크에서 볼륨 그룹을 생성할 차례입니다. 나중에 iSCSI 저장소 역할을 할 논리 볼륨을 생성하려면 볼륨 그룹이 필요합니다.

볼륨 그룹을 생성하려면 'vgcreate' 명령이 필요합니다.


vgcreate tecmint_iscsi /dev/sd{b,c}
vgs  (Only needed to confirm the creation of the volume group)

위 출력에서 시스템은 볼륨 그룹이 생성되었다고 응답하지만 'vgs' 명령을 사용하여 위에서 본 것처럼 항상 다시 확인하는 것이 좋습니다. 이 볼륨 그룹의 용량은 9.99GB에 불과합니다. 이는 특히 작은 볼륨 그룹이지만 더 큰 용량의 디스크에 대해서도 프로세스는 동일합니다!

다음 단계는 iSCSI 클라이언트(초기자)에 대한 디스크 역할을 할 논리 볼륨을 생성하는 것입니다. 이 예에서는 볼륨 그룹 전체가 사용되지만 반드시 필요한 것은 아닙니다.

논리 볼륨은 'lvcreate' 명령을 사용하여 생성됩니다.


lvcreate -l 100%FREE tecmint_lun1 tecmint_iscsi
lvs  (Simply used to confirm the creation of the logical volume)

위의 'lvcreate' 명령은 언뜻 보기에 약간 혼란스러울 수 있지만 분석 내용은 다음과 같습니다.

  • lvcreate – 논리 볼륨을 생성하는 데 사용되는 명령입니다.
  • -l 100%FREE – 볼륨 그룹의 여유 공간을 모두 사용하여 논리 볼륨을 생성합니다.
  • -n tecmint_lun1 – 생성할 논리 볼륨의 이름입니다.
  • tecmint_iscsi – 논리 볼륨을 생성할 볼륨 그룹의 이름입니다.

논리 볼륨이 생성되면 실제 LUN(논리 단위 번호)을 생성할 차례입니다. LUN초기자가 나중에 연결하고 사용할 저장 장치가 됩니다.

LUN을 만드는 것은 매우 간단하며 몇 단계만 거치면 됩니다. 첫 번째 단계는 구성 파일을 만드는 것입니다. 이 파일은 '/etc/tgt/conf.d' 디렉토리에 있으며 이 기사에서는 'TecMint_iscsi.conf'라고 합니다.

이 파일을 만들려면 텍스트 편집기를 사용하세요.


nano /etc/tgt/conf.d/TecMint_iscsi.conf

이 파일 내에서 이 LUN에 필요한 모든 구성 정보가 구성됩니다. 이 파일에 배치할 수 있는 옵션은 많지만 현재는 상호 Challenge Handshake 인증 프로토콜(CHAP)을 사용하는 기본 LUN이 구성됩니다.

LUN의 정의는 두 개의 'target' 문 사이에 존재합니다. 대상 명령문에 포함될 수 있는 더 많은 매개변수를 보려면 'man 5targets.conf'를 실행하여 'targets.conf' 파일에 대한 매뉴얼 페이지를 검토하세요.


<target iqn.2018-02.linux-console.net:lun1>
     # Provided device as an iSCSI target
     backing-store /dev/mapper/tecmint_iscsi-tecmint_lun1
     initiator-address 192.168.56.102
    incominguser tecmint-iscsi-user password
     outgoinguser debian-iscsi-target secretpass
</target>

위에서 많은 일이 일어나고 있습니다. 대부분의 경우 빠른 설명이 도움이 될 수 있습니다.

  • 첫 번째 줄은 특정 iSCSI LUN 구성을 시작합니다. 이 경우 'iqn.2018-02.linux-console.net:lun1' 라벨이 붙은 LUN입니다. 'iqn' 부분은 이것이 iSCSI 정규화된 이름임을 나타냅니다. '2018-02'은 임의로 선택한 날짜 조합입니다. 'linux-console.net'은 이 특정 LUN이 속한 도메인입니다. 마지막으로 'lun1'은 이 특정 대상의 이름으로 사용됩니다.
  • 위의 두 번째 줄은 주석을 나타냅니다. 주석은 대상 구성 파일에 존재할 수 있으며 '#' 기호가 앞에 와야 합니다.
  • 세 번째 줄은 개시자가 사용할 실제 저장 공간이 존재하는 위치입니다. 이 경우 스토리지 백업은 가이드 앞부분에서 생성된 논리 볼륨이 됩니다.
  • 네 번째 줄은 개시자로부터 예상되는 IP 주소입니다. 이는 필수 구성 항목은 아니지만 보안을 강화하는 데 도움이 될 수 있습니다.
  • 다섯 번째 줄은 수신되는 사용자 이름/비밀번호입니다. 위의 개시자 주소와 마찬가지로 이 매개변수도 필수는 아니지만 LUN을 보호하는 데 도움이 될 수 있습니다. 이 가이드에서는 iSCSI 상호 CHAP도 다루므로 이 매개변수가 필요합니다. 이 줄은 대상이 이 LUN에 연결하기 위해 개시자로부터 기대하는 사용자 이름과 비밀번호를 나타냅니다.
  • 여섯 번째 줄은 상호 CHAP 인증이 발생할 수 있도록 대상이 개시자에게 제공할 사용자 이름/비밀번호입니다. 일반적으로 이 매개변수는 필수가 아니지만 이 문서에서는 상호 CHAP 인증을 다루므로 이 매개변수가 필요합니다.
  • 마지막 줄은 대상 정의에 대한 닫는 문입니다. 키워드 타겟 앞에 있는 닫는 슬래시에 주의하세요!

LUN에 대한 적절한 구성을 입력한 후 변경 사항을 저장하고 텍스트 편집기를 종료합니다. nano를 사용하는 경우 ctrl+o를 눌러 저장한 다음 ctrl+x를 눌러 nano를 종료하세요.

구성 파일이 생성되면 tgt가 새로운 대상 및 관련 구성을 인식할 수 있도록 tgt 서비스를 다시 시작해야 합니다.

이는 다음 명령 중 하나를 사용하여 수행할 수 있으며 사용 중인 init 시스템에 따라 다릅니다.


service tgt restart  (For sysv init systems)
systemctl restart tgt  (For systemd init systems)

tgt가 다시 시작된 후에는 생성된 구성 파일에 따라 iSCSI 대상을 사용할 수 있는지 확인하는 것이 중요합니다.

이는 'tgtadm' 명령을 사용하여 수행할 수 있습니다.


tgtadm --mode target --op show   (This will show all targets)

이것으로 타겟 구성이 완료됩니다. 다음 섹션에서는 초기자 구성을 통해 작업합니다.

Debian iSCSI 초기자 구성

이전에 구성된 iSCSI 대상을 사용하는 다음 단계는 iSCSI 개시자를 구성하는 것입니다.

이 문서에서는 다른 Debian 9 시스템이 초기자로 사용되지만 iSCSI 프로토콜을 활용할 수 있는 모든 시스템은 이전에 구성된 대상에 연결할 수 있습니다. 여기에는 XenServer/ESXi와 같은 하이퍼바이저나 Red Hat, Debian, Ubuntu와 같은 기타 배포판이 포함될 수 있습니다.

Debian 초기자 프로세스의 첫 번째 단계는 iSCSI에 적합한 패키지를 설치하는 것입니다.


apt-get update
apt-get install open-iscsi

apt가 open-iscsi 패키지 구성을 완료하면 iSCSI 개시자 구성을 시작할 수 있습니다. 첫 번째 단계는 대상과 통신하여 준비된 대상에 대한 초기 구성 정보를 얻는 것입니다.


iscsiadm -m discovery -t st -p 192.168.56.101

이 명령이 실행되면 이 특정 호스트에 대해 이전에 구성한 lun 이름으로 응답합니다. 위 명령은 새로 검색된 LUN 정보에 대한 두 개의 파일도 생성합니다.

이제 이 iSCSI 대상초기자에서 실제로 액세스할 수 있도록 하려면 이 노드에 대해 생성된 파일에 CHAP 정보를 구성해야 합니다.

기술적으로 이 정보는 전체 시스템에 대해 전체적으로 설정될 수 있지만 호스트가 다른 자격 증명을 사용하여 다른 LUN에 연결하는 경우 해당 자격 증명을 특정 노드 구성 파일에 배치하면 문제를 완화할 수 있습니다.

노드 구성 파일은 '/etc/iscsi/nodes/' 디렉터리에 있으며 사용 가능한 LUN당 디렉터리가 있습니다. 이 기사의 경우(이름/IP 주소가 변경되면 경로가 변경된다는 점에 유의하세요)


/etc/iscsi/nodes/iqn.2018-02.linux-console.net\:lun1/192.168.56.101\,3260\,1/default

이 파일로 작업하려면 모든 텍스트 편집기를 사용할 수 있습니다.


nano /etc/iscsi/nodes/iqn.2018-02.linux-console.net\:lun1/192.168.56.101\,3260\,1/default

이 파일에는 이전에 'iscsiadm' 명령을 실행하는 동안 결정된 각 대상에 대해 이미 구성된 여러 옵션이 있습니다.

이 특정 Debian 대상/초기자 설정은 상호 CHAP를 사용하므로 몇 가지 추가 옵션을 변경하고 이 파일에 추가한 다음 iSCSI 대상에 로그인해야 합니다. 수행했습니다.

이 파일의 변경 사항은 다음과 같습니다.


node.session.auth.authmethod = CHAP                    #Enable CHAP Authentication
node.session.auth.username = tecmint-iscsi-user        #Target to Initiator authentication
node.session.auth.password = password                  #Target to Initiator authentication
node.session.auth.username_in = debian-iscsi-target    #Initiator to Target authentication
node.session.auth.password_in = secretpass             #Initiator to Target authentication

위 옵션을 사용하면 이 대상초기자에 인증할 수 있을 뿐만 아니라 초기자대상에 인증할 수 있습니다. >.

이 특정 파일에는 관리자의 기본 설정에 따라 변경해야 할 수 있는 또 다른 옵션이 있는데, 바로 'node.startup' 매개변수입니다.

이 가이드를 따르면 이 시점에서 'node.startup' 옵션이 '수동'으로 설정됩니다. 이는 바람직하지 않을 수 있습니다. 관리자가 시스템 시작 시 iSCSI 대상을 연결하려면 다음과 같이 '수동'을 '자동'으로 변경하세요.


node.startup = automatic

위와 같이 변경한 후 파일을 저장하고 종료합니다. 이 시점에서 새로운 변경 사항을 읽고 iSCSI 대상에 연결하려면 open-iscsi 개시자 서비스를 다시 시작해야 합니다.

이는 사용 중인 init 시스템에 따라 다음 명령 중 하나를 사용하여 수행할 수 있습니다.


service open-iscsi restart   (For sysv init systems)
systemctl restart open-iscsi (For systemd init systems)

위의 녹색 상자에서 iSCSI 초기자대상에 로그인할 수 있음을 확인하세요. iSCSI 대상초기자에서 실제로 사용 가능한지 추가로 확인하기 위해 'lsblk를 사용하여 시스템에서 사용 가능한 추가 디스크 드라이브를 확인할 수 있습니다. >' 명령을 실행하고 추가 드라이브에 대한 출력을 확인합니다.


lsblk

대상에 대한 연결을 확인하기 위해 초기자에서 사용할 수 있는 다른 명령은 'iscsiadm'입니다.


iscsiadm -m session

연결을 확인할 수 있는 마지막 장소는 'tgtadm' 명령을 사용하여 iSCSI 연결을 나열하는 대상 자체입니다.


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

이 시점부터 새로 연결된 iSCSI 장치는 일반적으로 연결된 디스크와 유사하게 사용할 수 있습니다! 파티셔닝, 파일 시스템 생성, 마운트 및/또는 영구 마운트는 모두 정상적으로 처리될 수 있습니다.

iSCSI 기기에 대해 주의해야 할 한 가지 큰 주의 사항은 iSCSI 대상초기자가 부팅할 때 필요한 중요한 파일 시스템이 포함되어 있다는 것입니다. 시스템이 계속 부팅되기 전에 iSCSI 장치가 연결되어 있는지 확인하려면 '/etc/fstab' 파일의 '_netdev' 항목을 사용하세요!