유닉스의 파일 시스템을 대체하기 위해서 SUN에서 개발한 파일 시스템으로 Solaris 10에 소개된다. 기능을 보면 알겠지만 단순한 파일 시스템으로 보기는 힘들다. 모든 잡다한 관리기능까지를 포함한 볼륨메니저로 봐야 한다. 예컨데 파일 시스템과 Logical Volume manager, snapshots, copy-on-write clones, continuous integrity checking, automatic repaire, 등 무슨 기능일지도 모를 것 같은 다양한 기능들을 가지고 있는 확장된 파일 시스템이다. ZFS를 써본 사람들은 지상 최대의 파일 시스템이라는 찬사를 보낸다. 정말 그러하다.
나는 Cloud 환경에서 신뢰성과 확장성, 성능과 관리성까지 두루 갖춘 만능 File System을 찾아보자라는 목적으로 살펴보게 됐다.
ZFS의 기능을 정리했다.
Data Integrigy
다른 파일 시스템과 구분되는 가장 큰 특징이다. 디스크 상의 유저 데이터를 보호준다. bit rot, cosmic radiation, current spikes, bugs in disk firmware, ghost writes 등으로 부터 데이터를 보호해 준다. 물론 Ext, XFS, JFS, ReiserFS, NTFS 등도 유저 데이터를 보호하기 위한 기능을 가지고 있기는 하지만, ZFS는 이들 보다 탁월한 성능을 보여준다.
Storage Pool
LVM과 마찬가지로 하나 이상의 장치를 통합해서 관리할 수 있다. 이 논리적인 Storage Pool을 zpools라고 하며, block device 처럼 작동한다. 블럭 장치들은 다양한 레벨로 조합할 수 있습니다. non-redundantly (RAID 0과 비슷), mirror ( RAID 1과 비슷 ), RAID-Z (RAID-5와 비슷), RAID-Z2 (RAID-6와 비슷) 등등이다.
Capacity : ZFS는 128-bit 파일 시스템으로 용량에는 제약기 없다고 보면 되겠다. 페타바이트급 파일시스템이라고 하는 이유가 있다.
2^48 개의 독립된 디렉토리를 다룰 수 있다.
파일의 최대크기는 16 exabytes ( 16 X 10^18)
zpool의 최대 크기는 256 zettabytes (2^78)
시스템에서 zpools의 갯수는 2^64
zpools에서 파일 시스템의 갯수 2^64
Linux와 ZFS
Linux에 ZFS를 이식하기 위한 노력이 진행 중이다. 이식은 두 가지 방향으로 이루어지고 있다.
native ZFS
리눅스 커널이 ZFS를 지원하도록 하는 프로젝트
zfs-fuse
fuse를 이용해서 ZFS를 지원하도록 하는 프로젝트
아직까지는 Linux에서 마음놓고 사용할 만한 수준이 아닌 것 간다. zfs-fuse 같은 경우에는 성능에 문제가 상당히 있어서 zfs란 이런 거구나를 체험하기 위한 수준 정도에서나 사용할 수 있을 것 같다. . Native ZFS는 눈여겨 볼만하다. 꾸준히 개발하고 있는 것 같기는 한데, 언제쯤 1.0이 되서 믿고 쓸만한 날이 올지 모르겠다. 1년전에 0.6.x 버전이었는데, 지금(2013년 9월)도 0.6.x 버전이다.
논리적 볼륨 관리자의 핵심은 장치를 아우르는 하나의 pool을 만드는 거다. 이 pool을 zpool이라고 부른다.
테스트를 위해서 SATA 2G x 2 장치를 준비했다. 리눅스에서 하던 것처럼 fdisk -l로 장치를 확인하려고 했더니, 내가 원하는 그 fdisk가 아니다. format으로 장치를 확인할 수 있다.
# format
AVAILABLE DISK SELECTIONS:
0. c7d0 <DEFAULT cyl 2085 alt 2 hd 255 sec 63>
/pci@0,0/pci-ide@1,1/ide@0/cmdk@0,0
1. c9t0d0 <ATA-VBOX HARDDISK-1.0-2.00GB>
/pci@0,0/pci8086,2829@d/disk@0,0
2. c9t1d0 <ATA-VBOX HARDDISK-1.0-2.00GB>
/pci@0,0/pci8086,2829@d/disk@1,0
c9t0d0, c9t1d0을 tank라는 이름의 zpool로 묶기로 했다.
# zpool create tank c9t0d0 c9t1d0
제대로 만들어 졌는지 확인.
# zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
rpool 15.9G 3.80G 12.1G 23% ONLINE -
tank 3.97G 232K 3.97G 0% ONLINE -
Nexenta는 opensolaris 기반의 NAS/SAN어플라이언스 제품이다. 기업환경에서 ZFS를 이용해서 안정적으로 스토리지 시스템을 구성할 수 있도록 HA(High Availability cluster), Namespace Cluster, CLI및 GUI(웹 기반의) 인터페이스를 제공한다.
Contents
ZFS
Linux와 ZFS
zfs-fuse
Solaris와 ZFS
opensolaris 설치
zpool
mirror, RAIDZ, RAIDZ2
Native ZFS on Linux
Nexenta
History
Recent Posts
Archive Posts
Tags