나는 상당히 귀중한 데이터(잃어버린 경우 세상의 종말이 아니라 가지고 있으면 좋은)를 여러 개의 오래된 HDD에서 보다 안정적인 스토리지를 갖춘 새 NAS로 복사해 왔습니다.
읽는 동안 출력에 다음과 같은 많은 오류가 발생합니다(디스크가 꽤 오래되었기 때문에 완전히 예상치 못한 것은 아닙니다) dmesg
.
[88577.880874] sd 38:0:0:0: [sdh] tag#5 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_OK cmd_age=3s
[88577.880889] sd 38:0:0:0: [sdh] tag#5 Sense Key : Medium Error [current]
[88577.880893] sd 38:0:0:0: [sdh] tag#5 Add. Sense: Unrecovered read error
[88577.880897] sd 38:0:0:0: [sdh] tag#5 CDB: Read(10) 28 00 54 25 88 8f 00 02 00 00
[88577.880900] critical medium error, dev sdh, sector 1411745935 op 0x0:(READ) flags 0x80700 phys_seg 64 prio class 2
내가 읽은 모든 것에서 이것은 디스크가 잘 작동하지 않는다는 것을 나타내며 나는 그것에 대해 크게 걱정하지 않습니다.
그러나 놀랍게도 rsync
데이터를 복사하는 데 사용하는 데이터(주로 디스크 이미지, ISO 등과 같은 대용량 파일)는 대부분의 오류를 보고하지 않는 것 같습니다.
현재 rsync
통화는 한 시간 넘게 진행되었습니다. 나는 당시 그곳에 있었지만 2개의 I/O 오류 dmesg
만 rsync
보고되었습니다.
$ rsync -rlt --no-i-r --info=progress2 /mnt/olddisk/somedir /mnt/target
47,316,611,088 5% 34.36MB/s 0:21:53 (xfr#26, to-chk=754/787)
rsync: [sender] read errors mapping "/mnt/oldisk/somedir/dir1/chunkyfile1.bin": Input/output error (5)
148,137,878,449 15% 49.70MB/s 0:47:22 (xfr#46, to-chk=734/787)
rsync: [sender] read errors mapping "/mnt/olddisk/somedir/dir2/chunkyfile2.bin": Input/output error (5)
206,615,147,043 22% 55.38MB/s 3:32:44 xfr#61, to-chk=719/787)
내가 알고 싶은 것은 "복구되지 않은" 오류와 "중요한" 오류가 어떻게든 수정되었는가입니다. 그들은 다시 시도해서 성공했는가? 커널은 rsync
I/O 오류가 발생했다는 사실을 받아들이면서 자동으로 불량/손상/빈 읽기 결과를 반환합니까?
내가 아는 한, 소스 드라이브와 상호 작용하는 다른 프로세스는 없습니다.
원본 디스크가 지루한 오래된 ext4로 포맷되어 있어서 해당 데이터에 오류 수정 코드가 내장되어 있지 않은 것 같습니다.
디스크가 외부 SATA 도크를 통해 연결되고 USB를 통해 연결되어도 문제가 됩니까? 이것이 문제의 원인일 수 있다는 것을 알고 있지만 오류에 "중간 오류"가 구체적으로 언급되어 있다는 점을 고려하면 나머지 시스템과의 통신보다는 디스크에서 실제로 진행되는 작업과 관련이 있는 것으로 의심됩니다.
답변1
일부 읽기가 다시 시도되었을 수 있습니다. 이는 여러 수준의 소프트웨어에서 수행될 수 있습니다. 한 가지 더: 미리 읽기입니다. 커널은 실제로 필요한 것보다 더 많은 정보를 요청할 수 있으므로 오류가 보고되고 잊어버릴 수 있습니다. 그리고 캐시가 후속 요청을 충족할 수 없으므로 읽기가 다시 수행됩니다. (게다가 디스크 자체가 요청한 것보다 더 많은 데이터를 읽을 수 있습니까? 아니면 온전성 검사를 수행하여 커널에 보고할 수 있습니까?)