주기적으로 드라이브를 추가하고, ZFS 재동기화를 위해 드라이브를 지우고, 읽기/쓰기 또는 체크섬 오류 문제가 있는 경우 드라이브를 다시 서비스 상태로 전환합니다. 일반적으로 처음에 파티션 테이블을 삭제하는 것만으로는 ZFS를 만드는 데 충분하지 않습니다.아니요드라이브를 식별합니다.
처음에 파티션 테이블을 삭제하고(이미 수행 방법을 알고 있으며 잘 문서화되어 있음) 3TB 드라이브 끝의 파티션 테이블을 삭제하고 이것이 작동하는지 테스트하고 싶습니다. 마지막 파티션 테이블(gpt)만 삭제하는 방법은 무엇입니까?
이제 내 주요 질문에 대답하겠습니다. ZFS가 더 이상 인식하지 못하는지 테스트하기 위해 실행한 dd
다음 어느 시점(아래 참조)을 취소했습니다. 이것만으로는 충분하지 않습니다. ZFS는 여전히 이를 인식하고 다시 성능 저하 모드로 전환합니다.
$ dd if=/dev/zero of=/dev/disk/by-id/scsi-35000c50084818db7
^C726443929+0 records in
726443928+0 records out
371939291136 bytes (372 GB) copied, 7997.73 s, 46.5 MB/s
이제 처음 372GB를 다시 수행하는 데 시간과 하드 드라이브 수명을 낭비하지 않도록 과거 372GB와 그 이후의 dev/zero를 찾고 싶습니다.
이런저런 생각도 해봤는데 잘 안 됐어요.
$ dd if=/dev/zero of=/dev/disk/by-id/scsi-35000c50084818db7 seek=371G
dd: ‘/dev/disk/by-id/scsi-35000c50084818db7’: cannot seek: Invalid argument
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000238797 s, 0.0 kB/s
문서를 보는 것은 정말 힘든 일입니다. 이 페이지는 거의 도움이 될 것 같습니다https://wiki.linuxquestions.org/wiki/Some_dd_examples, 그러나 나는 거기에서 내가 필요한 것을 보지 못했습니다.
블록 크기가 누락된 건가요, 아니면 이것이 작동하지 않는 이유가 누락된 건가요? conv=notrunc
위 줄에 추가하려고 시도했지만 도움이 되지 않았습니다.
답변1
seek
매개변수는 dd
찾을 출력 블록의 수 입니다.
bs=
명령에 또는가 없으면 기본값은 512바이트입니다.obs=
726443928
블록이 쓰여진 것을 볼 수 있습니다.
가장 간단한 해결책은 찾기에서 숫자를 사용하는 것입니다.
dd if=/dev/zero of=/dev/disk/by-id/scsi-35000c50084818db7 seek=726443928
그런데, 당신이 링크한 문서를 보면 이 사실이 매우 명확해집니다.
탐색을 많이 건너뛰었습니다.조각쓰기 전에 출력 미디어에
지우기 지원 GPT
보조 GPT 테이블은 디스크 끝에서 33섹터(512바이트 섹터)에 위치합니다.
그래서 fdisk -l /dev/disk/by-id/scsi-35000c50084818db7
신고 하면
Disk /dev/disk/by-id/scsi-35000c50084818db7: 2.73 TiB, 3000592982016 bytes, 5860533168 sectors
그런 다음 5860533168 =에서 33을 뺍니다.5860533135
그리고 할
dd if=/dev/zero of=/dev/disk/by-id/scsi-35000c50084818db7 skip=5860533135