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

1.1 zfs snapshot을 이용한 Block 단위 데이터 복구

zfs의 장점중 하나인 무제한으로 생성 가능한 snapshot을 이용해서 OS,또는 디스크를 복원하는 과정을 살펴보도록 하자.
필자의 경우 윈도우 시스템을 예로 들었지만 host는 Linux,Windows,FreeBSD,Solaris등등 크게 가리지 않는다.

전체적인 작업 순서는 아래와 같다.

1. 호스트에 할당한 zvol또는 zfs에 대한 snapshot 생성
2. 호스트에 할당한 LU삭제
3. zfs rollback을 이용해서 zvol복구
4. stmfadm 명령으로 LU 를 다시 생성하고 호스트에서 볼 수 있도록 view추가 

 

필자는 현재 한개의 zvol을 Windows서버에 할당해둔 상태이다.(lu00)

snapshot1

 

1.1.1 snapshot 생성

먼저 사용중인 zvol의 snapshot을 생성하도록 한다.
zfs snapshot 스토리지풀/dataset 또는 zvol@스넵샷이름
zfs list -t snapshot 명령으로 snapshot을 확인 할 수 있다.

root@zfs-server:/root# zfs snapshot SANPOOL/lu00@testsnapshot
root@zfs-server:/root# zfs list -t snapshot
NAME                                    USED  AVAIL  REFER  MOUNTPOINT
SANPOOL/lu00@testsnapshot                  0      -  11.6G  -

 

실수로 디스크를 포맷을 했거나 바이러스로 인해 디스크가 문제가 생겼다고 가정하고 윈도우에서 볼륨을 삭제해 본다.

snapshot2

 

snapshot3

 

실제로 포맷을 하던 파티션을 날리던 snapshot 만 있으면 snapshot을 생성한 시점으로 복구가 가능하다.
데이터가 있더라도 걱정말고 삭제해라. zfs만 믿고 가보는거다. :-)

1.1.2 복구과정

1. 먼저 호스트에 할당한 LU를 삭제 한다.
먼저 LU GUID를 확인하도록 하자

root@zfs-server:/root# stmfadm list-lu -v
LU Name: 600144F00AAF84260000555318910001
    Operational Status: Online
    Provider Name     : sbd
    Alias             : /dev/zvol/rdsk/SANPOOL/lu00
    View Entry Count  : 1
    Data File         : /dev/zvol/rdsk/SANPOOL/lu00
    Meta File         : not set
    Size              : 107374182400
    Block Size        : 512
    Management URL    : not set
    Vendor ID         : SUN     
    Product ID        : COMSTAR         
    Serial Num        : not set
    Write Protect     : Disabled
    Writeback Cache   : Enabled
    Access State      : Active

 

root@zfs-server:/root# stmfadm delete-lu 600144F00AAF84260000555318910001

 

2. 생성한 스넵샵을 이용해서 Rollback한다.

root@zfs-server:/root# zfs rollback SANPOOL/lu00@testsnapshot

 

3. 다시 LU를 생성하고 view를 추가한다.

root@zfs-server:/root# stmfadm create-lu /dev/zvol/rdsk/SANPOOL/lu00
Logical unit created: 600144F00AAF84260000555437560004
root@zfs-server:/root# stmfadm  add-view 600144F00AAF84260000555437560004 

 

4.Windows 호스트에서 서버관리자->디스크관리->디스크 다시 검사를 실행해 보자.
디스크가 볼륨 삭제하기 전 상태로 돌아오고 데이터 역시도 그대로 남아있을 것이다. :-)
참고)
Windows 시스템에서 파일 단위로 복구가 필요하다면 그냥 Windows VSS를 사용하고 디스크 단위로 복원이 필요할 때는 위의 방법을 사용하는것이 적절할 것이다.
참고)
FC HBA는 부팅을 FC Target을 이용해서도 부팅이 가능하다.
따라서 네트워크를 이용한 diskless시스템 처럼 구성이 가능하고 위에서 설명한 snapshot을 이용한다면 OS 역시도 간단하게 복원이 가능하게 되는 것이다.
또한 만들어진 snapshot을 clone하여 다른 호스트로 할당해주면 동일한 상태의 OS로 간단히 복제할 수 있다. 머릿속에 어떻게 운영해야 할지 감이 오지 않는가?

1.2 ESXi서버와 연동하여 사용하기

