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)은 비파괴적이므로 먼저 시도해야 할 것입니다. 그러나 드라이브가 심하게 고장나기 시작하면 불량 영역에서 계속해서 읽으면 더 빨리 고장날 수 있다는 점을 명심하십시오. 보류 중인 섹터 및 기타 오류가 많고 드라이브의 데이터가 중요하다면 서비스를 중단하고 훌륭한 도구를 사용하는 것이 좋습니다.구조하다가능한 한 많은 데이터를 복구하십시오. 그런 다음 드라이브를 폐기하십시오.
문제의 섹터에 관심 없는 데이터가 포함되어 있거나 백업에서 복원할 수 있는 경우 해당 섹터를 덮어쓰는 것이 가장 빠르고 쉬운 솔루션일 수 있습니다. 그런 다음 드라이브의 재할당 및 보류 중인 수를 보고 해당 섹터가 처리되고 있는지 확인할 수 있습니다.
파일 시스템에서 이 섹터가 무엇인지 확인하는 방법은 무엇입니까? 에 관한 기사를 찾았습니다.지능형 모니터링 도구웹사이트,여기, 이는 상당히 기술적이며 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
- 데이터를 백업하세요
- LVM 그룹에서 장치 제거
dd if=/dev/zero of=/dev/sdc bs=4k
-이거겠지모든 데이터 삭제존재하다/dev/sdc
- 다시 LVM 그룹으로 가져옵니다.
- 백업 복원
답변3
Data Lifeguard Diagnostic for DOS(부팅 가능 CD) 소프트웨어 사용(다음 위치에서 제공)웨스턴디지털 홈페이지