French Protocole

화려한 매력 덩어리 파일 시스템 ZFS 를 말해볼까요

by on 11.25, 2009, under IT & Tech

오늘은 선의 운영체제인 솔라리스에서 제공하는 zfs 사용 방법을 적어 볼까 합니다.
요즘 이것 때문에, 밤잠 설치면서, 부부 금실 마저 위태로워 졌지만, 상당히 매력적이고 아름다운 시스템인지라…

선 얼마전 오라클 사와 인수 합병을 발표 하긴 했지만, 아직까진 중대형 메인 프레임 서버나 스토리지 솔류션으론 둘째가라면 서러운 회사 이죠. 솔라리스 참 머라 말하긴 힘든 운영 체제 이지만, 좋은 기술을 많이 내장 하고 있는 시스템이긴 합니다.
제가 처음 BSD 계열 운영 체제를 접한건 Freebsd 부터 인데, 이때 느낀 안정성 가벼움, 또 유연 함 등에 빠져 헤어 나질 못할 정도로 푹 빠져 버린 케이스 이라고 할 수 있습니다. 아마 포트 개념을 제일 먼저 적용 해서, 필요한 라이브러리를 모두 서버에서 관장 했었으니, 우분투 개념의 apt 개념을 1999년에 사용 할 수 있었으니까요.
이런 매력 적인 시스템 이지만, 일반인에겐 약간 생소 하고 또 따라 하기 어려우실 수 있는 시스템인지라, 약간의 맛만 보여 드릴 수 밖엔 없다고 생각 합니다. 리눅스를 설치 하고 다루 실 수 있다고 하여도 명령어가 약간은 틀리고 하기 때문에.

그럼 ZFS 란 뭣이길래 이렇게 제가 사랑하는 마눌님에게 외면 까지 당하면서, 극찬 하는 이유는 멋일까요?
먼저 데이타 베이스 형태의 파일 시스템 (이하 고FS) 이고, 또 최근에 만들어진 FS 이기에, 좀더 유연함을 제공함과 동시이 블록 형태로 데이타를 쌓는 형식이어서, 데이타 생성하고 또 레이드로 볼륨을 만들어도 바로 온라인 상태의 유용함과, 볼륨의 크기 조절, 혹은 파일을 쌓는 형식이 좀 틀리고 스냅샷 캐쉬도 지원 합니다.
한마디로 저렴한 가격에 시피유 빨로, 비싼 레이드 카드를 장만 한다는 개념 입니다. 그리고 솔라리스 자체에 ISCSI 타겟이 지원 하기에 바로 볼륨 생성하여, 클라이언트에게 파티션을 제공 하기도 합니다.
스냅샷, 이기능은 참 마음에 드는 내용인데, 유저의 실수로 파일을 지웠을 때, 그 파일을 복구 할 수 있는 기능으로서, 파일을 복구 할 수 있는 아름 다운 매력의 기능 이기도 합니다.
위에 말씀 드린 방법들도 사랑 스럽지만, 많은 프로그램들에서 ZFS 를 지원 하기 때문에, 그 기능들을 이용하면 무한한 가능성이 있으리라 생각 합니다.
자 이런 매력에 빠져 보시려면..
ZFS FS 는 기본적으로 장치를 설정 하고 기본적인 pool 을 만드는 작업이 기본이 됩니다. 이 풀이 생성이 되어야, 그위에 파일 시스템도 생성 하고 마운트 포인트도 만들어 지고 하기에, 기본적을 zfs 를 사용 하기 위해선, zpool 명령어를 사용해서 기본 환경을 만들어 주신다고 생각 하시면 편할 겁니다. 한마디로 zpool 은 하드웨어적 혹은 소프트 웨어적 RAID 를 담당 하는 녀석입니다. 이 zpool 을 가지고 풀을 생성 하신후 기본적인 것들을 작업 하시면 되는데. 앞으로 찬찬히 설명 드리도록 하지요. 하지만 zpool이 꼭 피지컬 한 하드 디스크를 요구 하는건 아니고 파일 시스템 위에서, 블록을 바로 마운트도 가능 합니다. 한마디로 초이스가 많은….
그럼 기본적인 사용 방법으로 애기를 들어가보죠.
먼저 기본 상태의 솔라리스 에선, 기본적으로 sh chs 개념의 과거 유닉스 콘솔을 사용 하므로, 바로 bash 로 바꿔 주시는 센스를 필요로 합니다. 안그러면 백스페이스 안먹히고.. ㅋㅋ 방법은 간단히 /etc/passwd 파일을 여셔서, 그림에서, 처럼 /sbin/sh 에서 /usr/bin/bash 이렇게 바꿔 주시면 됩니다. 기본 적으로 솔라리스에서 프로그램 경로를 물어 보는 명령어는 wichis bash 이런 식으로 하면 위치 경로를 알려 줍니다.

change_csh_bash

자 이제 바꿔 주셨으니 로그오프 후 다시 로그온 하셔서. 고고 하시죠…
이제 터미널 여시면 배쉬가 반갑게 주인님을 기다리고 있을 겁니다..

