Oracle® Solaris 11.2의 ZFS 파일 시스템 관리

인쇄 보기 종료

업데이트 날짜: 2014년 12월
 
 

ZFS 저장소 풀 만들기 방식

다음 절에서는 일반 및 특정 풀 방법을 제공합니다.

일반 저장소 풀 방법

  • 전체 디스크를 사용하여 디스크 쓰기 캐시를 사용으로 설정하고 유지 관리를 용이하게 합니다. 슬라이스에 풀을 만들면 디스크 관리 및 복구가 더 복잡해집니다.

  • ZFS가 데이터 불일치를 복구할 수 있도록 ZFS 중복을 사용합니다.

    • 비중복 풀을 만들면 다음 메시지가 표시됩니다.

      # zpool create tank c4t1d0 c4t3d0
      'tank' successfully created, but with no redundancy; failure
      of one device will cause loss of the pool
    • 미러링된 풀의 경우 미러링된 디스크 쌍을 사용합니다.

    • RAID-Z 풀의 경우 VDEV당 3-9개 디스크 그룹으로 묶습니다.

    • 동일한 풀 내에서는 RAID-Z 및 미러링된 구성 요소를 혼합하지 마십시오. 이러한 풀은 관리하기 어렵고 성능도 저하될 수 있습니다.

  • 핫 스패어를 사용하여 하드웨어 고장으로 인한 작동 중지 시간을 줄입니다.

  • 장치 간에 I/O가 균형을 이루도록 유사한 크기의 디스크를 사용합니다.

    • 작은 LUN을 큰 LUN으로 확장할 수 있습니다.

    • 최적의 metaslab 크기를 유지하려면 차이가 심한 경우(예: 128MB와 2TB) LUN을 확장하지 마십시오.

  • 더 빠른 시스템 복구를 지원하기 위해 작은 루트 풀과 큰 데이터 풀을 만드는 것이 좋습니다.

  • 권장되는 최소 풀 크기는 8GB입니다. 최소 풀 크기는 64MB이지만 8GB 미만의 경우 무료 풀 공간을 할당 및 회수하기가 어려워집니다.

  • 권장되는 최대 풀 크기는 작업 부하 또는 데이터 크기에 적합해야 합니다. 정기적으로 백업할 수 있는 것보다 많은 데이터를 저장하려고 시도하지 마십시오. 그렇지 않으면 예측하지 못한 이벤트로 인해 데이터가 위험해질 수 있습니다.

로컬 또는 네트워크 연결 저장소 어레이에서 풀 만들기 실행 방법도 참조하십시오.

루트 풀 생성 방법

  • SPARC (SMI (VTOC)): s* 식별자를 사용하여 슬라이스로 구성된 루트 풀을 만듭니다. p* 식별자는 사용하지 마십시오. 일반적으로 시스템의 ZFS 루트 풀은 시스템 설치 시 만들어집니다. 다른 루트 풀을 만들거나 루트 풀을 다시 만드는 경우 SPARC 시스템에서 다음과 같은 구문을 사용합니다.

    # zpool create rpool c0t1d0s0

    또는 미러링된 루트 풀을 만듭니다. 예를 들면 다음과 같습니다.

    # zpool create rpool mirror c0t1d0s0 c0t2d0s0
  • Solaris 11.1 x86(EFI(GPT)): d* 식별자를 사용하여 전체 디스크로 구성된 루트 풀을 만듭니다. p* 식별자는 사용하지 마십시오. 일반적으로 시스템의 ZFS 루트 풀은 시스템 설치 시 만들어집니다. 다른 루트 풀을 만들거나 루트 풀을 다시 만드는 경우 다음과 비슷한 구문을 사용합니다.

    # zpool create rpool c0t1d0

    또는 미러링된 루트 풀을 만듭니다. 예를 들면 다음과 같습니다.

    # zpool create rpool mirror c0t1d0 c0t2d0
  • 루트 풀은 미러된 구성 또는 단일 디스크 구성으로 만들어야 합니다. RAID-Z 또는 스트라이프 구성은 모두 지원되지 않습니다. zpool add 명령을 사용하여 디스크를 추가함으로써 여러 미러된 최상위 레벨 가상 장치를 만들 수 없지만, zpool attach 명령을 사용하여 미러된 가상 장치를 확장할 수는 있습니다.

  • 루트 풀은 별도의 로그 장치를 가질 수 없습니다.

  • AI 설치 도중 풀 등록 정보를 설정할 수 있지만 gzip 압축 알고리즘은 루트 풀에서 지원되지 않습니다.

  • 초기 설치로 루트 풀을 만든 후에는 루트 풀 이름을 바꾸지 마십시오. 루트 풀의 이름을 바꾸면 시스템이 부트되지 않을 수 있습니다.

  • 루트 풀 디스크는 특히 기업 환경에서 연속된 작업을 위해 매우 중요하므로 운용 시스템에서는 USB 메모리에 루트 풀을 만들지 마십시오. 루트 풀에는 시스템의 내장 디스크를 사용하고 비루트 데이터에 대해 사용하는 것과 최소한 동일한 품질의 디스크를 사용하십시오. 또한 USB 메모리가 물리적 메모리 크기의 1/2 이상에 해당하는 덤프 볼륨 크기를 지원할 수 있을 정도로 크지 않을 수 있습니다.

  • 핫 스페어를 루트 풀에 추가하기 보다는 이중이나 삼중 미러 루트 풀을 만들어 보십시오. 또한 루트 풀과 데이터 풀 사이에 핫 스페어를 공유하지 마십시오.

  • 루트 풀 장치에 씬 프로비전된 VMware 장치를 사용하지 마십시오.

