Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

25장. 온라인 스토리지 관리

운영 체제가 실행되는 동안 스토리지 장치를 추가, 제거 또는 재조정하는 것이 좋으며 재부팅하지 않는 것이 좋습니다. 이 장에서는 시스템이 실행되는 동안 Red Hat Enterprise Linux 7 호스트 시스템에서 스토리지 장치를 재구성하는 데 사용할 수 있는 절차를 간략하게 설명합니다. iSCSI 및 파이버 채널 스토리지 상호 연결을 다룹니다. 다른 상호 연결 유형이 나중에 추가될 수 있습니다.
이 장에서는 스토리지 장치 추가, 제거, 수정 및 모니터링에 중점을 둡니다. 파이버 채널 또는 iSCSI 프로토콜에 대해 자세히 설명하지 않습니다. 이러한 프로토콜에 대한 자세한 내용은 다른 설명서를 참조하십시오.
이 장에서는 다양한 sysfs 개체를 참조합니다. Red Hat은 sysfs 개체 이름 및 디렉터리 구조가 주요 Red Hat Enterprise Linux 릴리스에서 변경될 수 있음을 권장합니다. 업스트림 Linux 커널이 안정적인 내부 API를 제공하지 않기 때문입니다. 전송 가능한 방식으로 sysfs 개체를 참조하는 방법에 대한 지침은 지침은 커널 소스 트리의 /usr/share/doc/kernel-doc-버전/Documentation/sysfs-rules.txt 문서를 참조하십시오.
주의
온라인 스토리지 재구성은 신중하게 수행해야 합니다. 프로세스 중 시스템 오류 또는 중단으로 인해 예기치 않은 결과가 발생할 수 있습니다. Red Hat은 변경 작업 중에 가능한 최대로 시스템 부하를 줄일 것을 권장합니다. 이렇게 하면 구성 변경 중 하나에서 I/O 오류, 메모리 부족 오류 또는 유사한 오류가 발생할 가능성을 줄일 수 있습니다. 다음 섹션에서는 이에 대한 보다 구체적인 지침을 제공합니다.
또한 온라인 스토리지를 재구성하기 전에 모든 데이터를 백업할 것을 권장합니다. 

25.1. 대상 설정

Red Hat Enterprise Linux 7은 kernel 대상의 구성 파일을 직접 조작하지 않고도 Linux-IO Target의 설정을 보고 편집, 저장하기 위한 frontend 쉘을 사용합니다. 6 443 툴은 관리자가 파일, 볼륨, 로컬 SCSI 장치 또는 RAM 디스크에서 원격 시스템으로 지원하는 로컬 스토리지 리소스를 내보낼 수 있는 명령줄 인터페이스입니다. StatefulSet 툴에 는 트리 기반 레이아웃이 있으며 기본 제공 탭 완료가 포함되어 있으며 완전한 자동 완성 지원과 인라인 문서를 제공합니다.
6443의 계층 구조가 가능한 경우 간소화되었기 때문에 StatefulSet의 계층 구조가 커널 인터페이스와 정확히 일치하지 않는 경우가 있습니다.
중요
StatefulSet에서 변경한 사항이 영구적인 지 확인하려면 대상 서비스를 시작하고 활성화합니다.
# systemctl start target
# systemctl enable target

25.1.1. StatefulSet 설치 및 실행

IdP 설치하려면 다음을 사용합니다.
# yum install targetcli
대상 서비스를 시작합니다.
# systemctl start target
부팅 시 시작하도록 대상을 구성합니다.
# systemctl enable target
방화벽에서 포트 3260 을 열고 방화벽 구성을 다시 로드합니다.
# firewall-cmd --permanent --add-port=3260/tcp
Success
# firewall-cmd --reload
Success
6 443 명령을 사용한 다음, 트리 인터페이스의 레이아웃에 ls 명령을 사용합니다.
# targetcli
:
/> ls
o- /........................................[...]
  o- backstores.............................[...]
  | o- block.................[Storage Objects: 0]           
  | o- fileio................[Storage Objects: 0]       
  | o- pscsi.................[Storage Objects: 0]         
  | o- ramdisk...............[Storage Ojbects: 0]         
  o- iscsi...........................[Targets: 0]   
  o- loopback........................[Targets: 0]
참고
Red Hat Enterprise Linux 7.0에서 Bash에서 targetcli 명령을 사용하는 경우(예: IdP iscsi/ create ) 작동하지 않고 오류를 반환하지 않습니다. Red Hat Enterprise Linux 7.1부터 shell 스크립트가 있는 StatefulSet를 보다 유용하게 사용할 있도록 오류 상태 코드가 제공됩니다.