자 그럼 내가 어떤 하드 디스크 장치들을 가지고 있는지 혹은 어떤 하드를 zfs 로 이용을 해야 하는지 시스템에 여쭤 볼까 합니다.
명령어는 format -e 이렇게 질문하면,

formate-e 그림 2
이렇게 친절한 답이 나옵니다.
여기서 엔터나 format 의 명령으로 들어 가지 마시고, ctrl + c 로 포맷에서 빠져 나옵니다.
그리고 원하는 하드 디스크의 주소 혹은 넘버를 확인 하시고, zpool 로 zfs 를 사용 하기 위한 pool 을 작성 해보도록 하겠습니다.
zpool create (볼륨 이름) (묵을 하드)  만약 여러 하드이시라면, 미러 레이드 z 등으로 엮는 방법도 있습니다. Raid Z 기능을 사용 하시려면, 기본적으로 3개 이상의 하드를 요구 합니다. 그리고 하드를 두개 이상 엮으신다면, stripe 볼륨이며, 두개를 이용해 안정적인 미러도 구성이 가능 하십니다.
zpoolCreate

사용해본 결과, raidz 혹은 미러 스트라이프 모든경우에 리빌드 타임이 필요 없으며, 바로 사용이 가능합니다. 이게 참 매력 적이라는…
자 이렇게 pool 을 작성 하셨다면, zfs 로 데이타 세트를 만들어 주셔야 합니다. 이건 개인의 자유 이겠지만, FS 를 별도로 사용 한하더라도, zpool 에서 생성될시 만들어 주신 볼륨이름이 / 안에 자동적으로 마운트 되어 있을 겁니다. 이 안에 별도의 내용으로 볼륨을 마운트 하는 기능이 있으니… 한번 만들어 보겠습니다. 이 방법 이후엔, https://localhost:6789 에서 zfs gui 를 이용해 만드시는 작업이 가능 합니다.
zfs_management

이 방법을 이용 하셔도 되고, zfs create 하시고 만드셔도 됩니다.
제 경우엔, 느린 하드 디스크를 사용해서, zpool add (볼륨네임) cache 란 명령을 이용해 USB 장비를 캐쉬로 추가를 해주었습니다.
다만 이 경우엔 외장 동적 하드 디스크이기 때문에, 솔라리스에서 volfs 서비스를 꺼주시고 작업 하셔야 합니다.
참 그리고 zpool 로 생성될 하드 디스크는 설치시 제외 목록에 위치 하는게, 더 편합니다. 왜냐면, 블록을 바로 잡아서, 디비화 한 FS 이기에…
그럼 USB 스틱을 이용한 캐쉬를 생성 하려면, 혹은 외장 usb 를 zpool 로 이용 하려면, 그림 2에서 format -e 로 질문 하였을때 외장 하드 들이 리스트에서 나오지 않습니다. 하지만, svcadm disable volfs 를 활성화 하고 나서, 다시 format -e 로 질문을 날려 보면.
volfsafter_formate_e

참고 이미지 처럼 외장 장치도 포맷에서 인식이 가능한 장치로 변합니다. (이 참 많이 애 먹었었기에… )
그럼 장치를 아래와 같이 추가 하여 줍니다. (캐쉬 디스크 추가 명령) zpool add (볼륨이름) cache (디스크 번호 + p0) 하시면 됩니다.

zpoolStatusCache
그럼 위에 보시는것과 같이 캐쉬 디스크가 생성 된걸 아실 수 있습니다.
이제 부턴 캐쉬발을 이용해 하드 디스크 사용 하기가 좀더 소프트 해집니다. 캐쉬는 무한정으로 붙이실 수 있으므로 필요에 따른 캐쉬 증설은 각자의 판단에…
zfs 볼륨에선 iscsi 를 위한 볼륨도 생성이 가능 합니다.
볼륨을 위에서 만드셨다면, 이제 zfs 를 위한 공유 설정을 해보겠습니다. 아직까진 저 GUI 에서 관리가 불가능 하므로, 아래 명령어를 이용해, zfs create -V(크기 ex 10G) (볼륨 생성을 위한) (zpool 에서 생성된 이름/원하는 볼륨명)  이렇게 명령어 때려 주시면, 눈에 보이지 않지만, 생성이 되고 바로 사용 가능한 상태가 됩니다.
그리고 나서, zfs set shareiscsi=on (zpool 볼륨명/생성한장치명)  이렇게 해주셔야 클라이언트에서 마운트가 가능 합니다.
그럼 이걸 클라이언트에서 마운트 하려면, windows 의 경우, ISCSI initiator 가 필요 한데, 비스타의 경우 자체 내장이고 xp의 경우 마소 사이트에서 다운 로드 받으시고 프로그램을 실행 시킵니다.
그럼 실행 시키시면, 이런 화면이 나오는데.
Iscsi

여기서, 디스커버리로 항목을 옮기시면,

