나는 좋은 오래된 것을 사용하여 임의의 데이터로 내 하드 드라이브를 덮어 쓰고 있습니다 dd
.
dd if=/dev/urandom of=/dev/disk/by-uuid/etc bs=512
2TB 어레이이고 내 MacBook(Linux 실행, 그렇죠?)은 약 3.7MB/s의 속도로만 데이터를 쓸 수 있습니다. 집에 있는 데스크탑이 20MB/s를 수행하는 것을 본 적이 있기 때문에 이는 매우 한심한 일입니다. 오늘 밤 집에 가면 dd
여기서 달리기를 멈추고 집에 가져가서 더 강력한 기계로 하룻밤 사이에 어떤 진전이 이루어질 수 있는지 확인하고 싶습니다.
나는 간단한 루프를 사용하여 진행 상황을 모니터링해 왔습니다.
while true; do kill -USR1 $PID ; sleep 10 ; done
출력은 다음과 같습니다.
464938971+7 records in
464938971+7 records out
238048755782 bytes (238 GB) copied, 64559.6 s, 3.7 MB/s
집에서 패스 를 재개하려면 dd
어떻게 다시 시작해야 합니까? 매개변수 를 알고 있지만 seek
레코드 번호 또는 바이트 수 중 무엇을 가리켜야 합니까?
답변1
@don_crissti가 이미 댓글을 달았듯이 seek=
재개하는 데만 사용하세요.
dd if=/dev/urandom of=/dev/disk/by-uuid/etc bs=512 seek=464938971
GNU dd
또한 바이트 단위 검색을 지원하므로 블록 크기에 관계없이 정확하게 재개할 수 있습니다.
dd if=/dev/urandom of=/dev/disk/by-uuid/etc bs=1M \
seek=238048755782 oflag=seek_bytes
블록 크기가 클수록 /dev/urandom
.
더 빠른 대안을 찾고 있다면 cryptsetup plainOpen
임의의 키를 사용하고 이를 0으로 설정하면 훨씬 더 빠르거나 /dev/urandom
(AES-NI 없이) 최대 속도로 실행될 수도 있습니다(AES-NI 사용).
shred -n 1
의사 난수 데이터가 사용 사례에 충분할 경우에도 사용할 수 있습니다 . shred
매우 느린 시스템에서도 전체 디스크 속도를 활용할 수 있어야 합니다.
답변2
디스크를 무작위로 만드는 것보다 복사를 원하는 사람들을 위한 알림일 뿐입니다.저것skip=BLOCKS
common) : 시작하는 데 사용할 수 있습니다.독서적절한 위치에서 seek=BLOCKS
시작하고글쓰기올바른 위치에. 두 옵션 모두 바이트가 아닌 블록을 사용합니다. 깨거나 다시 시작할 때 만일을 대비해 블록을 여러 개 제거하는 것이 좋습니다. bs
많은 양의 데이터를 연속해서 읽으면 더 나은 성능을 얻을 수 있으므로 일반적으로 값을 512 이상으로 높이는 것이 좋습니다 .
귀하의 경우에는 실제로 에 전달해야 하는 블록 값입니다 seek
. 아마도 bs
속도를 향상시킬 수 있는지 확인하기 위해 조정을 시도해야 할 것입니다 /dev/random
. (사용 가능한 엔트로피가 없을 때 의사 무작위 및 비차단)
답변3
디스크 복제:
확장 중이것이 스레드의 대답은 다음과 같습니다. 전체 디스크를 복제하고 다시 시작하는 방법은 다음과 같습니다.
이 예는 5400rpm 로터리 드라이브에서 특정 시스템의 SSD로 복사하는 데 최적화되어 있습니다. gdd
다음을 나타냅니다 GNU dd
:
> sudo gdd 'if=/dev/rdisk3' 'of=/dev/rdisk6' bs=4M status=progress
247426187264 bytes (247 GB, 230 GiB) copied, 2082 s, 119 MB/s
59012+0 records in
59011+0 records out
247510073344 bytes (248 GB, 231 GiB) copied, 2082.92 s, 119 MB/s
다음 두 가지 방법 중 하나로 이 작업을 재개할 수 있습니다.
> sudo gdd 'if=/dev/rdisk3' 'of=/dev/rdisk6' \
bs=4M \
seek=59011 skip=59011 \
status=progress
또는:
> sudo gdd 'if=/dev/rdisk3' 'of=/dev/rdisk6' \
bs=4M \
seek=247510073344 skip=247510073344 \
oflag=seek_bytes iflag=skip_bytes \
status=progress
59011
첫 번째 예에서 와 not 을 사용하는 이유는 중단되기 전에 완전히 복사된 블록 크기 레코드의 수 59012
때문입니다 . 59011
(녹음).
답변4
가능하다면
#ddrescue from to logfile
ddrescue /dev/sda /dev/sdb logfile
시작 또는 끝 중 하나에서 로그 파일을 삭제하고 ctrl-c 등을 눌러야 하는 경우 ddrescue는 자체 로그 파일을 읽고 자동으로 재개합니다. 또한 먼저 모든 것을 쉽게 복사하고 로그 파일에서 다시 시작할 수 있으므로 다른 사용자를 위해 "돌아가서 더 열심히 노력하세요"라고 지시할 수 있습니다.