읽을 수 없는 보류 섹터의 매핑을 해제하려면 디스크를 어떻게 해야 합니까?

읽을 수 없는 보류 섹터의 매핑을 해제하려면 디스크를 어떻게 해야 합니까?

smartd에 따르면 내 디스크에 읽을 수 없는 보류 섹터가 일부 있습니다. 디스크를 다시 매핑하고 smartd가 불평하지 않도록 하는 가장 쉬운 방법은 무엇입니까?

오늘은 매 시간마다 다음과 같은 두 개의 메시지를 받습니다.

9월 10일 23:15:35 hyton smartd[3353]: 장치: /dev/sdc, 현재 읽을 수 없는(보류 중) 섹터 1개

시스템은 Ubuntu Linux 9.10(jaunty)을 실행하는 x86 시스템입니다. 디스크가 LVM 그룹의 일부입니다. smartctl이 디스크를 식별하는 방법은 다음과 같습니다.

모델 시리즈: Western Digital Caviar 2세대 직렬 ATA 시리즈
장비 모델: WDC WD5000AAKS-00TMA0
일련 번호: WD-WCAPW4207483
펌웨어 버전: 12.01C01
사용자 용량: 500,107,862,016바이트

답변1

보류 중인 읽을 수 없는 섹터는 읽기 오류를 반환하고 드라이브가 가능한 첫 번째 기회에 다시 매핑하도록 표시한 섹터입니다. 그러나 다음 두 가지 중 하나가 발생하지 않는 한 다시 매핑할 수 없습니다.

  1. 해당 섹터를 성공적으로 다시 읽었습니다.
  2. 해당 섹터를 덮어썼습니다.

그때까지 업계는 여전히 공중에 떠 있습니다. 따라서 이 문제를 처리하는 두 가지 해당 방법이 있습니다.

  1. 성공할 때까지 계속해서 업계를 다시 읽으십시오.
  2. 새 데이터로 섹터 덮어쓰기

분명히 (1)은 비파괴적이므로 먼저 시도해야 할 것입니다. 그러나 드라이브가 심하게 고장나기 시작하면 불량 영역에서 계속해서 읽으면 더 빨리 고장날 수 있다는 점을 명심하십시오. 보류 중인 섹터 및 기타 오류가 많고 드라이브의 데이터가 중요하다면 서비스를 중단하고 훌륭한 도구를 사용하는 것이 좋습니다.구조하다가능한 한 많은 데이터를 복구하십시오. 그런 다음 드라이브를 폐기하십시오.

문제의 섹터에 관심 없는 데이터가 포함되어 있거나 백업에서 복원할 수 있는 경우 해당 섹터를 덮어쓰는 것이 가장 빠르고 쉬운 솔루션일 수 있습니다. 그런 다음 드라이브의 재할당 및 보류 중인 수를 보고 해당 섹터가 처리되고 있는지 확인할 수 있습니다.

파일 시스템에서 이 섹터가 무엇인지 확인하는 방법은 무엇입니까? 에 관한 기사를 찾았습니다.지능형 모니터링 도구웹사이트,여기, 이는 상당히 기술적이며 ext2/3/4 및 reiser 파일 시스템에만 적용됩니다.

내 (Mac) 드라이브 중 하나에서 사용하는 더 쉬운 방법은 find / -xdev -type f -print0 | xargs -0 ...시스템의 모든 파일을 읽는 것입니다. 실행하기 전에 보류 중인 수를 기록해 두십시오. 섹터가 파일 내에 있으면 파일을 읽는 데 사용되는 도구(예: md5sum)에서 섹터 경로를 표시하는 오류 메시지를 받게 됩니다. 그런 다음 파일을 성공적으로 읽을 때까지 파일을 다시 읽는 데 집중할 수 있습니다. 자주 사용되지 않는 파일이고 몇 번만 다시 읽어야 하는 경우 일반적으로 이렇게 하면 됩니다. 오류가 사라지거나 모든 파일을 읽는 동안 오류가 발생하지 않으면 보류 횟수가 감소하는지 확인하세요. 그렇다면 문제는 읽으면서 해결되었습니다.