25.1.2. Backstore 생성

보조 저장소를 사용하면 로컬 시스템에 내보낸 LUN 데이터를 저장하는 다양한 방법을 지원할 수 있습니다. 스토리지 오브젝트를 생성하면 보조 저장소에서 사용하는 리소스를 정의합니다.
참고
Red Hat Enterprise Linux 6에서 'backing-store'라는 용어를 사용하여 생성된 매핑을 나타냅니다. 그러나 'backstores'를 사용할 수 있는 다양한 방법의 혼동을 방지하기 위해 Red Hat Enterprise Linux 7에서는 '스토리지 객체'라는 용어는 생성된 매핑을 나타내고 'backstores'는 다양한 유형의 백업 장치를 설명하는 데 사용됩니다.
LIO가 지원하는 보조 저장 장치는 다음과 같습니다.
FILEIO(Linux 파일 지원 스토리지)
FILEIO 스토리지 오브젝트는 write_back 또는 write_thru 작업을 지원할 수 있습니다. write_back 을 사용하면 로컬 파일 시스템 캐시가 활성화됩니다. 이로 인해 성능이 향상되지만 데이터 손실 위험이 증가합니다. write_thru 와 함께 write_back=false 를 사용하여 write_back 을 비활성화하는 것이 좋습니다.
fileio 스토리지 오브젝트를 생성하려면 /backstores/fileio create file_name file_size write_ back=false 명령을 실행합니다. 예를 들어 다음과 같습니다.
/> /backstores/fileio create file1 /tmp/disk1.img 200M write_back=false
Created fileio file1 with size 209715200
BLOCK(Linux BLOCK 장치)
블록 드라이버를 사용하면 /sys/block 에 표시되는 모든 블록 장치를 LIO와 함께 사용할 수 있습니다. 여기에는 물리 장치(예: HDD, SSD, CD, DVD) 및 논리 장치(예: 소프트웨어 또는 하드웨어 RAID 볼륨 또는 LVM 볼륨)가 포함됩니다.
참고
BLOCK 백 저장소는 일반적으로 최상의 성능을 제공합니다.
블록 장치를 사용하여 BLOCK backstore를 생성하려면 다음 명령을 사용합니다.
# fdisk /dev/vdb
Welcome to fdisk (util-linux 2.23.2).

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
Building a new DOS disklabel with disk identifier 0x39dc48fb.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): *Enter*
Using default response p
Partition number (1-4, default 1): *Enter*
First sector (2048-2097151, default 2048): *Enter*
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): +250M
Partition 1 of type Linux and of size 250 MiB is set

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
/> /backstores/block create name=block_backend dev=/dev/vdb
Generating a wwn serial.
Created block storage object block_backend using /dev/vdb.
참고
논리 볼륨에 BLOCK backstore를 생성할 수도 있습니다.
PSCSI(Linux 패스스루 SCSI 장치)
SCSI 에뮬레이션 없이 SCSI 명령을 직접 통과하고, /proc/scsi/scsi (예: SAS 하드 드라이브)에서 lsscsi와 함께 표시되는 기본 SCSI 장치가 포함된 스토리지 오브젝트를 보조 저장소로 구성할 수 있습니다. SCSI-3 이상은 이 하위 시스템에서 지원됩니다.
주의
PSCSI는 고급 사용자만 사용해야 합니다. Aysmmetric Logical Unit Assignment(ALUA) 또는 영구 예약 할당(예: VMware ESX 및 vSphere에서 사용하는 것과 같은 고급 SCSI 명령)은 일반적으로 장치 펌웨어에서 구현되지 않으며 오작동 또는 충돌을 일으킬 수 있습니다. 의심할 때, 대신 프로덕션 설정에 대한 BLOCK을 사용하십시오.
물리적 SCSI 장치에 대한 PSCSI 백 저장소를 생성하려면 이 예제에서 /dev/sr0 을 사용하는 TYPE_ROM 장치는 다음을 사용합니다.
/> backstores/pscsi/ create name=pscsi_backend dev=/dev/sr0
Generating a wwn serial.
Created pscsi storage object pscsi_backend using /dev/sr0
메모리 복사 RAM 디스크(Linux RAMDISK_MCP)
메모리 복사 RAM 디스크(램디스크)는 이니시에이터의 메모리 사본을 사용하여 전체 SCSI 에뮬레이션 및 개별 메모리 매핑이 있는 RAM 디스크를 제공합니다. 이는 멀티 세션 기능을 제공하며 프로덕션 목적으로 빠르고 휘발성 대용량 스토리지에 특히 유용합니다.
1GB RAM 디스크 백스토어를 생성하려면 다음 명령을 사용하십시오.
/> backstores/ramdisk/ create name=rd_backend size=1GB
Generating a wwn serial.
Created rd_mcp ramdisk rd_backend with size 1GB.

