ทำไม GNU ถึงฉีกเร็วกว่า dd เมื่อเติมข้อมูลแบบสุ่ม?


8

ในขณะที่ลบฮาร์ดไดรฟ์อย่างปลอดภัยก่อนที่จะทำการรื้อถอนฉันสังเกตเห็นว่าdd if=/dev/urandom of=/dev/sdaใช้เวลาเกือบทั้งวันในขณะที่shred -vf -n 1 /dev/sdaใช้เวลาเพียงสองสามชั่วโมงกับคอมพิวเตอร์เครื่องเดียวกันและไดรฟ์เดียวกัน

เป็นไปได้อย่างไร? /dev/urandomฉันเดาว่าคอขวดคือผลลัพธ์ที่จำนวน จำกัด เครื่องฉีกใช้เครื่องกำเนิดไฟฟ้าแบบหลอกบางอย่างที่สุ่มน้อยกว่าและเพียงพอสำหรับจุดประสงค์เดียว (เช่นมีประสิทธิภาพมากกว่า) urandomหรือไม่


โปรดทราบว่าตัวเลือกที่ดีที่สุดสำหรับการลบไดรฟ์โดยเฉพาะไดรฟ์ ssd คือคำสั่งลบที่ปลอดภัยของ SATA ตัวเลือกอื่น ๆ - ยกเว้นการทำลาย - จะล้มเหลว มันเร็วกว่ามากเช่นกันและอาจใช้เวลาเพียงไม่กี่วินาทีใน SSD
Maarten Bodewes

คำตอบ:


11

Shred ใช้เครื่องกำเนิดไฟฟ้าเทียมหลอกภายใน

โดยค่าเริ่มต้นคำสั่งเหล่านี้ใช้เครื่องกำเนิดไฟฟ้าเทียมหลอกภายในเริ่มต้นด้วยจำนวนเล็กน้อยของเอนโทรปี แต่สามารถนำไปใช้แหล่งภายนอกกับตัวเลือกไฟล์ --random-source = รายงานข้อผิดพลาดหากไฟล์มีจำนวนไบต์ไม่เพียงพอ

ตัวอย่างเช่นไฟล์อุปกรณ์/ dev / urandomสามารถใช้เป็นแหล่งที่มาของข้อมูลแบบสุ่ม โดยปกติแล้วอุปกรณ์นี้จะรวบรวมเสียงรบกวนสิ่งแวดล้อมจากไดรเวอร์อุปกรณ์และแหล่งอื่น ๆ ลงในพูลเอนโทรปีและใช้พูลเพื่อสร้างบิตสุ่ม หากพูลมีข้อมูลไม่เพียงพออุปกรณ์จะใช้พูลภายในเพื่อสร้างบิตเพิ่มเติมโดยใช้เครื่องสร้างหมายเลขเทียมที่มีการเข้ารหัสลับแบบเข้ารหัส แต่ทราบว่าอุปกรณ์นี้ไม่ได้ออกแบบมาสำหรับกลุ่มคนรุ่นข้อมูลแบบสุ่มและ ค่อนข้างช้า

ฉันไม่ได้ชักชวนว่าข้อมูลแบบสุ่มใด ๆ ที่มีประสิทธิภาพมากขึ้นกว่าที่ผ่านเดียวของเลขศูนย์ (หรือมูลค่าไบต์อื่น ๆ ) ที่ปิดบังเนื้อหาก่อน

ในการรื้อถอนไดรฟ์อย่างปลอดภัยฉันใช้แม่เหล็กขนาดใหญ่และค้อนขนาดใหญ่


2

ฉันเดาว่ามันน่าจะเกิดจากการddใช้ชิ้นเล็ก ๆ เขียนข้อมูล ลองdd if=... of=... bs=(1<<20)ดูว่ามันทำงานได้ดีขึ้นหรือไม่


ฉันจะลองในโอกาสต่อไปและโพสต์ผลลัพธ์

ddขนาดบล็อกเริ่มต้น +1 คือ 512 มันทำงานต่ำกว่าขีด จำกัด ของดิสก์ในคอมพิวเตอร์ของฉัน
Piotr Findeisen

/ dev / urandom มีแนวโน้มที่จะเร็วมาก - ขนาดของบล็อกวันนั้นเกือบจะเป็นปัญหาอย่างแน่นอน
Dan Pritts

2
เมื่อคุณเพิ่มขนาดบล็อกดูเหมือนว่า/dev/urandomจะเป็นปัญหาคอขวด - ฉันกำลังทดสอบไดรฟ์ SSD บางตัวผ่าน USB 3.0 และด้วยddคำสั่งเดียวกันฉันจะได้รับ 326 MB / s สำหรับif=/dev/zeroแต่เพียง 12.8 MB / s สำหรับif=/dev/urandom
austinmarton
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.