add portal 버튼을 누르시면,
addPortal discovery_iscsi

여기에 서버측 IP 주소 넣어 주시고 ok 하고.
타겟 항목으로 옮기시면,
target

이런 창이 뜹니다. 저의 경우엔, 두개의 볼륨을 만들어 놨으므로.
근데 이름이 길어서 복잡하죠.. 그리고 만들어 놓은 볼륨 이름도 안보이고, 이게 다 GUID 란것 때문인데, 보안상 그리고 장치로 인식하기 때문이라 합니다. 헠… 자 그럼 아무거나 하나 log on 버튼을 눌러 보시면,
capt_logonconnected

이러고 OK 누르시면, 일단 로그온이 되면서,

상태가 변환이 되었습니다. 그럼 이제 제어판 -> 컴퓨터 관리, 디스크 메니지먼트로 갑니다. 이쯤 되면 많은 분들이 눈치 채셨을지 모르지만, ISCSI 는 인터넷 프로토콜을 이용한 스카시 장비 입니다. 당연 장비를 연결 하였으니, mmc 관리 콘솔에서 새로운 동적 디스크 인식 메세지를 바로 보시게 됩니다.
mmc_management

여기서 새로운 장비 인식에서 두가지 물음이 나오는데. mbr 혹은 gpt 가 나옵니다. 고민 많이 때립니다. mbr 이냐 gpt 냐.. 하지만 윈도우는 mbr 에서 호환성은 좋지만, 이전 포맷인지라, 제한이 많이 생깁니다. 전 그래서 외장 스토리지 연결할땐 GPT 로 활성화 하는데, 만약 부트 ISCSI 를 이용하시려면 MBR 로 하시길 권하며, GPT 는 선택 사양입니다. 하지만 ISCSI 볼륨이 커서 테라 바이트가 넘을시 GPT 옵션이 필수 입니다. 그렇습니다. ISCSI 로 부팅도 가능 합니다. 하지만 제한사항이 복잡해서.. 나중에 서술 하기로 하고…

그럼 외장 장치 동적 디스크 변환을 실시 합니다. 나머지는 보통 포맷 하는 형태와 같기에 여기선 패스…
그럼 포맷이 끝나고,
선사의 하드 디스크란 항목으로 뜨게 됩니다.
헉 선에서 만든 하드 디스크 아주 자랑 스럽군요.. 위용도 당당.
등록정보에서 보시면,
volumePropertprepertie_cache

저렇게 스카시 장비 처럼 캐쉬도 활성화가 가능 합니다. 다만…
비스타에서 버그 인지 혹은 장비 탓인지 몰라도 호환성에 약간은 하지만, 윈 7에서 테스트 해봤을땐 잘 되는…
네트웍 공유도 한줄이면 가능 합니다. zfs set sharenfs=on (볼륨명/마운트명) 이렇게 하시거나, zfs set sharesmb=on (볼륨명/마운트명) 하시면 되는데, samba 의 경우 아직 권고 하고 있질 않아서 이점 유의 바랍니다.
그래서 전 비스타 얼티밋에 내장 되어 있는 nfs 서비스를 이용하여 마운트 하였습니다.

잠깐 설명 했지만. 보시면 아주 매력적인 FS 입니다. 특히 ISCSI Target 의 경우 마소나 혹은 서버 제조사들이 미친 짓으로 인하여 우리가 쉽게 접해 볼 수 없는 경우 이지만, 리눅스 프비 혹은 솔라리스를 이용해 이렇게 여유롭게 쉽게 공짜로 서볼 수 있는 장점은 충분히 존재 하는것 같습니다.
특히 nas 의 장점도 있지만, 단점도 많은 편입니다. 권한 혹은 파일 이름 또는 프로그램에서 지원을 해주지 않아서, nas 볼륨은 백업 개념이 강하지만, 이렇게 ISCSI 를 이용하면, 부팅도 가능하고 밥도 지어 먹고 국도 끓여 먹을 만큼 다양한 옵션이 가능합니다. 단! 여러명이 공유 하여 사용하기엔 문제가 많으므로 주의에 또 주의를, 다만 라이센스 구매하여 여러 클라이언트가 사용 가능한 솔류션도 있지만, 전 어디 까지나 diskless 형태로 사용하고자 하여서.. (제 노트북 하드가 용량이 부족해서..)
이제 이 외장 하드에 원하는 자료 쌓고 하는 많은 작업이 가능해지고 수월해 졌습니다.

다음엔 스냅샷 그리고 다른 가용성에 대한. 애기를 해보도록 하겠습니다.

VN:F [1.9.11_1134]
Rating: 8.8/10 (5 votes cast)
VN:F [1.9.11_1134]
Rating: +1 (from 3 votes)
화려한 매력 덩어리 파일 시스템 ZFS 를 말해볼까요, 8.8 out of 10 based on 5 ratings
:, , , , , , , , , , , ,

2 Trackbacks / Pingbacks for this entry

Leave a Reply