드라이브를 채우는 것이 /dev/urandom
매우 느린 것 같아서 다음 내용으로 파일을 만들었습니다 FF
.
dd if=/dev/zero ibs=1k count=1000 | tr "\000" "\377" >ff.bin
드라이브를 파일 복사본으로 채우고 싶지만 다음 명령은 한 번만 씁니다.
dd if=ff.bin of=/dev/sdb count=10000
파일 복사본으로 드라이브를 채우는 방법 또는 드라이브를 채우는 더 빠른 방법이 있습니까?1의?
답변1
다음을 수행하세요.
tr '\0' '\377' < /dev/zero > /dev/sdb
드라이브가 가득 차면 오류와 함께 중단됩니다.
여기서 사용하는 것은 의미가 없습니다 dd
. 이를 사용하여 dd
읽기 및 쓰기가 특정 크기를 갖도록 할 수 있습니다. 여기서는 그렇게 할 이유가 없습니다. tr
4 또는 8kiB 읽기/쓰기를 수행하면 충분합니다.
답변2
더 빠른 대안을 위해 (의사 무작위가 괜찮은 경우) 또는 무작위 키를 사용하고 이를 0으로 만드는 방법(암호화의 경우 0)이 /dev/urandom
있습니다 . AES 가속이 없어도 속도를 쉽게 앞지를 수 있습니다.shred -v -n 1
cryptsetup
/dev/urandom
tr
그렇지 않으면 얼마나 빨리 할 수 있는지 잘 모르겠습니다 dd if= | tr | dd of=
.
파일을 패턴 소스로 사용하는 방법은 다음과 같습니다.
(while [ 1 ]; do cat file; done) | dd of=...
원격으로 효율적으로 사용하려면 파일 크기가 상당히 커야 합니다.
중요한 경우 명령 에 count=
추가하세요 . 부분 읽기가 가능하며 이로 인해 부분 블록이 전체 블록으로 계산됩니다. 특히 더 큰 블록 크기(예 : )를 사용할 때 속도를 원한다면 이렇게 해야 합니다.iflag=fullblock
dd
bs=1M
답변3
불량 블록 -v -w -s -b물리적 블록 크기-t 0xff /dev/장치
ff
모든 것을 4K 기본 HDD에 쓰고 /dev/sdb
다시 읽어 ff
각 블록이 실제로 기록되었는지 확인하는 예:
$ sudo badblocks -v -w -s -b 4096 -t 0xff /dev/sdb
답변4
SSD 속도를 테스트하기 위해 명령줄에 제공된 블록 장치에 0, 1 또는 영숫자를 쓰는 작은 Perl 프로그램을 작성했습니다. 꼭두각시를 호출하지 않고 dd
직접 쓰고 동기화합니다. 여기에 도움이 될 수 있습니다:
https://github.com/dtonhofer/wild_block_device_filler
그냥 다음과 같이 실행하세요.
wildly_fill_block_device.pl --dev=sdX1 --fillpat 1 --chunksize=1024P --sync
fdatasync()를 사용하는 동안 각 쓰기 후 데이터를 디스크에 동기화하는 동안 "1024개의 물리적 블록" 블록으로 /dev/sdX1(버퍼링되지 않음, Perl의 syswrite() 사용)에 0xFF를 씁니다. 내 SSD에서는 약 70MiB/s로 실행됩니다.
파티션이나 디스크 공격을 진행하기 전에 확실한지 묻는 메시지가 표시됩니다.