비루트 풀 생성 방법

  • d* 식별자를 사용하여 전체 디스크로 비루트 풀을 만듭니다. p* 식별자는 사용하지 마십시오.

    • ZFS는 추가 볼륨 관리 소프트웨어 없이도 잘 작동합니다.

    • 최상의 성능을 위해 개별 디스크 또는 소수의 디스크로 구성된 최소 LUN을 사용합니다. ZFS에 LUN 설정을 보다 자세히 표시하면 ZFS가 더 나은 I/O 일정 잡기 결정을 내릴 수 있습니다.

  • 여러 컨트롤러에서 중복 풀 구성을 만들어 컨트롤러 오류로 인한 작동 중지 시간을 줄입니다.

    • 미러링된 저장소 풀 – 추가 디스크 공간을 사용하지만 일반적으로 임의 읽기가 작을 때 성능이 더 좋습니다.

      # zpool create tank mirror c1d0 c2d0 mirror c3d0 c4d0
    • RAID-Z 저장소 풀 – 패리티가 1(raidz), 2(raidz2) 또는 3(raidz3)인 3개의 패리티 전략을 사용하여 만들 수 있습니다. RAID-Z 구성은 디스크 공간을 최대화하며 일반적으로 데이터를 큰 청크(128K 이상)로 쓰고 읽을 때 성능이 향상됩니다.

      • 각각 3개 디스크(2+1)의 2개 VDEV가 포함된 단일 패리티 RAID-Z(raidz) 구성을 고려해 보십시오.

        # zpool create rzpool raidz1 c1t0d0 c2t0d0 c3t0d0 raidz1 c1t1d0 c2t1d0 c3t1d0
      • RAIDZ-2 구성은 더 향상된 데이터 가용성을 제공하며, RAID-Z와 비슷한 성능을 제공합니다. 또한 RAID-Z 또는 양방향 미러에 비해 상당히 향상된 MTTDL(Mean Time To Data Loss)을 제공합니다. 6개의 디스크(4+2)에 이중 패리티 RAID-Z(raidz2) 구성을 만듭니다.

        # zpool create rzpool raidz2 c0t1d0 c1t1d0 c4t1d0 c5t1d0 c6t1d0 c7t1d0
        raidz2 c0t2d0 c1t2d0 c4t2d0 c5t2d0 c6t2d0 c7t2d
      • RAIDZ-3 구성은 디스크 공간을 최대화하며, 세 개의 디스크 오류를 견딜 수 있으므로 뛰어난 가용성을 제공합니다. 9개 디스크(6+3)에서 삼중 패리티 RAID-Z(raidz3) 구성을 만듭니다.

        # zpool create rzpool raidz3 c0t0d0 c1t0d0 c2t0d0 c3t0d0 c4t0d0
        c5t0d0 c6t0d0 c7t0d0 c8t0d0

로컬 또는 네트워크 연결 저장소 어레이에서 풀 만들기 실행 방법

