데이터 보존을 개선하기 위해 하드 드라이브의 모든 데이터를 새로 고칩니다.

데이터 보존을 개선하기 위해 하드 드라이브의 모든 데이터를 새로 고칩니다.

새로 동기화된 데이터(다른 소스의 백업/복사)가 있는 하드 드라이브(오래된 자기 하드 드라이브)의 경우 많은 파일이 그대로 유지됩니다(읽기는 하지만 쓰지는 않음). 모든 하드 드라이브는 시간이 지남에 따라 데이터를 잃게 됩니다(비트 플립이 표시되므로 다른 하드웨어에 최소 3개의 복사본이 있어야 합니다...).

따라서 동기화 후에는 모든 데이터가 올바른 상태라는 것을 알 수 있습니다. 표준 쉘 명령*을 사용하여 각 파일을 읽고 다시 쓰는 방법이 있습니까(파일 시스템이 단편화되지 않도록 덮어쓰기)? 의도된 목적은 모든 비트의 자기 상태를 새로 고치는 것입니다. 아니면 비슷한 작업을 수행할 수 있는 Linux 파일 시스템이 있습니까(현재는 ext4를 선호합니다)?

아니면 이 아이디어가 유효하지 않다고 생각할 이유가 있습니까?

*또는 기타 스마트 도구

답변1

가장 간단하고 빠른 방법은 아마도

dd if=/dev/sda of=/dev/sda bs=256M

dd쓰기 전에 읽으십시오(물론 그렇지 않으면 쓸 것이 없을 것입니다). 장치 위치는 소스 및 대상과 무관합니다.

또한 새로 고치는 동안 디스크가 죽지 않는다고 가정합니다.

동일한 총 데이터 양을 사용하여 속도 테스트를 실행 bs하지만삼분의 일,,정확히그리고두 배하드 디스크 캐시의 크기입니다. 하드 드라이브 컨트롤러의 캐시 할당 전략에 따라 다시 쓰기 시간이 크게 달라질 수 있습니다.

예를 들어 256M 캐시가 있다고 가정하면

시간 dd... bs=80M 개수=1638 시간 dd... bs=128M 개수=1024 시간 dd... bs=256M 개수=512 시간 dd... bs=512M 개수=256

단, bs전체를 초과해서는 안 됩니다.물리적실린더에 있는 데이터의 양. 그렇지 않으면 하드 드라이브의 메커니즘이 강제로 트랙을 건너뛰어 첫 번째 실린더 이후의 데이터를 읽은 다음 다시 점프하게 됩니다.쓰다동일한 데이터. 하드 드라이브에서 쉭쉭 소리가 나기 시작하면 이를 쉽게 알 수 있습니다. 각 실린더가 한 번만 처리되면서 명확한 "tic.tic.tic."이 발생하기를 원합니다. LBA 매핑으로 인해 물리적 크기를 결정하는 것이 어렵고 최신 하드 드라이브에서는 다양한 할당 영역의 실린더 크기(스핀들과의 거리가 다름)로 인해 불가능할 수도 있습니다. 이 경우 디스크를 "새로 고침"하면 드라이브 메커니즘에 많은 스트레스가 가해집니다.

답변2

ZFS는 대부분의 실제 디스크 데이터 무결성 문제에 대한 해답입니다. 비트 플립 및 기타 데이터 손상 이벤트를 감지하고 수정합니다.

Linux에서는 매우 안정적이며 Solaris 및 BSD 변형에서는 견고합니다. 아직 Linux에서 신뢰하지 못한다면 파일 서버에서 구현하고 데이터가 필요한 서버에 iSCSI, NFS 또는 CIFS 볼륨을 제공하세요. 백엔드의 ZFS는 모든 것을 훌륭하고 안전하게 유지합니다.

관련 정보