avicom의 신변잡기

NexentaStor community-edition 설정 본문

LiNux / sTorAge

NexentaStor community-edition 설정

avicom 2010. 12. 3. 17:45
오픈소스로 나온 Storage appliance을  찾다가 openfiler 와 nexenta 를 눈여겨 보고 있었다. 
openfiler는 지난번에 테스트했고, 이번에 nexenta를 테스트해보고 있는데, 꽤 괜찮다. openfiler와 마찬가지로 iscsi-target, NAS, CIFS, NFS, iscsi-initiator, WebDAV 등을 지원하는데, 다른 건 별로 관심없고 iscsi-target을 집중적으로 테스트해보고 있다. 
ubuntu hardy 배포판에 opensolaris 커널을 채용하고 있는데, 덕분에 ZFS를 사용할 수 있고, 이게 상당한 장점으로 작용한다. (openfiler는 rpath linux 기반에 GPT를 사용하고, 그 위에 LVM을 생성한다). raidz 로 raid5나 raid6와 비슷한 레이드 구성을 할 수 있다. 레이드 컨트롤러에서 레이드 구성을 따로 하지 않고 JBOD로 묶기만 한 다음, nexenta에서 raidz로 pool을 구성해서 사용하면 괜찮은 효과를 볼 수 있다. 디스크 관련 모니터링 스크립트 짜기도 간편하고, 무엇보다 zfs의 성능 덕을 많이 볼 수 있다. 

맛보기로 nexentastor commnity-edition을 사용해서 iscsi-target을 만들고 이걸 리눅스 클라이언트에서 access하여 파일시스템을 마운트해보자.

우선 설치과정은 skip. 그냥 매뉴얼같은 거 안보고 해도 진행할 수 있다. 다만 설치 후 부팅 과정에서 registraion-key를 요구하는데, 키를 요구하는 화면에 Machine Signature 표기되어 있다. 이걸 잘 적어서 http://www.nexenta.com/corp/developer-edition-registration 에서 등록하면 메일로 EVAL- 어쩌고로 시작하는 Registration Key 가 날아온다. 이 키를 아까의 콘솔 등록 화면에 입력하면 끝. 

상용버전이라면 모든 작업을 web ui내에서 진행할 수 있지만 CE버전은 iscsi용 볼륨과 타겟 설정까지만 할 수 있고 실제의 LUN mapping같은 작업은 CLI상에서만 지원하고 있다. 

nexenta에서 유닉스 명령어를 사용하여 작업을 하려면 expert mode로 들어가야한다. 

nmc@nexenta:/$ option expert_mode=1
nmc@nexenta:/$ !bash
You are about to enter the Unix ("raw") shell and execute low-level Unix command(s). Warning: using low-level Unix commands is not recommended! Execute?  Yes
root@nexenta:/volumes#

Logical Unit Provider 생성

root@nexenta:/volumes# sbdadm create-lu /dev/zvol/rdsk/xenpool/vol2
Created the following LU:

              GUID                    DATA SIZE           SOURCE
--------------------------------  -------------------  ----------------
600144f0b0c04a0000004cf8a7dc0002  161061273600         /dev/zvol/rdsk/xenpool/vol2

root@nexenta:/volumes# stmfadm list-lu -v
LU Name: 600144F0B0C04A0000004CF86DCD0001
    Operational Status: Online
    Provider Name     : sbd
    Alias             : /dev/zvol/rdsk/xenpool/vol1
    View Entry Count  : 1
    Data File         : /dev/zvol/rdsk/xenpool/vol1
    Meta File         : not set
    Size              : 107374182400
    Block Size        : 512
    Management URL    : not set
    Vendor ID         : NEXENTA
    Product ID        : COMSTAR
    Serial Num        : not set
    Write Protect     : Disabled
    Writeback Cache   : Enabled
    Access State      : Active
LU Name: 600144F0B0C04A0000004CF8A7DC0002
    Operational Status: Online
    Provider Name     : sbd
    Alias             : /dev/zvol/rdsk/xenpool/vol2
    View Entry Count  : 0
    Data File         : /dev/zvol/rdsk/xenpool/vol2
    Meta File         : not set
    Size              : 161061273600
    Block Size        : 512
    Management URL    : not set
    Vendor ID         : NEXENTA
    Product ID        : COMSTAR
    Serial Num        : not set
    Write Protect     : Disabled
    Writeback Cache   : Enabled
    Access State      : Active