로컬 또는 원격으로 연결된 저장소 어레이에서 ZFS 저장소 풀을 만들 때는 다음과 같은 저장소 풀 실행 방법을 참조하십시오.

  • SAN 장치에 풀을 만들고, 네트워크 연결 속도가 느린 경우, 풀의 장치가 일정 기간 동안 UNAVAIL 상태가 될 수 있습니다. 네트워크 연결 상태가 연속적으로 데이터를 제공하는 데 적합한지 평가해야 합니다. 또한 루트 풀용으로 SAN 장치를 사용할 경우 시스템을 부트하는 즉시 해당 장치를 사용할 수 없고 루트 풀의 장치가 UNAVAIL 상태가 될 수 있습니다.

  • ZFS가 쓰기 캐시 비우기를 요청한 후 디스크 어레이가 해당 캐시를 비우지 않는지 해당 어레이 제조업체에 확인하십시오.

  • Oracle Solaris ZFS가 로컬의 작은 디스크 캐시를 활성화하여 적절한 시간에 비워질 수 있도록 디스크 슬라이스가 아닌 전체 디스크를 저장소 풀 장치로 사용하십시오.

  • 최상의 성능을 위해서는 어레이의 각 물리적 디스크에 대해 하나의 LUN을 만드십시오. 큰 LUN을 하나만 사용할 경우 ZFS가 너무 적은 수의 읽기 I/O 작업을 대기열에 넣어서 실제로 저장소에 대한 최적의 성능을 얻을 수 없습니다. 반대로 작은 LUN을 너무 많이 사용하면 보류 중인 읽기 I/O 작업 수가 너무 많아져서 저장소를 가득 채울 수 있습니다.

  • 가상 공간 할당을 위해 동적(또는 씬) 프로비저닝 소프트웨어를 사용하는 저장소 어레이는 Oracle Solaris ZFS에 권장되지 않습니다. Oracle Solaris ZFS가 수정된 데이터를 빈 공간에 기록할 때는 전체 LUN에 기록합니다. Oracle Solaris ZFS 쓰기 프로세스는 저장소 어레이의 관점에서 볼 때 모든 가상 공간을 할당하므로 동적 프로비저닝의 이점과는 반대가 됩니다.

    ZFS를 사용할 때는 동적 프로비저닝 소프트웨어가 필요하지 않을 수 있습니다.

    • 기존 ZFS 저장소 풀에서 LUN을 확장하여 새 공간을 사용할 수 있습니다.

    • 작은 LUN을 큰 LUN으로 바꿀 경우에도 비슷한 결과를 얻을 수 있습니다.

    • 풀의 저장소 요구를 평가하고 필요한 저장소 요구에 따라 더 작은 LUN으로 풀을 만들 경우에도 더 많은 공간이 필요할 때는 항상 LUN을 더 큰 크기로 확장할 수 있습니다.

  • 어레이가 개별 장치를 표시할 수 있는 경우(JBOD 모드), ZFS가 데이터 불일치를 보고하고 수정할 수 있도록 이 유형의 어레이에 중복된 ZFS 저장소 풀(미러 또는 RAID-Z)을 만드는 것이 좋습니다.

Oracle 데이터베이스에 대한 풀 생성 방법

Oracle 데이터베이스를 만드는 경우 다음 저장소 풀 방법을 고려해 보십시오.

  • 미러링된 풀 또는 하드웨어 RAID를 풀에 사용합니다.

  • RAID-Z 풀은 일반적으로 모든 읽기 작업 부하에 권장되지 않습니다.

  • 데이터베이스 리두 로그에 별도의 로그 장치를 사용하여 작은 개별 풀을 만듭니다.

  • 아카이브 로그에 대한 작은 개별 풀을 만듭니다.

Oracle 데이터베이스를 위해 ZFS를 조정하는 데 대한 자세한 내용은 Oracle Solaris 11.2 조정 가능 매개변수 참조 설명서 의 Oracle 데이터베이스에 대한 ZFS 조정을 참조하십시오.

VirtualBox에서 ZFS 저장소 풀 사용

  • Virtual Box는 기본적으로 기본 저장소의 캐시 비우기 명령을 무시하도록 구성되어 있습니다. 즉, 시스템 충돌이나 하드웨어 오류의 경우 데이터가 손실될 수 있습니다.

  • Virtual Box에서 캐시 비우기를 사용으로 설정하려면 다음 명령을 실행합니다.

    VBoxManage setextradata vm-name "VBoxInternal/Devices/type/0/LUN#n/Config/IgnoreFlush" 0
    • vm-name – 가상 시스템의 이름

    • type – 컨트롤러 유형이며 piix3ide(일반적인 IDE 가상 컨트롤러를 사용하는 경우) 또는 ahci(SATA 컨트롤러를 사용하는 경우)

    • n – 디스크 번호