Xen,MS Hyper-V등등 다른 가상화 시스템들도 있지만 필자가 사용중인 Esxi 기준으로 작성하겠다.
다른 가상화시스템들도 기본적인 개념은 비슷하기 때문에 본인이 사용하는 가상화 시스템에 적당히 적용하기 바란다.
가상화에 대해서 자세하게 설명하기에는 별도의 강좌가 필요할 정도로 분량이 많다. 각자 별도로 공부하도록 하자.
빌드한 FC스토리지를 Esxi서버에 제공하여 VM(가상머신)들을 저장하는 공간으로 활용해보자.
전체적인 작업 순서는 아래와 같다.

1.ESXi서버에 FC HBA 장착
2.ESXi서버와 스토리지서버 연결
3.Zvol생성 및 View 추가(스토리지 서버)
4.ESXi 서버에서 VMFS로 포맷 후 사용

 

참고)
그 동안에는 생성한 zvol을 아무 호스트에서나 접근 가능하도록 했었지만 이번에는 특정 호스트(ESXi서버)에만
할당하도록 하겠다.

1.2.1 스토리지 서버측 작업

그간 해왔던 작업이랑 별반 다를게 없다.
다만 stmfadm create-hg ESXi_Servers으로 호스트 그룹을 생성하고
stmfadm add-hg-member -g ESXi_Servers wwn.2000001b3213e804 명령으로 특정 호스트 그룹의 멤버를 추가하는 과정이 추가가 되었다.
WWN은 ESXi 서버에 장착된 FC HBA의 포트 이름이다.(WWPN)
참고) esxi에서 wnn 확인 방법
vSphere client실행 후=>구성=>스토리지어댑터=>FC HBA

wwn


WWN: 20:00:00:1b:32:1b:22:38 21:00:00:1b:32:1b:22:38을 확인하고 별도로 기록해 둔다.
위의 WWN은 나중에 FC Target 에 접근 할 경우 엑세스 제어를 위해 사용하게 된다.

20:00:00:1b:32:1b:22:38(WWNN) => wwn.2000001b321b2238 
21:00:00:1b:32:1b:22:38(WWPN) => wwn.2100001b321b2238
로컬 연결에서는 실제로 노드네임(WWNN)과 포트네임(WWPN)중에서 WWPN만을 써도 된다.
FC스위치가 추가되고 실제 SAN를 구성하게 되면 노드 네임도 필요하게 될 것이다.
root@zfs-server:/root# zfs create -V 200G storage/vmstore(zvol생성)
root@zfs-server:/root# zfs list -r storage(zvol 확인)
NAME                           USED  AVAIL  REFER  MOUNTPOINT
storage                        206G  6.82T   104K  /storage
storage/vmstore                206G  7.02T    64K  -
root@zfs-server:/root# stmfadm create-lu /dev/zvol/rdsk/storage/vmstore(LU생성) 
Logical unit created: 600144F00AAF84260000555C0B740001
root@zfs-server:/root# stmfadm create-hg ESXi_Servers(호스트 그룹 생성)
root@zfs-server:/root# stmfadm add-hg-member -g  ESXi_Servers wwn.2100001b321b2238(호스트 그룹에  esxi wwn 추가)
root@zfs-server:/root# stmfadm list-hg -v(호스트 그룹 확인)
Host Group: ESXi_Servers
        Member: wwn.2100001b321b2238

root@zfs-server:/root# stmfadm add-view --host-group ESXi_Servers 600144F00AAF84260000555C0B740001(호스트 그룹에 LU할당)
root@zfs-server:/root# stmfadm list-view -l 600144F00AAF84260000555C0B740001(view확인)
View Entry: 0
    Host group   : ESXi_Servers
    Target group : All
    LUN          : 0

 

1.2.2 ESXi 서버측 작업

vSphere client실행 후=>구성=>스토리지어댑터=>다시검색
hbascan

 

아래처럼 디스크가 추가가 된 것을 확인
fcdisk

 

추가된 디스크는 ESXi에서 아래와 같이 사용이 가능하다.

1.2.2.1 VM 스토리지로 활용

vSphere client실행 후=>구성=>스토리지=>스토리지추가
위에서 생성한 디스크를 VM store로 사용하면 된다.

1.2.2.2 RDM(raw disk mapping) 으로 사용

VM관리자=>하드웨어 추가 => RDM 추가 하여 VM(가상머신)과 직접 연결하여 사용이 가능하다.
참고)
VMFS는 기본적으로 clustered filesystem 이다. 따라서 다수의 esxi서버가 있고 여러 서버에서 VM 스토리지를 공유해서 사용하고자 한다면
필자처럼 SAN 스토리지를 구성해두고 사용해 보는것도 나쁘지는 않을 것 이다.

Pages:

stone has written 25 articles

Leave a Reply