25.1.3. iSCSI 대상 생성

iSCSI 대상을 생성하려면 다음을 수행합니다.

절차 25.1. iSCSI 대상 생성

  1. 6443 실행합니다.
  2. iSCSI 구성 경로로 이동합니다.
    /> iscsi/
    참고
    cd 명령은 디렉토리를 변경하고 이동할 경로를 나열하는 것도 허용됩니다.
  3. 기본 대상 이름을 사용하여 iSCSI 대상을 만듭니다.
    /iscsi> create
    Created target
    iqn.2003-01.org.linux-iscsi.hostname.x8664:sn.78b473f296ff
    Created TPG1
    또는 지정된 이름을 사용하여 iSCSI 대상을 만듭니다.
    /iscsi > create iqn.2006-04.com.example:444
    Created target iqn.2006-04.com.example:444
    Created TPG1
  4. 대상이 ls 로 나열될 때 새로 생성된 대상이 표시되는지 확인합니다.
    /iscsi > ls
    o- iscsi.......................................[1 Target]
        o- iqn.2006-04.com.example:444................[1 TPG]
            o- tpg1...........................[enabled, auth]
                o- acls...............................[0 ACL]
                o- luns...............................[0 LUN]
                o- portals.........................[0 Portal]
    
참고
Red Hat Enterprise Linux 7.1부터 대상이 생성될 때마다 기본 포털도 생성됩니다.

25.1.4. iSCSI 포털 구성

iSCSI 포털을 구성하려면 먼저 iSCSI 대상을 만들고 TPG와 연결해야 합니다. 이 작업을 수행하는 방법에 대한 지침은 25.1.3절. “iSCSI 대상 생성” 을 참조하십시오.
참고
Red Hat Enterprise Linux 7.1부터 iSCSI 대상이 생성될 때 기본 포털도 생성됩니다. 이 포털은 기본 포트 번호(즉, 0.0.0.0:3260)가 있는 모든 IP 주소에서 수신 대기하도록 설정되어 있습니다. 이 항목을 제거하고 지정된 포털만 추가하려면 /iscsi/iqn-name/tpg1/portals delete ip_address=0.0.0.0 ip_port=3260 을 사용한 다음 필요한 정보를 사용하여 새 포털을 생성합니다.

절차 25.2. iSCSI 포털 생성

  1. TPG로 이동합니다.
    /iscsi> iqn.2006-04.example:444/tpg1/
  2. 포털을 생성하는 방법에는 기본 포털을 생성하거나 수신 대기할 IP 주소를 지정하는 포털을 생성하는 두 가지가 있습니다.
    기본 포털을 생성하면 기본 iSCSI 포트 3260을 사용하며 대상이 해당 포트의 모든 IP 주소에서 수신 대기할 수 있습니다.
    /iscsi/iqn.20...mple:444/tpg1> portals/ create
    Using default IP port 3260
    Binding to INADDR_Any (0.0.0.0)
    Created network portal 0.0.0.0:3260
    
    수신 대기할 IP 주소를 지정하는 포털을 생성하려면 다음 명령을 사용합니다.
    /iscsi/iqn.20...mple:444/tpg1> portals/ create 192.168.122.137
    Using default IP port 3260
    Created network portal 192.168.122.137:3260
    
  3. ls 명령을 사용하여 새로 생성된 포털이 표시되는지 확인합니다.
    /iscsi/iqn.20...mple:444/tpg1> ls
    o- tpg.................................. [enambled, auth] 
        o- acls ......................................[0 ACL]
        o- luns ......................................[0 LUN]
        o- portals ................................[1 Portal]
            o- 192.168.122.137:3260......................[OK]
    

25.1.5. LUN 구성

LUN을 구성하려면 먼저 스토리지 오브젝트를 만듭니다. 자세한 내용은 25.1.2절. “Backstore 생성” 를 참조하십시오.

