원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어


참고 : https://docs.oracle.com/cd/E62102_01/html/E62692/fmvcd.html#scrolltoc

           COMSTAR(Common Multiprotocol SCSI TARget)를 사용하여 저장 장치 구성
+++++++++++++++++++++++++++++++++++++++++++++++++++++++


[OMNIOSce] 서버로 SAN 스토리지 구축


Oralce Solaris 의 저장장치 관리 프레임워크인 COMSTAR(Common Multiprotocol SCSI TARget)를 이용하여

서버를 SAN 환경의 스토리지로 구성하는 방법이다.


오픈소스의 OmniOS Community Edition 환경은 ZFS와 COMSTAR가 같이 갖추어져 있어서 스토리지로 바로 구축할 수 있다.


1. OmniOSce 설치


다운로드 및 설치가이드는 https://omniosce.org/setup/freshinstall.html  를 참고한다.




2. HBA카드 드라이버 모드를 TARGET 모드로 변경하기

 : SAN스토리지 환경에서 스토리지 서비스를 하는 쪽을 TARGET,
   스토리지를 사용하는 HOST쪽을 INITIATOR 라고 칭한다.
   OmniOSce를 설치한후 HBA카드는 기본적으로 INITIATOR 모드로 되어있는데, 스토리지로 사용할 것이므로 TARGET 모드로 변경한다.
  


- HBA카드 모드 확인
  : Port Mode가 Initiator 모드인걸 확인 가능
  : 그리고 Driver Name이 qlc 인것을 확인한다.

root@omnios:~# fcinfo hba-port
HBA Port WWN: 5001438024222ed8
        Port Mode: Initiator
        Port ID: 10500
        OS Device Name: /dev/cfg/c4
        Manufacturer: QLogic Corp.
        Model: AJ764A or AH401A
        Firmware Version: 05.03.01
        FCode/BIOS Version:  BIOS: 2.16; fcode: 2.03; EFI: 2.22;
        Serial Number: MY524621ZH
        Driver Name: qlc
        Driver Version: 20100408-3.01
        Type: N-port
        State: online
        Supported Speeds: 2Gb 4Gb 8Gb
        Current Speed: 8Gb
        Node WWN: 5001438024222ed9
        Max NPIV Ports: 254
        NPIV port list:
HBA Port WWN: 5001438024222eda
        Port Mode: Initiator
        Port ID: 10400
        OS Device Name: /dev/cfg/c5
        Manufacturer: QLogic Corp.
        Model: AJ764A or AH401A
        Firmware Version: 05.03.01
        FCode/BIOS Version:  BIOS: 2.16; fcode: 2.03; EFI: 2.22;
        Serial Number: MY524621ZH
        Driver Name: qlc
        Driver Version: 20100408-3.01
        Type: N-port
        State: online
        Supported Speeds: 2Gb 4Gb 8Gb
        Current Speed: 8Gb
        Node WWN: 5001438024222edb
        Max NPIV Ports: 254
        NPIV port list:



- HBA카드 드라이버로 PCI주소 얻기
  
root@omnios:~# mdb -k
Loading modules: [ unix genunix specfs dtrace mac cpu.generic uppc pcplusmp scsi_vhci zfs sd ip hook neti sockfs arp usba uhci stmf stmf_sbd mm lofs idm cpc crypto kvm random ufs logindmux nsmb ptm smbsrv nfs ]
> ::devbindings -q qlc
ffffff194b646aa0 pciex1077,2532, instance #0 (driver name: qlc)
ffffff194b6467f8 pciex1077,2532, instance #1 (driver name: qlc)



- 드라이버 모드를 TARGET모드로 변경

: initiator 모드 삭제
root@omnios:~# update_drv -d -i 'pciex1077,2532' qlc
Cannot unload module: qlc
Will be unloaded upon reboot.

: TARGET 모드 추가
root@omnios:~# update_drv -a -i 'pciex1077,2532' qlt
devfsadm: driver failed to attach: qlt
Warning: Driver (qlt) successfully added to system but failed to attach



- 재부팅
root@omnios:~# init 6



- 재부팅후 TARGET모드로 바뀐 HBA카드 확인

root@omnios:~# fcinfo hba-port
HBA Port WWN: 5001438024222ed8
        Port Mode: Target
        Port ID: 0
        OS Device Name: Not Applicable
        Manufacturer: QLogic Corp.
        Model: HPAJ764
        Firmware Version: 0.0.0
        FCode/BIOS Version: N/A
        Serial Number: not available
        Driver Name: COMSTAR QLT
        Driver Version: 20100505-1.05
        Type: unknown
        State: offline
        Supported Speeds: 2Gb 4Gb 8Gb
        Current Speed: not established
        Node WWN: 5001438024222ed9
