Oracle® Solaris 11.2 조정 가능 매개변수 참조 설명서

인쇄 보기 종료

업데이트 날짜: 2014년 12월
 
 

플래시 및 NVRAM 저장 장치에 대한 적절한 캐시 비우기 동작 보장

ZFS는 디스크 레벨 캐시를 관리하는 저장 장치와 작동하도록 설계되었습니다. ZFS는 일반적으로 저장 장치에 대해 캐시 비우기를 요청하여 데이터가 안정적인 저장소에 안전하게 배치되는지 확인합니다. JBOD 저장소의 경우 설계된 대로 문제 없이 작동합니다. 여러 NVRAM 기반 저장소 배열의 경우, 배열이 캐시 비우기 요청을 받은 후 이를 무시하지 않고 이와 관련한 어떤 작업을 수행하면 성능 문제가 발생할 수 있습니다. 일부 저장소 배열은 NVRAM 보호를 통해 캐시가 충분히 안정적인 저장소 역할을 수행함에도 불구하고 대량의 캐시를 비웁니다.

ZFS는 uberblock 업데이트 후 5초 정도의 간격으로 비우기를 실행합니다. 이러한 간헐적인 비우기는 중요도가 높지 않으므로 여기에 대해서는 조정이 필요하지 않습니다. ZFS는 또한 응용 프로그램이 동시 쓰기(O_DSYNC, fsync, NFS 커밋 등)를 요청할 때마다 비우기를 실행합니다. 이 유형의 비우기 작업은 완료될 때까지 응용 프로그램을 대기시키고 성능에 영향을 줍니다. 실제로는 이로 인한 성능 영향이 매우 클 수 있습니다. 성능 관점에서 볼 때 이러한 문제는 NVRAM 기반 저장소를 사용함으로써 얻는 이점을 상쇄시킬 수 있습니다.

캐시 비우기 조정은 최근까지 로그 장치로 사용될 경우 플래시 장치 성능을 향상시키는 데 도움이 되는 것으로 나타났습니다. ZFS에 노출된 모든 LUN이 NVRAM으로 보호되는 저장소 배열로부터 오고, 절차에 따라 이후에 보호되지 않는 LUN이 추가되지 않도록 보장되는 경우, zfs_nocacheflush를 설정하여 ZFS가 비우기 요청을 실행하지 않도록 조정할 수 있습니다. ZFS에 노출되는 일부 LUN이 NVRAM으로 보호되지 않는 경우 이러한 조정 방식은 데이터 손실, 응용 프로그램 레벨 손상 또는 풀 손상까지도 일으킬 수 있습니다. 일부 NVRAM 보호 저장소 배열에서 캐시 비우기 명령은 no-op이므로 이러한 상황에서는 조정을 수행해도 성능상의 차이를 가져올 수 없습니다.

최근 OS 변동에 따라 비우기 요청 체계는 적절한 보호 수준이 갖춰진 경우 저장 장치가 요청을 무시하도록 지정되었습니다. 이러한 변경 사항에 따라 디스크 드라이버 수정이 필요하며, NVRAM 장치에서 업데이트된 체계를 지원해야 합니다. NVRAM 장치에서 이러한 개선 사항이 인식되지 않을 경우 해당 지침에 따라 Solaris OS가 어레이에 캐시 동기화 명령을 보내지 않도록 지정하십시오. 이러한 지침을 사용할 경우에는 모든 대상 LUN이 실제로 NVRAM에 의해 보호되는지 확인해야 합니다.

일부 경우에는 플래시 및 NVRAM 장치가 비휘발성 장치이며, 캐시를 비울 필요가 없음을 OS에 적절하게 알리지 않을 수 있습니다. 캐시 비우기는 비용이 많이 드는 작업입니다. 불필요한 비우기 작업은 일부 경우에 성능을 크게 저하시킬 수 있습니다.

아래의 조정 항목을 적용하기 전에 다음 zfs_nocacheflush 구문 제한 사항을 검토하십시오.

  • 아래의 조정 구문은 sd.conf에 포함할 수 있지만 공급업체/제품별로 단일 sd-config-list 항목이어야 합니다.

  • 여러 장치 항목이 필요한 경우 다음 구문을 사용해서 동일 라인에 공급업체 ID 및 sd 조정 문자열 쌍을 여러 개 지정할 수 있습니다.

    #              "012345670123456789012345","tuning    ",
    sd-config-list="|-VID1-||-----PID1-----|","param1:val1, param2:val2",
                   "|-VIDN-||-----PIDN-----|","param1:val1, param3:val3";

    위의 예에서 설명한 대로 VID(공급업체 ID) 문자열이 8자로 채워졌고 PID(제품 ID) 문자열이 16자로 채워졌는지 확인하십시오.


Caution

주의  -  모든 캐시 동기화 명령은 장치에서 무시됩니다. 이 작업의 책임은 사용자에게 있습니다.


  1. 저장소 배열의 LUN에서 inquiry 하위 명령을 실행하려면 format 유틸리티를 사용합니다. 예를 들면 다음과 같습니다.

    # format
    .
    .
    .
    Specify disk (enter its number): x
    format> inquiry
    Vendor:   ATA
    Product:  Marvell
    Revision: XXXX
    format>
  2. 구조에 따라 다음 중 하나를 선택합니다.

    • 모든 장치에 대해 /kernel/drv/sd.conf 파일을 /etc/driver/drv/sd.conf 파일에 복사합니다.

    • F40 플래시 장치의 경우 /kernel/drv/sd.conf에 다음 항목을 추가합니다. 아래 항목에서 ATA가 8자로 채워졌고 3E128-TS2-550B01이 16자를 포함하는지 확인합니다. 총 문자열 길이는 24자입니다.

      sd-config-list="ATA  3E128-TS2-550B01","disksort:false, cache-nonvolatile:true, physical-block-size:4096";
    • F80 플래시 장치의 경우 /kernel/drv/sd.conf에 다음 항목을 추가합니다. ATA가 8자로 채워졌고 3E128-TS2-550B01이 16자를 포함하는지 확인합니다. 총 문자열 길이는 24자입니다.

      sd-config-list="ATA  2E256-TU2-510B00","disksort:false, cache-nonvolatile:true, physical-block-size:4096";
      
    • F20 및 F5100 플래시 장치의 경우 구조에 따라 다음 중 하나를 선택합니다. 아래 항목에서 ATA는 8자로 채워지고 MARVELL SD88SA02는 16자를 포함합니다. 총 문자열 길이는 24자입니다.

    • 다음 항목을 /etc/driver/drv/sd.conf에 추가합니다.

      sd-config-list="ATA  MARVELL SD88SA02","throttle-max:32, disksort:false, cache-nonvolatile:true";
  3. 표시된 것처럼 sd-config-list 항목에서 VID(공급업체 ID)를 8자로 만들고(이 경우 ATA) PID(제품 ID)를 16자로 만들기 위해(이 경우 MARVELL) 공백을 주의해서 추가합니다.

  4. 시스템을 재부트합니다.

    성능에 대한 부정적인 영향 없이 zfs_nocacheflush를 다시 기본값(0)으로 조정할 수 있습니다.

  5. 비우기 동작이 올바른지 확인합니다.

    확인을 위해서는 Appendix A, 시스템 확인 스크립트에 제공된 스크립트를 사용합니다.