절차 25.3. LUN 구성

  1. 이미 생성된 스토리지 오브젝트의 LUN을 만듭니다.
    /iscsi/iqn.20...mple:444/tpg1> luns/ create /backstores/ramdisk/rd_backend
    Created LUN 0.
    
    /iscsi/iqn.20...mple:444/tpg1> luns/ create /backstores/block/block_backend
    Created LUN 1.
    
    /iscsi/iqn.20...mple:444/tpg1> luns/ create /backstores/fileio/file1
    Created LUN 2.
    
  2. 변경 사항을 표시합니다.
    /iscsi/iqn.20...mple:444/tpg1> ls
    o- tpg.................................. [enambled, auth]
        o- acls ......................................[0 ACL]
        o- luns .....................................[3 LUNs]
        |  o- lun0.........................[ramdisk/ramdisk1]
        |  o- lun1.................[block/block1 (/dev/vdb1)]
        |  o- lun2...................[fileio/file1 (/foo.img)]
        o- portals ................................[1 Portal]
            o- 192.168.122.137:3260......................[OK]
    
    참고
    Red Hat Enterprise Linux 6에서 tgtd 를 사용하는 경우와 마찬가지로 기본 LUN 이름은 0에서 시작합니다.
  3. ACL을 구성합니다. 자세한 내용은 25.1.6절. “ACL 구성” 에서 참조하십시오.
중요
기본적으로 LUN은 읽기-쓰기 권한으로 생성됩니다. ACL이 생성된 후 사용 가능한 모든 ACL에 LUN을 자동으로 매핑하도록 새 LUN을 추가하는 경우. 이로 인해 보안 위험이 발생할 수 있습니다. 다음 절차에 따라 LUN을 읽기 전용으로 만듭니다.

절차 25.4. 읽기 전용 LUN 만들기

  1. 읽기 전용 권한으로 LUN을 만들려면 먼저 다음 명령을 사용합니다.
    /> set global auto_add_mapped_luns=false
    Parameter auto_add_mapped_luns is now 'false'.
    
    이렇게 하면 LUN을 기존 ACL에 대한 자동 매핑이 금지되므로 LUN을 수동 매핑할 수 있습니다.
  2. 다음으로 iscsi/target_iqn_name/tpg1/acls/initiator_iqn_name/ create mapped_lun=next_sequential_LUN_number tpg_lun_or_backstore= backstore=backstore = backstore=1.
    /> iscsi/iqn.2015-06.com.redhat:target/tpg1/acls/iqn.2015-06.com.redhat:initiator/ create mapped_lun=1 tpg_lun_or_backstore=/backstores/block/block2 write_protect=1
    Created LUN 1.
    Created Mapped LUN 1.
    /> ls
    o- / ...................................................... [...]
      o- backstores ........................................... [...]
      <snip>
      o- iscsi ......................................... [Targets: 1]
      | o- iqn.2015-06.com.redhat:target .................. [TPGs: 1]
      |   o- tpg1 ............................ [no-gen-acls, no-auth]
      |     o- acls ....................................... [ACLs: 2]
      |     | o- iqn.2015-06.com.redhat:initiator .. [Mapped LUNs: 2]
      |     | | o- mapped_lun0 .............. [lun0 block/disk1 (rw)]
      |     | | o- mapped_lun1 .............. [lun1 block/disk2 (ro)]
      |     o- luns ....................................... [LUNs: 2]
      |     | o- lun0 ...................... [block/disk1 (/dev/vdb)]
      |     | o- lun1 ...................... [block/disk2 (/dev/vdc)]
      <snip>
    
    이제 mapped_lun1 행에는 (rw)가 읽기 전용임을 나타내는 끝에 (ro)가 끝에 있습니다(xlun0의 (rw)).
  3. ACL을 구성합니다. 자세한 내용은 25.1.6절. “ACL 구성” 에서 참조하십시오.

25.1.6. ACL 구성

연결할 각 이니시에이터에 대한 ACL을 생성합니다. 이렇게 하면 이니시에이터가 연결할 때 인증이 적용되므로 각 이니시에이터에 LUN만 노출됩니다. 일반적으로 각 initator는 LUN에 대한 배타적 액세스 권한을 갖습니다. 타겟과 이니시에이터 모두 고유한 이름을 가지고 있습니다. ACL을 구성하려면 이니시에이터의 고유 이름을 알아야 합니다. open-iscsi 이니시에이터의 경우 /etc/iscsi/initiatorname.iscsi 에서 확인할 수 있습니다.

