JOB가 달려있는 수천만원짜리 장비가 있으나, 문서를 남기기 위해서 테스트하기에는 힘들어서 가상환경에서 구축했습니다. 자세히 들어가면 많은 차이가 있겠으나 설치/설정에는 이 정도로도 충분.
다운로드
http://www.nexenta.com에 가시면 Free Trial 버전을 다운로드 할 수 있습니다.
설치
VirtualBox로 설치했습니다. 테스트를 위해서 SAS 컨트롤러를 설치하고, 8개의 디스크를 붙였습니다. 굳이 SAS 컨트롤러를 올릴 필요는 없겠지만 회사 장비가 SAS를 기반으로 하고 있고, 디스크를 여러개 붙일 수 있어서 선택했습니다. Guest 운영체제를 위해서 NAT와 호스트 전용 어뎁터 2개의 인터페이스를 할당했습니다.
nmc@myhost:/$ setup appliance password
<Enter> <?>
nmc@myhost:/$ setup appliance password
Would you like to change root password? Yes
New password : xxxxxx
Confirm password: xxxxxx
Password for user root has been changed!
Would you like to change admin password? Yes
New password : xxxxxx
Confirm password: xxxxxx
Password for user admin has been changed!
네트워크 설정
이제 네트워크를 설정합니다. 먼저 현재 네트워크 인터페이스를 확인합니다. 2개의 인터페이스를 볼 수 있겠죠. 하나는 dhcp로 하나는 static로 잡았습니다. setup network interface를 이용해서 간단히 설정할 수 있습니다.
nmc@myhost:/$ setup network interface
Option ? e1000g0
Option ? dhcp
Enabling e1000g0 via DHCP ... OK.
nmc@myhost:/$ setup network interface e1000g1
Option ? static
e1000g1 IP address : 192.168.56.2
e1000g1 netmask : 255.255.255.0
e1000g1 mtu : 1500
Enabling e1000g1 as 192.168.56.2/255.255.255.0 mtu 1500 ... OK.
nmc@myhost:/$ show lun
LUN ID Device Type Size Volume Mounted Attach GUID
c0d0 cmdk0 disk 16GB syspool no ata VBOX_=VB7953102c-ea9e9236
c2t0d0 sd1 disk 4GB no mpt -
c2t1d0 sd2 disk 4GB no mpt -
c2t2d0 sd3 disk 4GB no mpt -
c2t3d0 sd4 disk 4GB no mpt -
c2t4d0 sd5 disk 2GB no mpt -
c2t5d0 sd6 disk 2GB no mpt -
c2t6d0 sd7 disk 2GB no mpt -
c2t7d0 sd8 disk 2GB no mpt -
이제 볼륨 구성. setup 명령으로 간단하게 만들 수 있습니다. raidz2로 구성했습니다.
nmc@myhost:/$ setup volume create
Volume : TestVol
Group of devices : c2t0d0, c2t1d0, c2t2d0, c2t3d0, c2t4d0, c2t5d0, c2t6d0, c2t7d0
Group redundancy type : raidz2
Compression : on
Create volume 'TestVol'? Yes
volume: TestVol
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
TestVol ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
c2t0d0 ONLINE 0 0 0
c2t1d0 ONLINE 0 0 0
c2t2d0 ONLINE 0 0 0
c2t3d0 ONLINE 0 0 0
c2t4d0 ONLINE 0 0 0
c2t5d0 ONLINE 0 0 0
c2t6d0 ONLINE 0 0 0
c2t7d0 ONLINE 0 0 0
errors: No known data errors
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
TestVol 15.9G 336K 15.9G 0% 1.00x ONLINE -
Volume 'TestVol' created successfully. Please take a moment to consider using default snapshot policy
for this volume. The defaults are as follows: keep 30 daily snapshots and 12 monthly snapshots; take
snapshots at 12am. Say No if you do not need to periodically snapshot the new volume and all its
folders, and/or if the defaults are not satisfactory. Note that you can always decide later - see
'create auto-snap -h' for details.
Create default auto-snap services for 'TestVol'? No
볼륨 상태 확인. 깔끔하게 잘 구성됐네요.
$ show volume status
volume: TestVol
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
TestVol ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
c2t0d0 ONLINE 0 0 0
c2t1d0 ONLINE 0 0 0
c2t2d0 ONLINE 0 0 0
c2t3d0 ONLINE 0 0 0
c2t4d0 ONLINE 0 0 0
c2t5d0 ONLINE 0 0 0
c2t6d0 ONLINE 0 0 0
c2t7d0 ONLINE 0 0 0
errors: No known data errors
volume: syspool
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
syspool ONLINE 0 0 0
c0d0s0 ONLINE 0 0 0
errors: No known data errors
폴더 생성
볼륨을 서비스 하려면 공유 폴더를 만들어야 합니다. Volume아래에 폴더를 만들고 이를 공유했습니다.
nmc@myhost:/$ create folder TestVol/fs_01
NAME USED AVAIL REFER MOUNTED QUOTA DEDUP COMPRESS
TestVol/fs_01 62.8K 11.7G 62.8K yes none off on
share 명령을 이용해서 폴더를 공유할 수 있습니다. 이때 공유 타입을 설정할 수 있습니다. 사용할 수 있는 공유타입은 다음과 같습니다. cifs ftp nfs(:12) rsync(:12) webdav를 서비스할 수 있습니다. nfs로 설정해 봤습니다.
nmc@myhost:/$ share folder TestVol/fs_01
Option ? nfs
Auth Type :
none dh krb5 krb5i krb5p
-----------------------------------------------------------------------------------------------
Sharing uses one of tsysspecified security modes. Navigate with arrow keys (or hjkl), or Ctrl-C
Anonymous : true
Anonymous Read-Write : true
Read-Write : *
Read-Only :
Root :
Extra Options :
Recursive : false
Added NFS share for folder 'TestVol/fs_01'
이제 network service를 enable 합니다.
nmc@myhost:/$ setup network service nfs-server enable
리눅스에서 마운트 테스트를 해봤습니다. 굳
root@yundream:/mnt# mount -t nfs 192.168.56.2:/volumes/TestVol/fs_01 sr_01/
root@yundream:/mnt# cp /home/yundream/다운로드/ubuntu-11.10-server-amd64.iso sr_01
ZFS는 Dynamic striping을 지원합니다. 그러니 8개의 디스크에 읽기/쓰기가 분산이 될겁니다. iostat로 데이터가 실제 분산되는지 살펴볼 수 있습니다.
마무리
실제 서비스는 베어메탈을 이용하고 있는데, VM으로 구성하는 게 더 나을 것 같다. 문제가 생기면 복구하기도 쉬울 것 같고.
다음 번에는 Volume 구성, 네트워크및 볼륨, 네트워크 서비스들의 세부 설정등을 알아봐야 겠다.
제대로된 테스트를 하려면 역시 JBOD 같은 물리적인 장비가 필요할 것 같다. 물리적인 환경에서 제대로된 기능/성능 테스트를 계획해야 겠다.
Nexentastor에 대한 테스트를 진행했는데, Opensolaris와 ZFS에 대한 이해가 있다면 그냥 ZFS만으로 스토리지를 관리하는게 훨씬 나을 것 같습니다. plungin 기능만 빼고는 이미 ZFS의 기능을 포장해서 제공할 뿐이라서 ZFS 기능만으로도 모든 관리가 가능합니다. 거기에 애플리케이션을 떡하니 올려놔 버려서, 애플리케이션 자체의 문제들까지 함께 처리해야 하거든요. 그럴 필요가 있을까 라는 생각이 듭니다. 물론 오픈솔라리스와 ZFS에 대한 이해가 충분하다는 가정하에 입니다.
성능이 중요한 Root volume에는 ZFS, 일반 데이터는 swift 조합이 좋겠네요. kt ucloud도 swift 도입할 예징이고요.
Contents
Nexentastor 설치
환경
다운로드
설치
Trial 등록
로그인
네트워크 설정
NMV 확인
volume 설정
폴더 생성
파일 공유 서비스
마무리
히스토리
Recent Posts
Archive Posts
Tags