탐색 링크 건너뛰기 | |
인쇄 보기 종료 | |
Oracle Solaris 11.1 관리: ZFS 파일 시스템 Oracle Solaris 11.1 Information Library (한국어) |
1. Oracle Solaris ZFS 파일 시스템(소개)
3. Oracle Solaris ZFS 저장소 풀 관리
5. Oracle Solaris ZFS 파일 시스템 관리
6. Oracle Solaris ZFS 스냅샷 및 복제 작업
7. ACL 및 속성을 사용하여 Oracle Solaris ZFS 파일 보호
10. Oracle Solaris ZFS 문제 해결 및 풀 복구
다음 절에서는 ZFS 저장소 풀을 만들고 모니터하는 권장 방법을 제공합니다. 저장소 풀 문제 해결에 대한 자세한 내용은 10 장Oracle Solaris ZFS 문제 해결 및 풀 복구를 참조하십시오.
최신 Solaris 릴리스와 패치를 사용하여 시스템을 최신 상태로 유지합니다.
풀 장치를 변경하거나 미러링된 저장소 풀을 분할하기 전에 데이터가 안전하게 기록되도록 보장하기 위해 컨트롤러가 캐시 비우기 명령을 따르는지 확인합니다. Oracle/Sun 하드웨어에서는 일반적으로 문제가 되지 않지만 하드웨어의 캐시 비우기 설정이 사용으로 설정되었는지 확인하는 것이 좋습니다.
실제 시스템 작업 부하에 대한 크기 메모리 요구 사항을 충족합니다.
데이터베이스 응용 프로그램 등에 대해 알려진 응용 프로그램 메모리 단위를 사용하여 ARC 크기 상한을 제한하면 응용 프로그램이 ZFS 캐시에서 필요한 메모리를 재생 이용할 필요가 없습니다.
중복 제거 메모리 요구 사항을 고려해 보십시오.
다음 명령으로 ZFS 메모리 사용량을 식별합니다.
# mdb -k > ::memstat Page Summary Pages MB %Tot ------------ ---------------- ---------------- ---- Kernel 388117 1516 19% ZFS File Data 81321 317 4% Anon 29928 116 1% Exec and libs 1359 5 0% Page cache 4890 19 0% Free (cachelist) 6030 23 0% Free (freelist) 1581183 6176 76% Total 2092828 8175 Physical 2092827 8175 > $q
메모리 손상을 방지하지 위해 ECC 메모리를 사용하는 것이 좋습니다. 기록되지 않은 메모리 손상으로 인해 데이터가 손상될 수 있습니다.
정기 백업 수행 – ZFS 중복을 사용하여 만든 풀은 하드웨어 고장으로 인한 작동 중지 시간을 줄이는 데 도움이 되지만 하드웨어 고장, 정전 또는 연결 해제된 케이블의 영향을 받습니다. 정기적으로 데이터를 백업해야 합니다. 데이터가 중요한 경우 백업해야 합니다. 데이터 복사본을 제공하는 여러 가지 방법은 다음과 같습니다.
정기 또는 일별 ZFS 스냅샷
ZFS 풀 데이터의 주별 백업. zpool split 명령을 사용하여 미러링된 ZFS 저장소 풀의 정확한 복제본을 만들 수 있습니다.
엔터프라이즈 레벨 백업 제품을 사용한 월별 백업
하드웨어 RAID
ZFS가 저장소와 중복을 관리할 수 있도록 하드웨어 RAID 대신 JBOD 모드를 저장소 배열에 사용하는 것이 좋습니다.
하드웨어 RAID나 ZFS 중복(또는 둘 다)을 사용합니다.
ZFS 중복 사용 시 여러 가지 이점 – 운용 환경의 경우 데이터 불일치를 복구할 수 있도록 ZFS를 구성합니다. 기본 저장 장치에 구현된 RAID 레벨에 관계없이 RAID-Z, RAID-Z-2, RAID-Z-3, 미러와 같은 ZFS 중복을 사용합니다. 이러한 중복을 사용하면 기본 저장 장치나 그 호스트 연결에 결함이 발생할 경우 ZFS에서 복구하고 수리할 수 있습니다.
로컬 또는 네트워크 연결 저장소 어레이에서 풀 만들기 실행 방법도 참조하십시오.
충돌 덤프는 물리적 메모리 범위의 1/2- 3/4 크기로 추가 디스크 공간을 사용합니다.
다음 절에서는 일반 및 특정 풀 방법을 제공합니다.
전체 디스크를 사용하여 디스크 쓰기 캐시를 사용으로 설정하고 유지 관리를 용이하게 합니다. 슬라이스에 풀을 만들면 디스크 관리 및 복구가 더 복잡해집니다.
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을 확장하지 마십시오.
더 빠른 시스템 복구를 지원하기 위해 작은 루트 풀과 큰 데이터 풀을 만드는 것이 좋습니다.
SPARC (SMI (VTOC)): s* 식별자를 사용하여 슬라이스로 구성된 루트 풀을 만듭니다. p* 식별자는 사용하지 마십시오. 일반적으로 시스템의 ZFS 루트 풀은 시스템 설치 시 만들어집니다. 다른 루트 풀을 만들거나 루트 풀을 다시 만드는 경우 다음과 비슷한 구문을 사용합니다.
# zpool create rpool c0t1d0s0
또는 미러링된 루트 풀을 만듭니다. 예를 들면 다음과 같습니다.
# zpool create rpool mirror c0t1d0s0 c0t2d0s0
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 이상에 해당하는 덤프 볼륨 크기를 지원할 수 있을 정도로 크지 않을 수 있습니다.
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 데이터베이스를 만드는 경우 다음 저장소 풀 방법을 고려해 보십시오.
미러링된 풀 또는 하드웨어 RAID를 풀에 사용합니다.
RAID-Z 풀은 일반적으로 모든 읽기 작업 부하에 권장되지 않습니다.
데이터베이스 리두 로그에 별도의 로그 장치를 사용하여 작은 개별 풀을 만듭니다.
아카이브 로그에 대한 작은 개별 풀을 만듭니다.
자세한 내용은 다음 백서를 참조하십시오.
http://blogs.oracle.com/storage/entry/new_white_paper_configuring_oracle
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>은 디스크 번호입니다.
최고 성능을 얻으려면 풀 용량을 90% 아래로 유지합니다.
모든 읽기/쓰기 작업 부하의 경우 미러링된 풀이 RAID-Z 풀보다 권장됩니다.
별도의 로그 장치
동기식 쓰기 성능 향상을 위해 권장됩니다.
높은 동기식 쓰기 부하 상태에서 기본 풀에 많은 로그 블록을 쓰지 않도록 단편화를 최소화합니다.
읽기 성능을 향상시키려면 별도의 캐시 장치를 사용하는 것이 좋습니다.
스크러빙/리실버링 - 수많은 장치가 있는 매우 큰 RAID-Z 풀은 스크러빙 및 리실버링 시간이 오래 걸립니다.
풀 성능이 느립니다. zpool status 명령을 사용하여 풀 성능 문제를 발생시키는 하드웨어 문제를 제외합니다. zpool status 명령에서 문제가 표시되지 않는 경우 fmdump 명령을 사용하여 하드웨어 오류를 표시하거나 fmdump -eV 명령을 사용하여 보고된 결함을 초래하지 않은 하드웨어 오류를 모두 검토합니다.
최상의 성능을 위해 풀 용량이 90% 미만인지 확인합니다.
풀이 가득 차 있고 파일 시스템이 자주 업데이트되는 경우(예: 활발한 메일 서버) 풀 성능이 저하될 수 있습니다. 가득 찬 풀은 성능 저하를 일으킬 수 있지만 다른 문제는 없습니다. 주요 작업 부하가 변경할 수 없는 파일인 경우 풀 사용률을 95-96% 범위로 유지합니다. 95-96% 범위에서는 가장 정적인 컨텐츠조차 쓰기, 읽기, 리실버링 성능이 악화될 수 있습니다.
풀 및 파일 시스템 공간이 가득 차지 않도록 이러한 공간을 모니터링합니다.
파일 시스템 공간이 풀 용량의 90%를 초과하지 않도록 ZFS 쿼터 및 예약을 사용하십시오.
풀 건전성 모니터
중복 풀의 경우 매주 zpool status 및 fmdump를 사용하여 풀을 모니터합니다.
비중복 풀의 경우 격주로 zpool status 및 fmdump를 사용하여 풀을 모니터합니다.
정기적으로 zpool scrub을 실행하여 데이터 무결성 문제를 식별합니다.
소비자 품질의 드라이브가 있는 경우, 주 단위 스크러빙 일정을 고려합니다.
데이터 센터 품질의 드라이브가 있는 경우, 월 단위 스크러빙 일정을 고려합니다.
모든 장치가 현재 작동하는지 확인하려면 장치를 교체하거나 풀 중복성을 일시적으로 줄이기 전에 스크러빙을 실행해야 합니다.
풀 또는 장치 오류 모니터링 - 아래 설명된 대로 zpool status를 사용합니다. fmdump 또는 fmdump -eV를 사용하여 장치 결함이나 오류가 발생했는지도 확인합니다.
중복 풀의 경우 매주 zpool status 및 fmdump를 사용하여 풀 건전성을 모니터합니다.
비중복 풀의 경우 격주로 zpool status 및 fmdump를 사용하여 풀 건전성을 모니터합니다.
풀 장치가 UNAVAIL 또는OFFLINE입니다. 풀 장치를 사용할 수 없는 경우 장치가 format 명령 출력에 나열되는지 확인합니다. 장치가 format 출력에 나열되지 않는 경우 ZFS에 표시되지 않습니다.
풀 장치가 UNAVAIL 또는 OFFLINE인 경우 장치에서 장애가 발생했거나 케이블 연결이 해제되었거나 불량 케이블 또는 불량 컨트롤러와 같은 기타 하드웨어 문제로 인해 장치에 액세스할 수 없는 것입니다.
하드웨어 구성 요소에 결함이 있는 것으로 진단되면 알리도록 smtp-notify 서비스를 구성하는 것이 좋습니다. 자세한 내용은 smf(5) 및 smtp-notify(1M)의 알림 매개변수 절을 참조하십시오.
기본적으로 일부 알림은 루트 사용자에게 자동으로 전송되도록 설정됩니다. /etc/aliases 파일에서 루트로 사용자 계정에 대한 별칭을 추가하면 다음과 비슷한 전자 메일 알림을 받게 됩니다.
From noaccess@tardis.space.com Fri Jun 29 16:58:59 2012 Date: Fri, 29 Jun 2012 16:58:58 -0600 (MDT) From: No Access User <noaccess@tardis.space.com> Message-Id: <201206292258.q5TMwwFL002753@tardis.space.com> Subject: Fault Management Event: tardis:ZFS-8000-8A To: root@tardis.space.com Content-Length: 771 SUNW-MSG-ID: ZFS-8000-8A, TYPE: Fault, VER: 1, SEVERITY: Critical EVENT-TIME: Fri Jun 29 16:58:58 MDT 2012 PLATFORM: ORCL,SPARC-T3-4, CSN: 1120BDRCCD, HOSTNAME: tardis SOURCE: zfs-diagnosis, REV: 1.0 EVENT-ID: 76c2d1d1-4631-4220-dbbc-a3574b1ee807 DESC: A file or directory in pool 'pond' could not be read due to corrupt data. AUTO-RESPONSE: No automated response will occur. IMPACT: The file or directory is unavailable. REC-ACTION: Use 'fmadm faulty' to provide a more detailed view of this event. Run 'zpool status -xv' and examine the list of damaged files to determine what has been affected. Please refer to the associated reference document at http://support.oracle.com/msg/ZFS-8000-8A for the latest service procedures and policies regarding this diagnosis.
저장소 풀 공간을 모니터합니다. zpool list 명령과 zfs list 명령을 사용하여 파일 시스템 데이터에서 사용하는 디스크 크기를 식별합니다. ZFS 스냅샷은 디스크 공간을 사용할 수 있으며, zfs list 명령으로 나열되지 않는 경우 자동으로 디스크 공간을 사용할 수 있습니다. zfs list -t 스냅샷 명령을 사용하여 스냅샷에서 사용되는 디스크 공간을 식별합니다.