Openfiler NAS/SAN Appliance, version 2.99 (Final Release) / http://openfiler.com
Openfiler란, 뭐 공식 홈페이지가면 잘 설명되어 있다만..
리눅스처럼 x86 장비에 간단한 설치 과정을 거치면 NAS/iSCSI 그리고 SAN 기능을 제공하는 Applicance 형태의 오픈소스 솔루션이다.
물론, 오픈소스이기에 무료이며, 추가적으로 비용을 지불하면 성능향상을 위한 플러그인이나 기술지원 등을 받을 수 있다.
실제로 외국에서는 많이들 사용하고 있나보다. 물론 상용서비스에 사용하기에는 성능적 이슈가 있긴 하지만,
테스트 환경에서는 구성이 쉽고 뭐 공짜기도 하고.
작년에 클라우드스택 때문에 시트릭스 인도 엔지니어랑 구성을 얘기하던 중 Openfiler로 테스트 환경을 구축하는 사례는 많다고 한다.
최근 오픈소스기반의 Scale-Out Storage가 많이들 사용되고 있는데, 그 중 하나로 Openfiler에 대한 간단한 설치 과정을 포스팅 한다.
기회가 된다면 성능 테스트도 하면 좋겠지만. 우선은...
1. Openfiler 다운로드, ISO 부팅
- 리눅스 설치 화면과 같은 형태로 설치가 시작된다.
2. OS영역을 설치할 디스크를 선택하면 된다.
sdb, sdc는 iscsi 스토리지 영역으로 사용할 것으로 sda에만 OS영역을 설치한다.
3. IP설정, 편의상 DHCP를 사용했지만 실제로 사용될 IP를 manual하게 입력 하는것을 권장한다.
4. 리눅스 설치과정처럼 진행되고 설치 시간은 5분정도?
5. 설치가 완료된 후 재부팅이 되면 입력한 IP에 대한 안내가 나오고 브라우저로 해당 주소로 접속한다.
6. https://ipaddress:446 으로 접속하면 아래 로그인창이 나오며 기본 ID/PW는 openfiler/password 다.
7. 로그인하면 보여지는 status 화면이다.
- 시스템정보, 네트워크 정보, 디스크 정보, 사용율, 오른쪽 상단에는 load avg.도 표시된다.
8. IP 설정을 변경하고자 한다면 System 탭에서 변경할 수 있다.
- 화면 아래 보면 Network Access Configuration(ACL) 이 있다. openfiler 에 접근하는 client들에 대한 ACL 설정을 해주면 된다.
밑에서 추가적으로 설명하겠다.
9. Services 탭을 클릭하면, openfiler가 제공하는 여러가지 기능을 볼 수 있다.
- iscsi, nfs서비스를 사용할 것이기에 해당 서비스를 enable, start 시킨다. (iscsi target, NFS 등)
10. Volume 탭의 왼쪽 메뉴의 Block Device를 클릭하면 현재 서버에 장착된 디스크 정보를 볼 수 있다.
- sda는 OS영역으로 사용하고 있고 sdb, sdc 2개의 디스크를 하나의 볼륨으로 묶고 iscsi용과 nas용으로 서비스를 할 예정이다.
11. 우선 디스크에 대한 파티션 생성을 해야한다.
- 왼쪽에 장치명을 클릭하면 설정할 수 있다. 파티션을 여러개로 나누고 여러개의 볼륨으로 등록할 수도 있다.
이는 본인의 사용환경에 따라서 디스크를 세팅하면 되겠다.
나는 Primary 모드로 파티션 타입은 physical volume 으로 하나의 파티션으로 전체 용량으로 설정했다.
12. 디스크에 대한 파티션 생성이 완료되면 Volume탭 오른쪽 메뉴의 volume groups를 선택해서 새 볼륨 그룹을 생성하면 된다.
- 위에서 설정한 파티션들이 보일것이고 나는 두개의 디스크(sdb,sdc)를 선택한 후 iscsi라는 이름으로 설정하였다.
리눅스로 예를 들면 lvm을 구성하는데 pv를 생성했다고 생각하면 된다.
13. Volume탭의 오른쪽 메뉴의 Add Volume을 선택해서 서비스할 볼륨을 생성한다.
- 위에서 생성한 볼륨그룹에서 서비스될 볼륨을 생성하는 부분이다.
말이 좀 어려운데.. 전체 볼륨그룹 내에서 세분화 시키는 부분이라 생각하면 되고 lvm에서 lv를 생성한다고 보면 된다.
위에서 볼륨그룹으로 2G짜리 디스크 2개를 묶었고, 여기서는 1G씩 3개의 볼륨으로 세분화 한다.
iscsi1, iscsi2, nfs로 할 것이고, iscsi용으로 쓰는 볼륨은 filesystem을 block iscsi..로 nfs용은 ext4로 설정한다.
14. 그러면, 아래와 같이 3개의 볼륨이 생성되고 1기가 좀 안되게 남아있다.
15. Volume탭의 오른쪽 메뉴 iSCSI Targets를 선택한다.
- 이제 iscsi 용으로 사용하기로 한 2개에 대한 볼륨을 iscsi-target 서비스를 하도록 설정한다.
우선 Target Configuration 탭에서 IQN을 생성한다. 이름은 바꿔줘도 무방하다.
- IQN이 생성되었고, 디테일한 설정도 가능하다.
16. LUN Mapping 탭에서 생성한 IQN으로 서비스 될 볼륨 선택한다.
- 아래 iscsi 용으로 설정한 볼륨 2개가 보인다. 현재는 생성한 IQN에 매핑된 상태가 아니므로 오른쪽 MAP 버튼을 눌러서 매핑한다.
- 매핑된 볼륨 확인
17. ACL 설정
- 아까 위에서 설정했던 ACL이 해당 탭에서 보일 것이다. 접근 허용할 대역 혹은 IP의 Access를 Allow로 설정한다.
18. CHAP 인증 설정
- iscsi 사용을 위한 CHAP 설정
이로써 openfiler의 iscsi 대한 설정은 끝났다.
이제는 사용하면 된다.
리눅스에서 iscsi 사용을 해보도록 하자.
우선 iscsi 패키지가 설치 되어있다는 가정이다.
19. iscsiadm 명령을 통한 IQN 확인, 하지만 권한 문제로 인증실패
[root@docker01 ~]# iscsiadm -m discovery -t st -p 172.168.1.103
iscsiadm: Login failed to authenticate with target
iscsiadm: discovery login to 172.168.1.103 rejected: initiator failed authorization
iscsiadm: Could not perform SendTargets discovery: iSCSI login failed due to authorization failure
20. CHAP 인증 설정
- /etc/iscsi/iscsid.conf 설정, 아래 라인 주석 제거 및 ID/PW 설정
[root@docker01 ~]# cat /etc/iscsi/iscsid.conf
node.session.auth.authmethod = CHAP
node.session.auth.username = [ID]
node.session.auth.password = [PW]
discovery.sendtargets.auth.authmethod = CHAP
discovery.sendtargets.auth.username = [ID]
discovery.sendtargets.auth.password = [PW]
[root@docker01 ~]# iscsiadm -m discovery -t st -p 172.168.1.103172.168.1.103:3260,1 iqn.2006-01.com.openfiler:tsn.960ef94e694c
172.168.1.103:3260,1 iqn.2006-01.com.openfiler:tsn.51663868dbd3
22. iscsiadm login
[root@docker01 ~]# iscsiadm -m node --loginall all
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:tsn.51663868dbd3, portal: 172.168.1.103,3260] (multiple)
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:tsn.960ef94e694c, portal: 172.168.1.103,3260] (multiple)
23. 재부팅 후 fdisk로 디스크 확인
[root@docker01 ~]# fdisk -l
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00085dbb
Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 1045 7875584 8e Linux LVM
Disk /dev/sdc: 1073 MB, 1073741824 bytes
34 heads, 61 sectors/track, 1011 cylinders
Units = cylinders of 2074 * 512 = 1061888 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdd: 1073 MB, 1073741824 bytes
34 heads, 61 sectors/track, 1011 cylinders
Units = cylinders of 2074 * 512 = 1061888 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000