
우리는 모두 데이터와 파일을 안전하게 유지하는 것에 대해 걱정하지만 문제에 대한 알림이나 경고없이 데이터가 손상되어 사용자가 액세스 할 수 있습니까? 오늘의 슈퍼 유저 Q & A 게시물에는 걱정되는 독자의 질문에 대한 답변이 있습니다.
오늘의 질문 및 답변 세션은 커뮤니티 중심의 Q & A 웹 사이트 그룹 인 Stack Exchange의 하위 부문 인 SuperUser에 의해 제공됩니다.
사진 제공 : 일반화 (Flickr).
질문
수퍼 유저 리더 topo morto는 하드 드라이브의 데이터가 손상에 대한 경고없이 성능이 저하되고 액세스 될 수 있는지 알고 싶어합니다.
하드 드라이브의 물리적 성능 저하로 인해 운영 체제가 변경 사항을 알리지 않고 파일을 읽을 때 사용자에게 알리지 않고 파일 내용에서 비트가 “플립”될 수 있습니까? 예를 들어 ASCII 텍스트 파일의 “p”(이진 01110000)가 “q”(이진 01110001)로 변경되면 사용자가 파일을 열 때 실패가 발생했다는 사실을 알지 못하고 “q”가 표시됩니까?
FAT, NTFS 또는 ReFS와 관련된 답변에 관심이 있습니다 (차이가있는 경우). 운영 체제가 이로부터 사용자를 보호하는지 또는 시간이 지남에 따라 사본 간 차이가 있는지 데이터를 확인해야하는지 알고 싶습니다.
손상에 대한 경고없이 하드 드라이브의 데이터가 열화되고 액세스 될 수 있습니까?
대답
수퍼 유저 기고자 Guntram Blohm은 다음과 같은 답변을 제공합니다.
예, 비트 부패라는 것이 있습니다. 그러나 아니요, 사용자에게 알리지 않습니다.
하드 드라이브가 플래터에 섹터를 쓰면 RAM에 저장된 것과 같은 방식으로 비트를 쓰지 않고 인코딩을 사용하여 동일한 비트의 시퀀스가 너무 길지 않도록합니다. 또한 ECC 코드를 추가하여 몇 비트에 영향을 미치는 오류를 복구하고 몇 비트 이상에 영향을 미치는 오류를 감지 할 수 있습니다.
하드 드라이브는 섹터를 읽을 때 이러한 ECC 코드를 확인하고 필요한 경우 (가능한 경우) 데이터를 복구합니다. 다음에 발생하는 상황은 하드 드라이브의 환경과 펌웨어에 따라 달라지며 드라이브 지정에 영향을받습니다.
- 섹터를 읽을 수 있고 ECC 코드 문제가없는 경우 운영 체제로 전달됩니다.
- 섹터를 쉽게 복구 할 수 있으면 복구 된 버전을 디스크에 기록하고 다시 읽은 다음 오류로 인해 임의의 오류 (예 : 우주선)인지 또는 미디어에 체계적인 오류가 있는지 확인합니다.
- 하드 드라이브가 미디어에 오류가 있다고 판단하면 섹터를 재 할당합니다.
- 몇 번의 읽기 시도 후 (RAID 하드 드라이브로 지정된 하드 드라이브에서) 섹터를 읽거나 수정할 수없는 경우 하드 드라이브는 포기하고 섹터를 재 할당하며 컨트롤러에 문제가 있음을 알려줍니다 . RAID 컨트롤러를 사용하여 다른 RAID 멤버에서 섹터를 재구성하고 실패한 하드 드라이브에 다시 기록한 다음 다시 할당 된 섹터에 저장합니다 (문제가없는 경우).
- 데스크탑의 하드 드라이브에서 섹터를 읽거나 수정할 수없는 경우 하드 드라이브는 더 많은 읽기 시도를합니다. 하드 드라이브의 품질에 따라 헤드 위치 변경, 반복적으로 읽을 때 뒤집힌 비트가 있는지 확인, 가장 약한 비트 확인 및 기타 몇 가지가 포함될 수 있습니다. 이러한 시도 중 하나라도 성공하면 하드 드라이브가 섹터를 재 할당하고 복구 된 데이터를 다시 씁니다.
이는 “데스크톱”, “NAS / RAID”또는 “비디오 감시”하드 드라이브로 판매되는 하드 드라이브의 주요 차이점 중 하나입니다. RAID 하드 드라이브는 사용자의 대기 시간을 피하기 위해 컨트롤러를 신속하게 포기하고 섹터를 복구 할 수 있습니다. 사용자가 몇 초 동안 기다리면 데이터 손실을 알리는 것보다 데스크탑 하드 드라이브가 계속해서 다시 시도합니다. 그리고 비디오 하드 드라이브는 일반적으로 손상된 프레임이 눈에 띄지 않기 때문에 오류 복구보다 일정한 데이터 속도를 중요하게 생각합니다.
어쨌든 하드 드라이브는 비트 썩음이 있는지 알고 일반적으로 복구하며, 그렇지 않은 경우 컨트롤러에 드라이버에게 지시하여 운영 체제에 알려줄 것입니다. 그런 다음 사용자에게 오류를 표시하고 조치를 취하는 것은 운영 체제의 책임입니다. 이것이 사이 버나드가 말하는 이유입니다.
- 나는 단일 비트 오류를 직접 목격 한 적이 없지만 전체 섹터가 고장난 하드 드라이브를 많이 보았습니다.
하드 드라이브는 섹터에 문제가 있는지 알지만 어떤 비트가 실패했는지 알 수 없습니다. 실패한 단일 비트는 항상 ECC에 의해 포착됩니다.
자동으로 복구되는 chkdsk 및 파일 시스템은 파일 내의 데이터 복구를 해결하지 않습니다. 이는 디렉토리 항목과 할당 된 블록 수 사이의 파일 크기 차이와 같이 파일 시스템 자체 구조 내의 손상을 목표로합니다. NTFS의 자체 복구 기능은 구조적 손상을 감지하여 데이터에 더 이상 영향을 미치지 않도록하지만 이미 손상된 데이터는 복구하지 않습니다.
물론 데이터가 손상 될 수있는 다른 이유가 있습니다. 예를 들어, 컨트롤러의 RAM 불량은 하드 드라이브로 전송되기 전에 데이터를 변경할 수 있습니다. 이 경우 하드 드라이브의 어떤 메커니즘도 데이터를 감지하거나 복구하지 않으므로 파일 시스템의 구조가 손상 될 수 있습니다. 다른 이유로는 소프트웨어 버그, 하드 드라이브에 쓰는 동안 정전 (파일 시스템 저널링으로 해결되지만) 또는 잘못된 파일 시스템 드라이버 (Linux의 NTFS 드라이버는 리버스 엔지니어링 된 이후 오랫동안 읽기 전용으로 기본 설정되어 있음, 문서화되지 않았으며 개발자는 자신의 코드를 신뢰하지 않았습니다).
- 이 시나리오는 응용 프로그램이 모든 상황에서 데이터의 작업 복사본을 사용할 수 있도록 두 개의 다른 데이터 센터에있는 두 개의 서로 다른 서버에 모든 파일을 저장하는 경우가있었습니다. 몇 달 후, 복사 된 모든 파일의 약 0.1 %가 응용 프로그램이 데이터베이스에 저장 한 MD5 체크섬과 일치하지 않는 것으로 나타났습니다. 서버와 SAN 사이의 광섬유 케이블에 결함이있는 것으로 나타났습니다.
이러한 다른 이유 때문에 ZFS와 같은 일부 파일 시스템은 오류를 감지하기 위해 추가 체크섬 정보를 유지합니다. 그들은 비트 부패보다 잘못 될 수있는 더 많은 것들로부터 당신을 보호하도록 설계되었습니다.
설명에 추가 할 것이 있습니까? 주석에서 소리를냅니다. 기술에 정통한 다른 Stack Exchange 사용자의 답변을 더 원하십니까? 여기에서 전체 토론 스레드를 확인하십시오.