HBA Port WWN: 5001438024222eda
        Port Mode: Target
        Port ID: 0
        OS Device Name: Not Applicable
        Manufacturer: QLogic Corp.
        Model: HPAJ764
        Firmware Version: 0.0.0
        FCode/BIOS Version: N/A
        Serial Number: not available
        Driver Name: COMSTAR QLT
        Driver Version: 20100505-1.05
        Type: unknown
        State: offline
        Supported Speeds: 2Gb 4Gb 8Gb
        Current Speed: not established
        Node WWN: 5001438024222edb

  


- STMF(SCSI Target Mode Framework) 서비스 활성화
  
root@omnios:~# svcs stmf
STATE          STIME    FMRI
disabled       23:25:44 svc:/system/stmf:default
root@omnios:~# svcadm enable stmf
root@omnios:~# svcs stmf
STATE          STIME    FMRI
online         23:26:47 svc:/system/stmf:default



2. ZFS 파일시스템 설정


- POOL을 만들 DISK를 확인
root@omnios:~# format
Searching for disks...done


AVAILABLE DISK SELECTIONS:
       0. c1t0d0 <HP-LOGICAL VOLUME-6.00-838.33GB>
          /pci@0,0/pci8086,3408@1/pci103c,3245@0/sd@0,0
       1. c1t1d0 <HP-LOGICAL VOLUME-6.00-3.27TB>
          /pci@0,0/pci8086,3408@1/pci103c,3245@0/sd@1,0
       2. c2t0d0 <HP-LOGICAL VOLUME-5.70-4.91TB>
          /pci@0,0/pci8086,340f@8/pci103c,3243@0/sd@0,0

위의 c1t0d0,c2t0d0 는 각각 900GB의 물리적디스크로 이루어진 RAID 5 볼륨이다.
   
우리는 여기서 c1t1d0 를 pool_3TB 로, c2t0d0를 pool_5TB 이라는 이름의 POOL로 생성할 계획이다.



- POOL 생성
root@omnios:~# zpool create pool_3TB c1t1d0
root@omnios:~# zpool create pool_5TB c2t0d0



- 생성된 POOL 확인
root@omnios:~# zpool list
NAME       SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
pool_3TB  3.25T   447G  2.81T         -    10%    13%  1.00x  ONLINE  -
pool_5TB  4.91T   137K  4.91T         -     0%     0%  1.00x  ONLINE  -
rpool      832G  17.3G   815G         -     0%     2%  1.00x  ONLINE  -



- ZFS LU 생성
root@omnios:~# zfs create -V 3198156M pool_3TB/lun01
  : -V 옵션을 사용하면 실제
  : zfs create -V 3.25T pool_3TB/lun01 와 같이 생성하면 단위가 틀리다는 에러가 나오므로 MB단위로 적정용량을 준다.
    zfs 파일시스템 오버헤드상 전체용량을 다 줄수는 없는듯 하다.



- 생성된 LU 확인
root@omnios:~# zfs list
NAME                USED  AVAIL  REFER  MOUNTPOINT
pool_3TB           3.15T  3.10G    23K  /pool_3TB
pool_3TB/lun01     3.15T  3.15T    12K  -
pool_5TB            124K  4.75T    23K  /pool_5TB
rpool              33.2G   773G    23K  /rpool
rpool/ROOT          747M   773G    23K  legacy
rpool/ROOT/omnios   747M   773G   747M  legacy
rpool/dump         16.0G   773G  16.0G  -
rpool/swap         16.5G   789G  56.2M  -



3. STMF(SCSI Target Mode Framework)를 이용한 스토리지 LUN 생성 및 할당


- 생성된 LU에 LUN을 생성
root@omnios:~# stmfadm create-lu /dev/zvol/rdsk/pool_3TB/lun01
Logical unit created: 600144F06509056F00005AB903770001


- LUN까지 매겨진 LU의 정보를 확인
root@omnios:~# stmfadm list-lu -v
LU Name: 600144F06509056F00005AB903770001
    Operational Status: Online
    Provider Name     : sbd
    Alias             : /dev/zvol/rdsk/pool_3TB/lun01
    View Entry Count  : 0
    Data File         : /dev/zvol/rdsk/pool_3TB/lun01
    Meta File         : not set
    Size              : 3353509625856
    Block Size        : 512
    Management URL    : not set
    Vendor ID         : SUN
    Product ID        : COMSTAR
    Serial Num        : not set
    Write Protect     : Disabled
    Writeback Cache   : Disabled
    Access State      : Active


