ZFS 기반의 NAS/SAN 스토리지 만들기

1.1 스토리지 시스템 구성

하드웨어가 준비되고 ZFS를 지원하는 OS까지 설치가 되었으니 이제 실제 스토리지를 구성하고
여러가지 서비스들을 제공해 보도록 하자.
필자가 최종적으로 구성하게될 스토리지는 아래의 구조를 가지고 있다.

storage_final

 

스토리지 서버에 다수의 FC HBA를 장착해서 SAN Storage처럼 활용하고 다수의 NIC를 장착하여 네트워크 기반의 NFS,iscsi,cifs 공유 스토리지로 사용 할 것이다.
네트워크간의 대역폭을 늘리고자 한다면 LACP 지원하는 스위치를 FC 호스트를 늘리고자 한다면 FC switch를 추가적으로 구성하도록 한다.
FC target을 지원하도록 하는 이유는 아래와 같다. 필자 개인적인 생각이다.
1. 1Gbps 네트워크의 확장을 위해서는 LACP지원 스위치가 필요하다.
2. 네트워크 대역폭을 늘리기 위해서는 멀티포트를 가진 NIC 이 필요하고 선들이 모두 연결되어 있어 서버 뒤쪽이 어지럽게 된다. FC로 구성하면 랜선에 비해 아주 가는 FC 케이블 한 가닥이면 끝이다. :-)
3. 파일시스템 기반의 서비스(nfs,cifs) 등은 블럭기반의 서비스(iscsi,fc) 보다 오버헤드가 많고 cpu자원을 더 적게 사용한다.
4. Esxi등 가상화 서버를 사용하는 경우 zvol을 생성하여 제공함으로써 다수의 가상머신들이 RDM으로 연결이 가능하게 된다.
5. ZFS에서 제공하는 snapshot을 이용하여 즉각적인 서버 복원,복제,이동이 가능함으로 시스템 관리 측면에서 효율성을 가져다 준다.
스토리지 서버만 붕괴되지 않는다고 가정하면 연결된 호스트들의 OS,데이터 영역들은 언제라도 즉각적인 복원이 가능하다. 심지어 호스트(windows,linux,등등)에서 파티션을 날려먹어도,포맷을 해도 즉각적인 복구가 가능하다. :-)

1.1.1 Fiber Channel Target Mode 설정

먼저 스토리지에 장착된 FC HBA를 Target mode로 변경하는 작업을 하도록 한다.
필자의 스토리지서버에는 Qlogic Qle2464 4G HBA가 장착되어 있다.
참고)
Target Mode를 지원하는 FC HBA는 대표적으로 Qlogic 23xx,24xx,25xx 시리즈가 있다.
emulex 의 컨트롤러도 지원을 한다고 하는데 필자는 직접 테스트틑 해보지 못했다.
리눅스기반으로 구성을 한다면 [http]scst사이트를 참고해서 작업을 하면 되겠다.
커널 패치 작업 및 리빌드 작업이 필요하므로 리눅스를 많이 다뤄보지 않은 유저라면 다소 어려울 수 있다.
나중에 기회가 되면 리눅스에서도 FC target을 구성하는 과정도 다뤄보도록 하겠다.(언젠가는….)
  • 현재 포트 모드 확인하기

fcinfo hab-port 명령으로 확인한다.

root@zfs-server:/root# fcinfo  hba-port
HBA Port WWN: 210000e08b91672b
        Port Mode: Initiator
        Port ID: 2
        OS Device Name: /dev/cfg/c8
        Manufacturer: QLogic Corp.
        Model: QLE2464
        Firmware Version: 05.03.01
        FCode/BIOS Version:  BIOS: 3.27; fcode: 3.23; EFI: 6.07;
        Serial Number: FFC0643L25223
        Driver Name: qlc
        Driver Version: 20100408-3.01
        Type: L-port
        State: online
        Supported Speeds: 1Gb 2Gb 4Gb 
        Current Speed: 4Gb 
        Node WWN: 200000e08b91672b
        Max NPIV Ports: 127
        NPIV port list:

 

  • Target Mode로 변경하기