여러 번 시도(예: 20회) 후에도 파일을 성공적으로 읽을 수 없는 경우 드라이브가 섹터를 재할당할 수 있도록 파일 또는 파일 내의 블록을 덮어써야 합니다. 파티션이 아닌 파일에 ddrescue를 사용하면 임시 파일에 복사한 다음 다시 복사하여 한 섹터만 덮어쓸 수 있습니다. 불량 섹터는 사용 가능한 목록으로 이동하여 찾기 어려울 수 있으므로 이 시점에서 파일을 삭제하는 것은 좋지 않은 생각입니다. 완전히 덮어쓰는 것도 좋지 않습니다. 해당 섹터가 다시 사용 가능 목록에 올라가기 때문입니다. 기존 블록을 덮어써야 합니다. 옵션은 이를 수행하는 한 가지 방법입니다 notrunc.dd

오류가 발생하지 않고 보류 개수가 줄어들지 않으면 해당 섹터는 사용 가능 목록에 있거나 파일 시스템 인프라(예: inode 테이블)의 일부여야 합니다. 사용 가능한 공간을 모두 채운 cat /dev/zero >tempfile다음 보류 중인 수를 확인할 수 있습니다 . 실패했다면 사용 가능 목록에 문제가 있었고 지금은 사라진 것입니다.

해당 섹터가 인프라에 있으면 더 심각한 문제가 발생하며 디렉터리 트리를 탐색할 때 오류가 발생할 수 있습니다. 이 경우 유일한 합리적인 해결책은 드라이브를 다시 포맷하고 필요한 경우 선택적으로 ddrescue를 사용하여 데이터를 복구하는 것입니다.

운전을 계속 지켜보세요. 산업재편성은 훌륭하다탄광의 카나리아, 이는 드라이브 오류에 대한 사전 경고를 제공할 수 있습니다. 조기에 조치를 취하면 나중에 재앙적이고 매우 고통스러운 산사태를 예방할 수 있습니다. 몇 가지 섹터 재할당이 드라이브를 폐기해야 한다는 것을 의미하는 것은 아닙니다. 모든 최신 드라이브에는 약간의 재할당이 필요합니다. 그러나 드라이브가 아주 오래되지 않았거나(1년 미만) 새 재할당을 자주(> 1/월) 수행하는 경우 가능한 한 빨리 교체하는 것이 좋습니다.

이를 입증할 실증적 증거는 없지만 내 경험에 따르면 dd원시 find디스크나 . 거의 사용되지 않는 파일이나 자주 사용되지 않는 컴퓨터에 있습니다. 섹터를 자주 다시 읽는 경우 드라이브는 섹터를 완전히 읽을 수 없을 때까지 기다리지 않고 해당 섹터의 사소한 문제를 처음 감지할 때 이를 재할당할 수 있기 때문에 이는 또한 유익합니다. 호스트가 어떻게든 섹터에 액세스하지 않는 한(읽기 또는 쓰기 또는 SMART 테스트 중 하나 수행을 통해) 드라이브는 섹터에서 어떤 작업도 수행할 수 없습니다.

매일 밤이나 매주 디스크 전체를 읽는 크론 작업 아이디어를 해보고 싶습니다. 현재 나는 내 컴퓨터에 두 번째 하드 드라이브가 있고 매일 밤 여기에 기본 디스크를 백업하는 "가난한 사람의 RAID"를 사용하고 있습니다. 어떤 면에서는 실수로 파일을 삭제하더라도 백업 디스크에서 어제 버전을 즉시 가져올 수 있기 때문에 이것이 실제로 RAID 미러링보다 낫습니다. 반면에, 하드웨어 RAID 컨트롤러는 디스크 문제가 발생할 때 모니터링, 보고 및 복구하기 위해 뒤에서 많은 훌륭한 작업을 수행한다고 생각합니다. 현재 백업 스크립트는 rsync변경되지 않은 데이터를 복사하는 것을 방지하는 데 사용되지만 모든 섹터를 다시 읽어야 하는 경우 모든 것을 복사하거나 매주 전체 원시 디스크를 읽는 별도의 스크립트를 갖는 것이 가장 좋습니다.

답변2

  1. 데이터를 백업하세요
  2. LVM 그룹에서 장치 제거
  3. dd if=/dev/zero of=/dev/sdc bs=4k-이거겠지모든 데이터 삭제존재하다/dev/sdc
  4. 다시 LVM 그룹으로 가져옵니다.
  5. 백업 복원

답변3

Data Lifeguard Diagnostic for DOS(부팅 가능 CD) 소프트웨어 사용(다음 위치에서 제공)웨스턴디지털 홈페이지

관련 정보