- host의 WWN 확인
  : 해당 LU를 할당해줄 가상화호스트 머신의 HBA WWN은 다음과 같다.
    10000000c9f3b989
    10000000c9f3bbe7
 이건 가상화호스트 머신에서 직접 확인한 정보이고,
 스토리지 머신과 호스트 머신의 HBA가 케이블로 연결되어있다면, omniOSce 환경에서도 호스트머신의 WWN을 확인할 수 있다.


- 호스트쪽 Initiator WWN 확인방법

 : 먼저 TARGET쪽 WWN을 확인한다.
root@omnios:~# fcinfo hba-port
HBA Port WWN: 5001438024222ed8
        Port Mode: Target
        Port ID: 10500
        OS Device Name: Not Applicable
        Manufacturer: QLogic Corp.
        Model: HPAJ764
        Firmware Version: 5.2.1
        FCode/BIOS Version: N/A
        Serial Number: not available
        Driver Name: COMSTAR QLT
        Driver Version: 20100505-1.05
        Type: F-port
        State: online
        Supported Speeds: 2Gb 4Gb 8Gb
        Current Speed: 8Gb
        Node WWN: 5001438024222ed9
HBA Port WWN: 5001438024222eda
        Port Mode: Target
        Port ID: 10400
        OS Device Name: Not Applicable
        Manufacturer: QLogic Corp.
        Model: HPAJ764
        Firmware Version: 5.2.1
        FCode/BIOS Version: N/A
        Serial Number: not available
        Driver Name: COMSTAR QLT
        Driver Version: 20100505-1.05
        Type: F-port
        State: online
        Supported Speeds: 2Gb 4Gb 8Gb
        Current Speed: 8Gb
        Node WWN: 5001438024222edb


 : TARGET WWN 을 기입하여 연결된 Initiator 쪽 WWN을 확인
root@omnios:~# fcinfo remote-port -p 5001438024222ed8
Remote Port WWN: 10000000c9f3b989
        Active FC4 Types: SCSI
        SCSI Target: unknown
        Port Symbolic Name: Emulex PPN-10:00:00:00:c9:f3:b9:89
        Node WWN: 20000000c9f3b989
Remote Port WWN: 10000000c9f3bbe7
        Active FC4 Types: SCSI
        SCSI Target: unknown
        Port Symbolic Name: Emulex PPN-10:00:00:00:c9:f3:bb:e7
        Node WWN: 20000000c9f3bbe7
root@omnios:~# fcinfo remote-port -p 5001438024222eda
Remote Port WWN: 10000000c9f3b989
        Active FC4 Types: SCSI
        SCSI Target: unknown
        Port Symbolic Name: Emulex PPN-10:00:00:00:c9:f3:b9:89
        Node WWN: 20000000c9f3b989
Remote Port WWN: 10000000c9f3bbe7
        Active FC4 Types: SCSI
        SCSI Target: unknown
        Port Symbolic Name: Emulex PPN-10:00:00:00:c9:f3:bb:e7
        Node WWN: 20000000c9f3bbe7


여기서 얻어낸 WWN은 10000000c9f3b989, 10000000c9f3bbe7 로써 양쪽 포트에 중복된 값이 다시 나오는 이유는
멀티패스로 연결되었기 때문이다.


 - 호스트 정보 생성 
   : WWN 10000000c9f3b989, 10000000c9f3bbe7 2개를 vhost01 이라는 호스트그룹으로 포함시켜준다.
root@omnios:~# stmfadm create-hg vhost01
root@omnios:~# stmfadm add-hg-member -g vhost01 wwn.10000000c9f3b989
root@omnios:~# stmfadm add-hg-member -g vhost01 wwn.10000000c9f3bbe7


 - 목표 LU를 원하는 호스트그룹에 매핑
root@omnios:~# stmfadm add-view --host-group vhost01 600144F06509056F00005AB903770001


 - 목표 LU의 매핑결과 확인
root@omnios:~# stmfadm list-view -l 600144F06509056F00005AB903770001
View Entry: 0
    Host group   : vhost01
    Target group : All
    LUN          : 0




4. 해당 host에서 디스크 스캔 및 사용 



다시 검색시 나타난 SUN Fibre Channel Disk 쪽이 새로 추가된 LU이다.