우분투에서 불량 블록 재시도 / 대기 시간 감소


10

OS가 계속 실패한 드라이브에 쓰지 않도록 IO 대기 시간을 줄이고 재시도 시간을 어떻게 줄일 수 있습니까?

고객에게 일반 SATA 데스크탑 하드 드라이브로 빌려 오는 데모 컨텐츠의 사본을 만드는 데 사용하는 시스템이 있습니다. SAS를 통해 많은 드라이브를 한 번에 연결하고 스크립트를 사용하여 컨텐츠를 드라이브에 복사합니다.

드라이브가 빌려지기 때문에 때때로 일부 드라이브가 손상된 상태로 돌아 왔지만 드라이브가 손상되었음을 알지 못하므로 다음 번에 해당 드라이브가 복사 작업에서 재사용 될 때 시스템이 해당 드라이브에 IO를 재 시도 할 때 다른 드라이브 속도가 느려집니다. 때로는 잘못된 드라이브를 발견하고 제거하는 데 몇 시간이 걸릴 수 있습니다. 드라이브를 제거한 후 나머지 드라이브는 정상 속도로 쓰기 시작합니다.

불량 드라이브 복구에 신경 쓰지 않습니다. 나는 그들이 다른 모든 것을 늦추지 않도록 그들을 제거해야합니다.

또한 불량 블록 및 smartmontools를 연구하고 있으며 쓰기를 시작하기 전에 드라이브에 대한 사전 검사 작성을 고려하고 있습니다.

운영체제 : Ubuntu Linux (12.04 lts)


udisks/를 통해 SMART 데이터를 확인하는 데 문제가 smartmonctl있습니까? 여기에 고전적인 XY 문제가 있습니다.
사슴 사냥꾼

2
고마워, 나는 smartmonctl을 더 연구 할 것이다. 내 경험에 따르면 마지막 배송 중에 불량 섹터가 발생한 경우 SMART 상태는 드라이브가 여전히 양호 함을 나타내며 복사 중 임의의 부분까지 잘 수행 한 다음 크롤링 속도가 느려져 다른 드라이브에도 영향을 미칩니다. 제거됩니다.
Ryan Sorensen

질문에 대한 직접적인 답변을 얻지 못했기 때문에 Linux에서 가능한지 여부를 알 수 없습니다. IO 대기 시간을 줄이고 재시도 시간을 어떻게 줄일 수 있습니까?
imz-Ivan Zakharyaschev

@ imz--IvanZakharyaschev unix.stackexchange.com/a/147304/25985 그러나 커널은 이러한 오류를 기록하므로 문제가 발생하기 전에 장애가 발생한 디스크를 잡아서 시스템 로그를 검사 할 수 있습니다. 일정한 간격.
goldilocks

@gol 더 빨리 잡으려면 어떻게해야합니까? 기다리지 않고 하나님은 IO 작업이 오류보고를 차단하기까지 얼마나 많은 시간을 알고 계십니까? (실제로, 오류가있는 디스크에서 데이터를 저장하려고 시도하지만 내 문제는 비슷합니다. 이러한 "잘못된"섹터를 실행하면 큰 지연이 발생합니다. ... 아마도 조언을 따를 수있는 방법을 고안 할 수도 있습니다. SMART ddrescue가보고 한 분야에 닿지 않도록 SMART 테스트 정보를 제공합니다 .)
imz-Ivan Zakharyaschev

답변:


7

나는이 튜너 블을 사용하지 않았지만 아마도 해당 드라이브 의 eh_timeout (오류 처리 제한 시간) 을 조정하고 싶을 것입니다 .

[root@localhost device]# cat /sys/block/sda/device/eh_timeout
10
[root@localhost device]# 

위의 그림은 sda10 초로 설정되어 있습니다. Red Hat Knowledgebase에서 :

특정 저장소 구성 (예 : LUN이 많은 구성)에서 SCSI 오류 처리 코드는 TEST UNIT READY와 같은 명령을 응답하지 않는 저장소 장치에 발급하는 데 많은 시간을 소비 할 수 있습니다. 새로운 sysfs 매개 변수 인 eh_timeout이 SCSI 장치 객체에 추가되어 SCSI 오류 처리 코드에서 사용하는 TEST UNIT READY 및 REQUEST SENSE 명령의 시간 초과 값을 구성 할 수 있습니다. 이렇게하면 응답하지 않는 장치를 확인하는 데 소요되는 시간이 줄어 듭니다. eh_timeout의 기본값은 10 초이며이 기능을 추가하기 전에 사용 된 시간 초과 값입니다.


지금 확인 중입니다. 우분투에는 eh_timeout이 없지만 동일한 시간 초과 파일이 있습니다. 기본 우분투 값은 30 초로 나타납니다. 5 초로 줄이고 다시보고합니다.
Ryan Sorensen

1
호기심으로 결과는 어떻습니까?
Bratchley

12.04에서 시간 종료 플래그를 설정해도 아무런 작업도 수행되지 않았습니다. 이번 주말에는 테스트 시스템을 14.04로 업그레이드 할 계획입니다. eh_timeout (및 시간 초과)이 있기 때문입니다.
Ryan Sorensen

@RyanSorensen,이 매개 변수가 작동하는지 확인할 기회가 있었습니까?
Nat

수정할 수는 eh_timeout없었지만 timeout당면한 작업을 수행 하기 위해 변경할 수있었습니다 .
GuitarPicker

2

/sys/block/<dev>/stat관심있는 장치를 모니터링 하고 10 번째 매개 변수 (io_ticks)를 비교하십시오.

예를 들어 ticks = io_ticks - prev_ticks / seconds_deltatime / 10

이는 디스크가 디스크 io를 기다리는 데 사용 가능한 시간의 백분율입니다.

100 %에 가까운 것은 당연히 점검 할 가치가 있거나 그렇지 않으면 정말 영리하고 모든 디스크의 평균과 비교하여 평균 이상의 디스크를 선택합니다.

블록 레이어 통계 문서를 참조하십시오 .

그렇지 않으면 Munin과 같은 것을 사용하고 그래프로 작성하십시오. Munin이 임계 값 (예 : 90 % 또는 그래프로 표시되는 것 이상)을 초과하면 경고 할 수 있습니다.

예를 들어,이 두 개의 Munin 그래프는 / dev / sdi가보고자 함을 보여줍니다. 이 예에서 / dev / sdi가 배열의 일부인 경우 전체 배열로 인해 전체 배열에 문제가 발생합니다.

장치 별 디스크 사용률-일별

장치 별 디스크 사용량-주별

주 그래프를 보면 / dev / sdc도 느릴 수 있습니다.

위의 / dev / sdi가 손상되지 않았으며, 느린 디스크 (실제로 엔터프라이즈 급 sata 디스크 배열에 누군가가 추가 한 녹색 디스크)로 인해 배열 속도가 느려졌습니다. 실제로 고장난 디스크는 아픈 엄지 손가락처럼 튀어 나옵니다.

요약하면 시간이 있으면 스크립트를 사용했을 것입니다.하지만 빠른 솔루션을 원하고 서버에 연결하는 것이 쉬운 경우 Munin은 가능합니다.


감사! Linux의 io 통계에 대한 정보는 실제로 새롭고 그러한 상황에서 유용합니다.
imz-Ivan Zakharyaschev
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.