1. 드라이버 확인
아래의 커맨드들을 이용해서 드라이버 이름을 확인한다.
특히 pciex1077,2432 부분을 잘 기억해두기 바란다.

root@zfs-server:/root# mdb  -k
Loading modules: [ unix genunix specfs dtrace mac cpu.generic uppc pcplusmp scsi_vhci zfs sata sd ip hook neti sockfs arp usba uhci stmf stmf_sbd idm mpt_sas cpc crypto random lofs ufs logindmux ptm nfs ]
> ::devbindings -q qlc
ffffff04e60a3560 pciex1077,2432, instance #0 (driver name: qlc)
ffffff04e60a32b8 pciex1077,2432, instance #1 (driver name: qlc)
ffffff04e60a3010 pciex1077,2432, instance #2 (driver name: qlc)
ffffff04e60a1d48 pciex1077,2432, instance #3 (driver name: qlc)
> $q

root@zfs-server:/root# 

 

2. qlc드라이버 제거 및 qlt 드라이버 추가
qlt가 Target driver 이다.
커맨드 후에 나오는 메시지들은 에러 메시지가 아니니 걱정하지 않아도 된다.
root@zfs-server:/root# update_drv -d -i 'pciex1077,2432' qlc
Cannot unload module: qlc
Will be unloaded upon reboot.
root@zfs-server:/root# update_drv -a -i 'pciex1077,2432' qlt
devfsadm: driver failed to attach: qlt
Warning: Driver (qlt) successfully added to system but failed to attach
root@zfs-server:/root# 

 

3. 시스템 재시작

root@zfs-server:/root# init 6

 

4. Target Mode확인
재부팅 후 FC HBA Port Mode가 Target으로 변경이 되었고 드라이버가 솔라리스에서 제공하는 COMSTAR QLT 드라이버로 변경이 되었다.
이제 스토리지 서버는 Target mode로 스토리지 서버에 Fiber Channel로 연결하는 클라이언트 시스템들은 Initiator Mode로 연결이 가능한 상태가 되었다.
필자의 경우 서버 to 서버의 형태로 구성했기 때문에 현재는 총 4대의 클라이언트를 연결할 수 있다.
확장을 원한다면 FC switch를 구매해서 구성하면 좀더 많은 수의 호스트를 연결할 수 있을 것이다.
FC 스위치를 가지고 있는 유저라면 한번 테스트 해주기를 바란다. :-)
참고)
COMSTAR란 Common Multiprotocol SCSI TARget의 약자로 SCSI기반의 프로토콜들을 지원하기 위한 소프트웨어 프레임워크다.
COMSTAR를 이용하면 스토리지서버는 iscsi target,fc target,FCoE,SRP 지원이 가능하다.(oracle 공식문서에 따르면…)

 

root@zfs-server:/root# fcinfo hba-port
HBA Port WWN: 210000e08b91672b
        Port Mode: Target
        Port ID: 0
        OS Device Name: Not Applicable
        Manufacturer: QLogic Corp.
        Model: QLE2464
        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: 1Gb 2Gb 4Gb 
        Current Speed: not established 
        Node WWN: 200000e08b91672b

 

1.1.2 스토리지풀 생성

앞의 강좌에서 zpool 명령으로 스토리지풀을 다루는 방법을 공부했을 것 이다.
이제 실제 서비스를 위한 스토리지풀을 생성하고 클라이언트들이 사용할 수 있도록 할 것이다.
스토리지풀을 어떻게 구성할 것인지는 각자의 상황과 판단에 맞게 구성하면 된다.
스토리지풀을 구성하고 실 사용 환경과 비슷한 환경을 만들어 두고 벤치마킹 후 서비스를 개시하도록 하자.
참고)
스토리지 서비스 계획 세우기(필자 개인적인 방법이다)

  • 필요로 하는 용량은 어느 정도이며 증가하는 데이터량은 어느 정도인지 계산한다.
  • 스토리지 서버에 접속하는 호스트수 와 공유 방식 확인하고 그룹화 시켜둔다.
  • I/O 요청량을 확인하여 고용량,고성능,무결성 을 구분한다.

Pages:

stone has written 25 articles

Leave a Reply