LU를 생성한 직후의 상태이다. /dev/zvol/rdsk/xenpool/vol1은 기 생성되어 외부에서 액세스하고 있는 볼륨이다. vol2와의 차이는 View Entry Count  다. vol1은 
View Entry Count  : 1  
인데 vol2는 
View Entry Count  : 0
이다.  View 엔트리에 포함되지 않은 상태에선 외부에 디스크가 보이지 않는다. target mode framework에 view 엔트리에 포함시켜주자. 이럴때 사용하는 명령어는 stmfadm 이다. 

root@nexenta:~# stmfadm add-view 600144f0b0c04a0000004cf8a7dc0002

root@nexenta:~# stmfadm list-lu -v
LU Name: 600144F0B0C04A0000004CF86DCD0001
    Operational Status: Online
    Provider Name     : sbd
    Alias             : /dev/zvol/rdsk/xenpool/vol1
    View Entry Count  : 1
    Data File         : /dev/zvol/rdsk/xenpool/vol1
    Meta File         : not set
    Size              : 107374182400
    Block Size        : 512
    Management URL    : not set
    Vendor ID         : NEXENTA
    Product ID        : COMSTAR
    Serial Num        : not set
    Write Protect     : Disabled
    Writeback Cache   : Enabled
    Access State      : Active
LU Name: 600144F0B0C04A0000004CF8A7DC0002
    Operational Status: Online
    Provider Name     : sbd
    Alias             : /dev/zvol/rdsk/xenpool/vol2
    View Entry Count  : 1
    Data File         : /dev/zvol/rdsk/xenpool/vol2
    Meta File         : not set
    Size              : 161061273600
    Block Size        : 512
    Management URL    : not set
    Vendor ID         : NEXENTA
    Product ID        : COMSTAR
    Serial Num        : not set
    Write Protect     : Disabled
    Writeback Cache   : Enabled
    Access State      : Active

이제 vol2도 View Entry Count 가 1이 되었다. 이후에 비로소 iscsi-target 설정을 한다. 
Target Portal Group (TPG)을 생성하고 이 tpg를 연동하여 iscsi target을 생성한다. 

itadm create-tpg e1000g0 192.168.160.121
itadm create-target -t e1000g0

그리고 리눅스 클라이언트에서 tpg 아이피로 엑세스하여 디스크 사용

[root@manticore ~]# iscsiadm -m discovery -t st -p 192.168.160.121

[root@manticore ~]# iscsiadm -m node -Tiqn.1986-03.com.sun:02:f9adb9c0-5ab9-e0b3-9f97-f300dbff81e6 -p 192.168.160.121 -l
Logging in to [iface: default, target: iqn.1986-03.com.sun:02:f9adb9c0-5ab9-e0b3-9f97-f300dbff81e6, portal: 192.168.160.121,3260]
Login to [iface: default, target: iqn.1986-03.com.sun:02:f9adb9c0-5ab9-e0b3-9f97-f300dbff81e6, portal: 192.168.160.121,3260]: successful


[root@manticore ~]# fdisk -l
.
.
.
Disk /dev/sde: 161.0 GB, 161061273600 bytes
255 heads, 63 sectors/track, 19581 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sde doesn't contain a valid partition table

이제 이 디스크에 파일시스템을 생성하고 마운트해서 사용하면 된다. 성능 테스트는 현재 진행중. 왠지 좀 부실한데 테스트가 좀 더 진행되는 보충하기로 하자. 

ps. 1
중요한 걸 빼먹었다. 콘솔 작업 후 exit 할 때 이런 메세지가 나온다

root@nexenta:/volumes# exit
exit

Important: To re-sync the appliance's management state information, please
consider running 'setup appliance nms restart' command.
 콘솔모드에서 작업한 내용이 nexenta의 관리 시스템에 자동으로 반영이 안되기 때문에 관리 시스템을 restart하란 얘기다. 무시하고 가만 있으면 콘솔에서 작업한 내용이 cli모드나 web ui에서 보이지 않는다. 반드시 restart 해준다. 

nmc@nexenta:/$ setup appliance nms restart
Trying to gain exclusive access to the appliance.
This operation may take up to 30 seconds to complete. Please wait...
Exclusive access granted.
This operation will make Nexenta Management Server temporarily unavailable. Proceed?  Yes
Restarting NMS. Please wait...
NMS was successfully restarted

ps. 2 
openfiler랑 벤치마킹을 해봤는데 어째 비슷하게 나온다 -_-; 둘 다 ocfs2로 파일시스템을 생성해서 io 테스트를 돌렸는데 별 차이가 안난다. 음. ext3, ext4로 다시 테스트해봐야겠다.