절차 25.5. ACL 구성

  1. acls 디렉터리로 이동합니다.
    /iscsi/iqn.20...mple:444/tpg1> acls/
  2. ACL을 만듭니다. 이니시에이터의 /etc/iscsi/initiatorname.iscsi 에 있는 이니시에이터 이름을 사용하거나, 쉽게 이해할 수 있는 이름을 사용하는 경우 ACL이 이니시에이터와 일치하는지 25.2절. “iSCSI 초기자 생성” 를 참조하십시오. 예를 들어 다음과 같습니다.
    /iscsi/iqn.20...444/tpg1/acls> create iqn.2006-04.com.example.foo:888
    Created Node ACL for iqn.2006-04.com.example.foo:888
    Created mapped LUN 2.
    Created mapped LUN 1.
    Created mapped LUN 0.
    
    참고
    지정된 예제의 동작은 사용된 설정에 따라 다릅니다. 이 경우 전역 설정 auto_add_mapped_luns 가 사용됩니다. 이렇게 하면 생성된 모든 ACL에 LUN이 자동으로 매핑됩니다.
    대상 서버의 TPG 노드 내에서 사용자가 생성한 ACL을 설정할 수 있습니다.
    /iscsi/iqn.20...scsi:444/tpg1> set attribute generate_node_acls=1
  3. 변경 사항을 표시합니다.
    /iscsi/iqn.20...444/tpg1/acls> ls
    o- acls .................................................[1 ACL]
        o- iqn.2006-04.com.example.foo:888 ....[3 Mapped LUNs, auth]
            o- mapped_lun0 .............[lun0 ramdisk/ramdisk1 (rw)]
            o- mapped_lun1 .................[lun1 block/block1 (rw)]
            o- mapped_lun2 .................[lun2 fileio/file1 (rw)]
    

25.1.7. 파이버 채널 over Ethernet(FCoE) 대상 구성

25.5절. “이더넷 인터페이스를 통한 파이버 채널 구성” 에 설명된 대로 FCoE를 통해 LUN을 마운트하는 것 외에도, FCoE를 통해 LUN을 다른 머신으로 내보내는 것도 StatefulSet를 지원하면서 지원됩니다.
중요
계속하기 전에 25.5절. “이더넷 인터페이스를 통한 파이버 채널 구성” 를 참조하고 기본 FCoE 설정이 완료되었는지 확인하고 fcoeadm -i 가 구성된 FCoE 인터페이스를 표시합니다.

절차 25.6. FCoE 대상 구성

  1. FCoE 대상을 설정하려면 dependencies와 함께 targetcli 패키지를 설치해야 합니다. Clevis 기본 설정에 대한 자세한 내용은 25.1절. “대상 설정” 를 참조하십시오.
  2. FCoE 인터페이스에서 FCoE 대상 인스턴스를 만듭니다.
    /> tcm_fc/ create 00:11:22:33:44:55:66:77
    FCoE 인터페이스가 시스템에 있는 경우, 생성 후 탭 컴파일은 사용 가능한 인터페이스를 나열합니다. 그렇지 않은 경우 fcoeadm -i 에 활성 인터페이스가 표시되는지 확인합니다.
  3. 보조 저장소를 대상 인스턴스에 매핑합니다.

    예 25.1. Backstore를 대상 인스턴스에 매핑하는 예

    /> tcm_fc/00:11:22:33:44:55:66:77
    /> luns/ create /backstores/fileio/example2
  4. FCoE 이니시에이터에서 LUN에 대한 액세스를 허용합니다.
    /> acls/ create 00:99:88:77:66:55:44:33
    이제 해당 이니시에이터에서 LUN에 액세스할 수 있어야 합니다.
  5. 재부팅 후에도 변경 사항을 적용하려면 saveconfig 명령을 사용하고 메시지가 표시되면 yes 를 입력합니다. 이 작업이 완료되지 않으면 재부팅 후 구성이 손실됩니다.
  6. exit 를 입력하거나 ctrl+D 를 입력하여 identity를 종료합니다.

25.1.8. StatefulSet를 사용하여 오브젝트 제거

보조 저장소를 제거하려면 다음 명령을 사용합니다.
/> /backstores/backstore-type/backstore-name
ACL과 같은 iSCSI 대상의 일부를 제거하려면 다음 명령을 사용합니다.
/> /iscsi/iqn-name/tpg/acls/ delete iqn-name
모든 ACL, LUN, 포털을 포함한 전체 대상을 제거하려면 다음 명령을 사용합니다.
/> /iscsi delete iqn-name

25.1.9. 6 443 참조

targetcli 에 대한 자세한 내용은 다음 리소스를 참조하십시오.
man customers
6 443 도움말 페이지. 여기에는 간단한 예제가 포함되어 있습니다.
Linux SCSI 대상 Wiki
Andy Grover의 screencast
참고
이 파일은 2012년 2월 28일에 업로드되었습니다. 따라서 서비스 이름이 customers에서 대상으로 변경되었습니다.