탐색 링크 건너뛰기 | |
인쇄 보기 종료 | |
Oracle Solaris 11.1 조정 가능 매개변수 참조 설명서 Oracle Solaris 11.1 Information Library (한국어) |
2. Oracle Solaris 커널 조정 가능 매개변수
플래시 SSD, F20 PCIe 가속기 카드, F40 PCIe 가속기 카드 및 F5100 플래시 저장소 어레이에는 다음 정보가 적용됩니다.
플래시 저장소로 ZFS를 사용할 때는 다음 일반 설명을 검토하십시오.
ZIL(ZFS 의도 로그)에 대해서는 영구 메모리를 포함하는 컨트롤러에서 관리되는 대기 시간이 짧은 디스크 또는 LUN을 사용하는 것이 좋습니다(사용 가능한 경우). 이 옵션은 대기 시간이 짧은 커밋을 위해 플래시를 사용하는 것보다 비용 효율성이 상당히 높을 수 있습니다. 로그 장치 크기는 최대 쓰기 처리량 10초를 유지할 수 있을 정도로만 커야 합니다. 이에 대한 예로는 저장소 어레이 기반 LUN 또는 배터리 보호 쓰기 캐시를 지원하는 HBA에 연결된 디스크를 들 수 있습니다.
이러한 장치를 사용할 수 없는 경우에는 ZFS 저장소 풀의 로그 장치로 사용하도록 플래시 장치의 개별 풀을 구분하십시오.
F40 및 F20 플래시 가속기 카드는 4개의 독립 플래시 모듈을 포함하며 이를 OS에 내보냅니다. F5100은 최대 80개의 독립 플래시 모듈을 포함합니다. 각 플래시 모듈은 운영 체제에 단일 장치로 표시됩니다. SSD는 OS에서 단일 장치로 표시됩니다. 플래시 장치는 특히 NFS 서버에서 사용될 경우 커밋 대기 시간을 줄이기 위해 ZFS 로그 장치로 사용될 수 있습니다. 예를 들어, ZFS 로그 장치로 사용되는 플래시 장치의 단일 플래시 모듈은 단일 경량 스레드 작업의 대기 시간을 10배까지 줄일 수 있습니다. 더 많은 플래시 장치를 하나의 스트라이프로 구성하여 대규모 동기 작업에 대한 처리량을 높일 수 있습니다.
안정성을 위해서는 로그 장치를 미러링해야 합니다. 최대한 보호하기 위해서는 미러를 별도의 플래시 장치에 만들어야 합니다. F20 및 F40 PCIe 가속기 카드의 경우 미러가 서로 다른 물리적 PCIe 카드에 상주하도록 하여 보호 수준을 극대화할 수 있습니다. F5100 저장소 어레이의 경우에는 별도의 F5100 장치에 미러를 배치하여 보호 수준을 극대화할 수 있습니다.
로그 장치로 사용되지 않는 플래시 장치는 보조 레벨의 캐시 장치로 사용될 수 있습니다. 이 장치는 기본 디스크 저장소에서 IOPS를 오프로드하고 일반적으로 사용되는 데이터의 읽기 대기 시간을 개선하는 역할을 합니다.
플래시 장치를 ZFS 로그 또는 캐시 장치로 추가할 때는 다음 권장 사항을 검토하십시오.
ZFS 로그 또는 캐시 장치는 zpool add 명령을 사용하여 기존 ZFS 저장소 풀에 추가할 수 있습니다. zpool add 명령을 사용할 때는 각별히 신중해야 합니다. 실수로 로그 장치를 일반 풀 장치로 추가하면 처음부터 다시 풀을 삭제하고 복원해야 합니다. 개별 로그 장치 자체는 풀에서 제거할 수 있습니다.
활성 저장소에서 이 작업을 수행하기 전에 먼저 zpool add 명령 사용 방법을 숙지하십시오. zpool add -n 옵션을 사용하여 구성을 만들지 않고도 이를 미리 볼 수 있습니다. 예를 들어, 장치를 로그 장치로 추가하기 위한 다음 zpool add 미리 보기 구문은 잘못된 구문입니다.
# zpool add -n tank c4t1d0 vdev verification failed: use -f to override the following errors: mismatched replication level: pool uses mirror and new vdev is disk Unable to build pool from specified devices: invalid vdev configuration
로그 장치를 기존 풀에 추가하기 위한 올바른 zpool add 미리 보기 구문은 다음과 같습니다.
# zpool add -n tank log c4t1d0 would update 'tank' to the following configuration: tank mirror c4t0d0 c5t0d0 logs c4t1d0
여러 장치를 지정한 경우 하나의 스트라이프로 구성됩니다. 자세한 내용은 다음 예 또는 zpool(1M)을 참조하십시오.
플래시 장치인 c4t1d0은 ZFS 로그 장치로 추가할 수 있습니다.
# zpool add pool log c4t1d0
사용할 수 있는 플래시 장치가 2개이면 미러링된 로그 장치를 추가할 수 있습니다.
# zpool add pool log mirror c4t1d0 c4t2d0
사용 가능한 플래시 장치는 읽기에 대한 캐시 장치로 추가할 수 있습니다.
# zpool add pool cache c4t3d0
캐시 장치는 하나의 스트라이프로 구성되므로 미러링할 수 없습니다.
# zpool add pool cache c4t3d0 c4t4d0
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";
위의 예에서 설명한 대로 공급업체 ID(VID) 문자열이 8자로 채워졌고 제품 ID(PID) 문자열이 16자로 채워졌는지 확인하십시오.
주의 - 모든 캐시 동기화 명령은 장치에서 무시됩니다. 이 작업의 책임은 사용자에게 있습니다. |
저장소 어레이의 LUN에서 inquiry 하위 명령을 실행하려면 format 유틸리티를 사용합니다. 예를 들면 다음과 같습니다.
# format . . . Specify disk (enter its number): x format> inquiry Vendor: ATA Product: Marvell Revision: XXXX format>
구조에 따라 다음 중 하나를 선택합니다.
F40 플래시 장치의 경우 /kernel/drv/sd.conf에 다음 항목을 추가합니다. 아래 항목에서 "ATA"가 8자로 채워졌고 "3E128-TS2-550B01"이 16자를 포함하는지 확인합니다. 총 문자열 길이는 24자입니다.
sd-config-list="ATA 3E128-TS2-550B01","disksort:false, cache-non:true";
F20 및 F5100 플래시 장치의 경우 구조에 따라 다음 중 하나를 선택합니다. 아래 항목에서 "ATA"는 8자로 채워지고 "MARVELL SD88SA02"는 16자를 포함합니다. 총 문자열 길이는 24자입니다.
여러 SPARC 구조 – 다음 항목을 /kernel/drv/ssd.conf에 추가합니다.
ssd-config-list = "ATA MARVELL SD88SA02","throttle-max:32, disksort:false, cache-non:true";
x64 및 몇 개의 SPARC 드라이버 – 다음 항목을 /kernel/drv/sd.conf에 추가합니다.
ssd-config-list="ATA MARVELL SD88SA02","throttle-max:32, disksort:false, cache-non:true";
표시된 것처럼 sd-config-list 항목에서 VID(공급업체 ID)를 8자로 만들고(이 경우 ATA) PID(제품 ID)를 16자로 만들기 위해(이 경우 MARVELL) 공백을 주의해서 추가합니다.
시스템을 재부트합니다.
성능에 대한 부정적인 영향 없이 zfs_nocacheflush를 다시 기본값(0)으로 조정할 수 있습니다.
Solaris 11.1 OS에는 SCSI unmap 루틴에 대한 과도한 호출이 발생하는 문제가 있습니다. 이 문제는 특히 플래시 성능에 영향을 줍니다. 임시해결책은 다음과 같이 unmap 기능을 사용 안함으로 설정하는 것입니다.
/etc/system 파일에 다음 항목을 포함합니다.
set zfs:zfs_unmap_ignore_size=0
시스템을 재부트합니다.