
따라서 ZFS는 일부 "읽기 문제"를 보고하므로ZFS-8000-9P우리가 알고 있는 문서 보고가 발생했습니다. 이 디스크는 상당히 새로운 디스크이며 최근에 발생한 유일한 문제는 전체 ZFS였습니다.
ZFS는 다음 위에서 실행됩니다.LSI MegaRAID 9271-8i, 모든 디스크는 디스크당 "raid 0"을 실행합니다. 저는 이 레이드 카드에 대해 잘 알지 못해서 megacli 명령줄 도구에서 파생된 데이터를 반환하는 스크립트를 찾았습니다. 설정을 보여주기 위해 드라이브 1개를 추가했는데 모두 동일하게 설정되어 있습니다. (시스템 디스크는 다릅니다)
zpool 상태 출력
pool: data
state: ONLINE
status: One or more devices has experienced an unrecoverable error. An
attempt was made to correct the error. Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
using 'zpool clear' or replace the device with 'zpool replace'.
see: http://zfsonlinux.org/msg/ZFS-8000-9P
scan: none requested
config:
NAME STATE READ WRITE CKSUM
data ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
br0c2 ONLINE 0 0 0
br1c2 ONLINE 0 0 0
br2c2 ONLINE 0 0 0
br0c3 ONLINE 0 0 0
br1c3 ONLINE 0 0 0
br2c3 ONLINE 0 0 0
r2c1 ONLINE 0 0 0
r1c2 ONLINE 0 0 0
r5c3 ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0
sdg ONLINE 0 0 0
r3c1 ONLINE 0 0 0
r4c1 ONLINE 2 0 0
... cut raidz2-1 ...
errors: No known data errors
LSI 스크립트의 출력
Virtual Drive: 32 (Target Id: 32)
Name :
RAID Level : Primary-0, Secondary-0, RAID Level Qualifier-0
Size : 3.637 TB
Sector Size : 512
Is VD emulated : No
Parity Size : 0
State : Optimal
Strip Size : 512 KB
Number Of Drives : 1
Span Depth : 1
Default Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Current Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Default Access Policy: Read/Write
Current Access Policy: Read/Write
Disk Cache Policy : Disk's Default
Encryption Type : None
PI type: No PI
Is VD Cached: No
스크립트는 결함이 있는 디스크를 보고하지 않으며 raidcontroller도 드라이브를 결함이 있는 것으로 표시하지 않습니다. 다른 주제를 찾았어요zpool 오류오류를 지우고 스크럽을 실행하라는 조언을 제공했습니다. 이제 제 질문은 스크럽을 실행하기 위한 임계값이 언제인지, 시간이 얼마나 걸리는지입니다(이 zfs raid가 스크럽 실행으로 인해 성능 저하가 발생한다고 가정). 또한 이 디스크가 실제로 문제가 있는 경우 핫 스와핑으로 "재구축"을 초기화합니다. ? 모든 디스크는 "Western Digital RE 4TB, SAS II, 32MB, 7200rpm, enterprise 24/7/365"입니다. 이것은 단지 일상적인 수동 검사였기 때문에 zfs 오류를 검사하는 시스템이 있습니까?
zfs 버전 : 0.6.4.1 zfsonlinux
2개의 읽기 오류가 허용되지 않는다는 것을 알고 있지만 디스크를 일찍부터 늦게 교체하는 것을 선호합니다.
답변1
zfs scrub
"zfs 오류를 확인하는 시스템"입니다. 볼륨에 저장된 모든 데이터를 읽는 데 걸리는 시간만큼 걸립니다(txg의 순차적 순서로 진행되므로 풀이 가득 찬 정도와 데이터가 기록된 방식에 따라 많이 찾을 수 있습니다). 시작되면 zfs status
몇 가지 추정치가 표시됩니다. 스크럽 실행을 중지할 수 있습니다.
주기적으로 확인하려는 항목이 있는 경우 zpool status
가장 간단한 방법은 주기적으로(6시간에 한 번) 실행 zpool status | grep -C 100 Status
하고 결과가 있으면 이메일로 보내는 것입니다. nagios와 같이 즐겨 사용하는 모니터링 시스템용 플러그인을 찾을 수 있을 것입니다. 아니면 직접 작성하는 것이 매우 간단할 것입니다.
드라이브를 핫 스왑하는 것만으로는 리실버가 트리거되지 않습니다. zfs replace
그러려면 달려가야 합니다 .
현재 보고 있는 읽기 오류는 일종의 컨트롤러 사고일 수도 있습니다. 엔터프라이즈 하드웨어임에도 불구하고 이러한 (HW RAID) 컨트롤러는 때때로 이상하게 동작합니다. 예를 들어 이러한 오류는 명령이 너무 오래 걸리는 결과로 인해 발생할 수 있습니다. 즉, 컨트롤러가 다른 작업을 수행 중이기 때문일 수 있습니다. 그래서 꼭 필요한 경우가 아니면 멀리하려고 노력합니다.
man smartctl
드라이브의 SMART 데이터를 확인하고( 참조 ) 풀을 청소 하겠습니다 . 둘 다 괜찮아 보이면 오류를 지우고 풀을 건드리지 마세요. 풀이 거의 전체 읽기에 가까워지면 리실버 중에 모든 데이터가 실제로 또 다른 오류를 유발할 수 있기 때문입니다. 동일한 드라이브에서 다시 오류가 표시되면 당황하기 시작하세요. ;)
그나저나. 최고의 성능을 위해서는 RAIDZ2 vdev에서 n^2+2 드라이브를 사용해야 합니다.
답변2
이 경우에는 ZFS에서 지시한 대로 수행하겠습니다.스크럽을 실행해 주세요.
나는 매주 일정에 따라 시스템을 청소합니다. 나는 또한zfswatcherLinux ZFS 설치 상태를 모니터링하는 데몬입니다.
ZFS 배열이 조정되지 않았을 수 있으므로 스크러빙 성능을 향상시키는 데 도움이 될 수 있는 몇 가지 값이 있지만 이 시점에서는 이를 실행해야 합니다.
그리고 다른 질문의 경우 핫 스왑이 예상한 대로 작동하지 않을 수도 있습니다. 아래 호언장담을 참조하세요.
호언장담:
하드웨어 컨트롤러 뒤에 여러 개의 RAID-0 가상 드라이브를 두는 것은 나쁜 생각입니다!
당신은 두 세계 중 최악의 상황을 가지고 있습니다. 복구 가능성 및 오류 검사가 제한됩니다. 고장난 디스크는 본질적으로 고장난 가상 드라이브이며 핫스왑에 영향을 미칩니다. 문제의 디스크를 제거했다고 가정해 보겠습니다. 새 가상 디스크를 생성해야 하거나 다른 드라이브 열거로 끝날 수도 있습니다.
어떤 시점에서는 실제 HBA를 구입하고 패스스루 장치(RAID 메타데이터 없음)를 사용해 디스크를 실행하는 것이 더 좋습니다.하드웨어 어레이로 보호되는 vdev 위에서 ZFS를 실행하기만 하면 됩니다.예를 들어 컨트롤러에서 RAID-6을 실행하고 위에 ZFS를 설치합니다. 또는 여러 RAID-X 그룹을 실행하고 결과 vdev를 ZFS 미러링하거나 스트라이프하도록 합니다.