Mirroring2이상의 디스크를 동일하게 복사해 운영하는 방식으로 ZFS는 자동으로 Data를 Mirroring 된 디스크 사이에 Striping 해준다. 즉 Mirroring 설정만 해주면 알아서 스트라이핑해서 나타나게 된다.
2개의 디스크를 동기화하기 때문에 물리적인 디스크 용량에 절반만 사용가능하다.
# zpool create VM_DISK_IMG mirror sdb sdc mirror sdd sde
# zpool status
pool: VM_DISK_IMG
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
VM_DISK_IMG ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
DISK : 240G * 4
용량 : 2 / (240G * N)
VM_DISK_IMG zfs 438G 0 438G 0% /tank
RAIDZ
Mirroring 방식은 안정적이지만 많은 스토리지 비용을 유발할 수 있기 때문에 동등한 수준의 안전성을 보장하면서도 스토리지 비용을 줄일 수 있는 방안이 필요하다.
RAID 5 와 RAID 6처럼 Striping 과 Parity checking을 사용하는 방식으로 ZFS는 각각 RAIDZ(single parity)와 RAIDZ2(double parity)를 제공한다. Mirroring 방식과의 차이는 RAIDZ에서는 attach와 detach 기능을 제공하지 않는다는 것이다. 단 disk failure가 발생하여 자동으로 hot spares에 있던 disk를 spare로 사용하고 나중에 새로운 disk를 교체한 후 spare로 사용했던 disk를 hot spare로 뺄때에는 detach 기능을 사용할 수 있다.
※ RAID-Z : 패리티가 1(raidz), 2(raidz2), 3(raidz3) 으로 패리티방식을 사용하여 만들수있다.
RAID-Z 구성은 디스크 공간을 최대화하며 일반적으로 데이터가 큰(128K이상) 쓰고 읽을때 성능이 향상된다. 세개의 디스크(2+1)에 단일 패리티 구성(raidz)을 만든다.
RAID-2 구성은 더 향상된 데이터 가용성을 제공하며, RAID-Z와 비슷한 성능을 제공한다. RAID-2는 RAID-Z또는 양방향 미러에 비해 상당히 향상된 MTTD(Mean Time To Data Loss)를 제공하며 6(4+2)개의 디스크에 이중 패리티(raida2) 구성을 만든다.
RAID-3 구성은 디스크 공간을 취대화하며, 세개의 디스크 오류를 견딜수 있으므로 뛰어난 가용성을 제공하며 8개의 디스크(5+3)에 삼중 패리티(raidz3) 구성을 만든다.
# zpool create storage raidz -f sdb sdc sdd sde
# zpool status
pool: storage
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
VM_DISK_IMG ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
DISK : 240G * 4
용량 : 3 / (240G * N)
VM_DISK_IMG zfs 654G 128K 654G 1% /storage