저장소 풀을 만들려면 zpool create 명령을 사용합니다. 이 명령은 풀 이름 및 가상 장치 수를 인수로 사용합니다. 풀 이름은 ZFS 구성 요소 명명 요구 사항의 조건을 충족해야 합니다.
다음 명령은 c1t0d0 및 c1t1d0 디스크로 구성된 tank 이름의 새 풀을 만듭니다.
# zpool create tank c1t0d0 c1t1d0
전체 디스크를 나타내는 장치 이름은 /dev/dsk 디렉토리에서 찾을 수 있으며, 단일 대형 슬라이스를 포함하도록 ZFS에 의해 알맞게 레이블이 지정됩니다. 데이터는 두 디스크에 걸쳐 동적으로 스트라이프됩니다.
미러된 풀을 만들려면 mirror 키워드 다음에 미러를 구성할 저장 장치 수를 사용합니다. 명령줄에 mirror 키워드를 반복하면 여러 미러를 지정할 수 있습니다. 다음 명령은 2개의 이중 미러를 갖춘 풀을 만듭니다.
# zpool create tank mirror c1d0 c2d0 mirror c3d0 c4d0
두번째 mirror 키워드는 새 최상위 레벨 가상 장치가 지정됨을 나타냅니다. 데이터는 두 미러에 걸쳐 동적으로 스트라이프되어, 두 디스크 사이에 알맞게 데이터가 중복됩니다.
권장되는 미러링된 구성에 대한 자세한 내용은 Chapter 11, Oracle Solaris ZFS 권장 방법을 참조하십시오.
현재 ZFS 미러된 구성에서는 다음 작업이 지원됩니다.
기존 미러된 구성에 추가 최상위 레벨 가상 장치(vdev)를 위한 다른 디스크 모음 추가. 자세한 내용은 저장소 풀에 장치 추가를 참조하십시오.
기존 미러된 구성에 추가 디스크 연결. 또는 복제되지 않는 구성에 추가 디스크를 연결하여 미러된 구성 만들기. 자세한 내용은 저장소 풀에서 장치 연결 및 분리를 참조하십시오.
기존 미러된 구성에서 디스크 교체(교체 디스크가 교체될 디스크의 크기보다 크거나 같은 경우에만). 자세한 내용은 저장소 풀의 장치 교체를 참조하십시오.
미러된 구성에서 디스크 분리(나머지 장치가 구성에 대한 충분한 중복성을 제공하는 경우에만). 자세한 내용은 저장소 풀에서 장치 연결 및 분리를 참조하십시오.
디스크 중 하나를 분리하여 미러된 구성을 분할하고 새로운 동일 풀 만들기. 자세한 내용은 미러링된 ZFS 저장소 풀을 분할하여 새로운 풀 만들기를 참조하십시오.
미러링된 저장소 풀에서 스페어, 로그 장치 또는 캐시 장치가 아닌 장치는 절대로 제거할 수 없습니다.
다음 루트 풀 구성 요구 사항을 고려해 보십시오.
Oracle Solaris에서는 루트 풀에 사용되는 디스크가 x86 기반 시스템 또는 GPT 지원 펌웨어가 포함된 지원되는 SPARC 시스템에서 EFI(GPT) 레이블로 설치되거나 GPT 지원 펌웨어가 포함되지 않은 SPARC 기반 시스템에서 SMI(VTOC) 레이블이 적용됩니다. 설치 프로그램은 가능한 경우 EFI(GPT) 레이블을 적용합니다. 설치 후 ZFS 루트 풀을 다시 만들어야 할 경우에는 다음 명령을 사용하여 EFI(GPT) 디스크 레이블 및 올바른 부트 정보를 적용할 수 있습니다.
# zpool create -B rpool2 c1t0d0
루트 풀은 미러된 구성 또는 단일 디스크 구성으로 만들어야 합니다. zpool add 명령을 사용하여 디스크를 추가함으로써 여러 미러된 최상위 레벨 가상 장치를 만들 수 없지만, zpool attach 명령을 사용하여 미러된 가상 장치를 확장할 수는 있습니다.
RAID-Z 또는 스트라이프 구성은 지원되지 않습니다.
루트 풀은 별도의 로그 장치를 가질 수 없습니다.
루트 풀에 대해 지원되지 않는 구성을 사용하려고 시도할 경우 다음과 유사한 메시지가 나타납니다.
ERROR: ZFS pool <pool-name> does not support boot environments
# zpool add -f rpool log c0t6d0s0 cannot add to 'rpool': root pool can not have multiple vdevs or separate logs
ZFS 루트 파일 시스템 설치 및 부트에 대한 자세한 내용은 Chapter 4, ZFS 루트 풀 구성 요소 관리를 참조하십시오.
단일 패리티 RAID-Z 풀을 만드는 것은 raidz 또는 raidz1 키워드가 mirror 대신 사용된다는 점을 제외하고 미러된 풀을 만드는 것과 동일합니다. 다음 예는 5개의 디스크로 구성된 단일 RAID-Z 장치의 풀을 만드는 방법을 보여줍니다.
# zpool create tank raidz c1t0d0 c2t0d0 c3t0d0 c4t0d0 /dev/dsk/c5t0d0
이 예는 단축 장치 이름 또는 전체 장치 이름을 사용하여 디스크를 지정할 수 있다는 것을 보여줍니다. /dev/dsk/c5t0d0 및 c5t0d0은 모두 동일 디스크를 가리킵니다.
풀을 만들 때 raidz2 또는 raidz3 키워드를 사용하여 이중 패리티 또는 삼중 패리티 RAID-Z 구성을 만들 수 있습니다. 예를 들면 다음과 같습니다.
# zpool create tank raidz2 c1t0d0 c2t0d0 c3t0d0 c4t0d0 c5t0d0 # zpool status -v tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 raidz2-0 ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 c2t0d0 ONLINE 0 0 0 c3t0d0 ONLINE 0 0 0 c4t0d0 ONLINE 0 0 0 c5t0d0 ONLINE 0 0 0 errors: No known data errors
# zpool create tank raidz3 c0t0d0 c1t0d0 c2t0d0 c3t0d0 c4t0d0 c5t0d0 c6t0d0 c7t0d0 c8t0d0 # zpool status -v tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 raidz3-0 ONLINE 0 0 0 c0t0d0 ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 c2t0d0 ONLINE 0 0 0 c3t0d0 ONLINE 0 0 0 c4t0d0 ONLINE 0 0 0 c5t0d0 ONLINE 0 0 0 c6t0d0 ONLINE 0 0 0 c7t0d0 ONLINE 0 0 0 c8t0d0 ONLINE 0 0 0 errors: No known data errors
현재 ZFS RAID-Z 구성에서는 다음 작업이 지원됩니다.
기존 RAID-Z 구성에 추가 최상위 레벨 가상 장치를 위한 다른 디스크 모음 추가. 자세한 내용은 저장소 풀에 장치 추가를 참조하십시오.
기존 RAID-Z 구성에서 디스크 교체(교체 디스크가 교체될 디스크의 크기보다 크거나 같은 경우에만). 자세한 내용은 저장소 풀의 장치 교체를 참조하십시오.
현재 RAID-Z 구성에서는 다음 작업이 지원되지 않습니다.
기존 RAID-Z 구성에 추가 디스크 연결
RAID-Z 구성에서 디스크 분리(스페어 디스크로 교체되는 디스크를 분리하거나 스페어 디스크를 분리해야 하는 경우는 제외)
RAID-Z 구성에서 로그 장치 또는 캐시 장치가 아닌 장치는 절대로 제거할 수 없습니다. RFE가 이 기능을 위해 마련되었습니다.
RAID-Z 구성에 대한 자세한 내용은 RAID-Z 저장소 풀 구성을 참조하십시오.
동기식 트랜잭션에 대한 POSIX 요구 사항을 충족하기 위해 ZIL(ZFS 계획 로그)이 제공됩니다. 예를 들어, 데이터베이스의 트랜잭션이 시스템 호출에서 반환될 때 안정된 저장 장치에서 이루어져야 할 경우가 자주 있습니다. NFS 및 기타 응용 프로그램은 fsync()를 사용하여 데이터 안정성을 보장할 수도 있습니다.
기본적으로 ZIL은 기본 풀 안의 블록에서 할당됩니다. 하지만 NVRAM 또는 전용 디스크와 같은 별도의 의도 로그 장치를 사용하면 성능을 높일 수도 있습니다.
ZFS 로그 장치 설정이 해당 환경에 적합한지 여부를 확인하려면 다음과 같은 요소를 고려하십시오.
ZFS 의도 로그용 로그 장치는 데이터베이스 로그 파일과 관련이 없습니다.
별도의 로그 장치를 구현하여 얻을 수 있는 성능 향상은 장치 유형, 풀의 하드웨어 구성 및 응용 프로그램 작업 부하에 따라 달라집니다. 기본적인 성능 정보를 보려면 다음 블로그를 참조하십시오.
http://blogs.oracle.com/perrin/entry/slog_blog_or_blogging_on
로그 장치는 복제를 취소하거나 미러링할 수 있지만 RAID-Z는 로그 장치에 지원되지 않습니다.
별도의 로그 장치가 미러링되지 않았고 장치에 로그 오류가 포함된 경우 로그 블록을 저장하면 저장소 풀로 복구됩니다.
로그 장치는 더 큰 저장소 풀의 일부로 추가, 교체, 제거, 연결, 분리, 가져오기 및 내보내기를 수행할 수 있습니다.
로그 장치를 기존 로그 장치에 연결하여 미러된 로그 장치를 만들 수 있습니다. 이 작업은 미러링되지 않은 저장소 풀에서 장치를 연결하는 것과 동일합니다.
로그 장치의 최소 크기는 풀에 있는 각 장치의 최소 크기(64MB)와 동일합니다. 로그 장치에 저장할 수 있는 in-play 데이터의 양은 비교적 적습니다. 로그 블록은 로그 트랜잭션(시스템 호출)이 커밋될 때 비워집니다.
로그 장치의 최대 크기는 저장 가능한 in-play 데이터의 최대 크기이므로 실제 메모리 크기의 약 1/2이어야 합니다. 예를 들어 시스템의 실제 메모리가 16GB인 경우 최대 로그 장치 크기는 8GB가 적당합니다.
저장소 풀을 만들 때 또는 해당 풀이 만들어진 후 ZFS 로그 장치를 설정할 수 있습니다.
다음 예는 미러된 로그 장치가 있는 미러된 저장소 풀을 만드는 방법을 보여줍니다.
# zpool create datap mirror c0t5000C500335F95E3d0 c0t5000C500335F907Fd0 \ mirror c0t5000C500335BD117d0 c0t5000C500335DC60Fd0 \ log mirror c0t5000C500335E106Bd0 c0t5000C500335FC3E7d0 # zpool status datap pool: datap state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM datap ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t5000C500335F95E3d0 ONLINE 0 0 0 c0t5000C500335F907Fd0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t5000C500335BD117d0 ONLINE 0 0 0 c0t5000C500335DC60Fd0 ONLINE 0 0 0 logs mirror-2 ONLINE 0 0 0 c0t5000C500335E106Bd0 ONLINE 0 0 0 c0t5000C500335FC3E7d0 ONLINE 0 0 0 errors: No known data errors
로그 장치 실패에서 복구에 대한 자세한 내용은 Example 10–2를 참조하십시오.
캐시 장치에서 주 메모리와 디스크 간에 추가 캐싱 계층을 제공합니다. 캐시 장치를 사용하면 대부분 정적 컨텐츠로 구성된 모든 읽기 작업 부하에 대한 성능이 최대한 향상됩니다.
캐시 장치가 있는 저장소 풀을 만들어 저장소 풀 데이터를 캐시에 저장할 수 있습니다. 예를 들면 다음과 같습니다.
# zpool create tank mirror c2t0d0 c2t1d0 c2t3d0 cache c2t5d0 c2t8d0 # zpool status tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c2t0d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 cache c2t5d0 ONLINE 0 0 0 c2t8d0 ONLINE 0 0 0 errors: No known data errors
캐시 장치가 추가되면 해당 장치가 점차적으로 주 메모리의 컨텐츠로 채워집니다. 캐시 장치의 크기에 따라 장치가 채워지는 시간이 1시간 이상 걸릴 수 있습니다. 다음과 같이 zpool iostat 명령을 사용하여 용량 및 읽기 작업을 모니터할 수 있습니다.
# zpool iostat -v pool 5
풀을 만든 후 풀에서 캐시 장치를 추가하거나 제거할 수 있습니다.
캐시 장치가 있는 ZFS 저장소 풀을 만들지 여부를 결정할 때 다음 사항을 고려하십시오.
캐시 장치를 사용하면 대부분 정적 컨텐츠로 구성된 모든 읽기 작업 부하에 대한 성능이 최대한 향상됩니다.
zpool iostat 명령을 사용하여 용량 및 읽기를 모니터할 수 있습니다.
풀을 만들 때 단일 또는 여러 캐시 장치를 추가할 수 있습니다. 풀을 만든 후 추가하고 제거할 수도 있습니다. 자세한 내용은 Example 3–4를 참조하십시오.
캐시 장치는 미러링하거나 RAID-Z 구성의 일부가 될 수 없습니다.
캐시 장치에서 읽기 오류가 발생할 경우 해당 읽기 I/O는 미러된 구성 또는 RAID-Z 구성의 일부일 수 있는 원래 저장소 풀 장치에 다시 내려집니다. 캐시 장치의 내용은 다른 시스템 캐시와 마찬가지로 휘발성으로 간주됩니다.
ZFS 저장소 풀을 만들고 관리할 때는 다음 주의 사항을 검토하십시오.
기존 저장소 풀에 속하는 디스크의 분할 영역을 재지정하거나 레이블을 재지정하지 마십시오. 루트 풀 디스크의 분할 영역을 재지정하거나 레이블을 재지정하려고 시도하면 OS를 다시 설치해야 할 수 있습니다.
다른 저장소 풀(예: 파일 또는 볼륨)의 구성 요소를 포함하는 저장소 풀을 만들지 마십시오. 이와 같이 지원되지 않는 구성에서는 교착 상태가 발생할 수 있습니다.
단일 슬라이스 또는 단일 디스크로 만들어진 풀의 경우 중복성이 없고 데이터 손실의 위험이 있습니다. 중복성 없이 여러 슬라이스로 만들어진 풀의 경우에도 데이터 손실의 위험이 있습니다. 여러 디스크에 걸쳐 있는 여러 슬라이스로 만들어진 풀은 전체 디스크로 만들어진 풀보다 관리하기가 어렵습니다.
ZFS 중복성(RAID-Z 또는 미러) 없이 만들어진 풀은 데이터 불일치를 보고할 수만 있습니다. 데이터 불일치를 복구할 수는 없습니다.
ZFS 중복성을 사용하여 만들어진 풀은 하드웨어 고장으로 인한 작동 중지 시간을 줄이는 데 도움이 되지만 하드웨어 고장, 정전 또는 연결 해제된 케이블의 영향을 받습니다. 정기적으로 데이터를 백업해야 합니다. 비엔터프라이즈급 하드웨어에서는 일상적인 풀 데이터 백업을 수행해야 합니다.
풀은 시스템 전체에서 공유될 수 없습니다. ZFS는 클러스터 파일 시스템이 아닙니다.