Saya menimpa hard drive saya dengan data acak menggunakan yang lama dd
:
dd if=/dev/urandom of=/dev/disk/by-uuid/etc bs=512
Ini adalah array 2TB dan MacBook saya (menjalankan Linux, ok?) Hanya dapat menulis data sekitar 3.7MB / s, yang cukup menyedihkan karena saya melihat desktop saya di rumah melakukan 20MB / s. Ketika saya pulang malam ini, saya ingin menghentikan dd
pelarian di sini, membawanya pulang, dan melihat kemajuan seperti apa yang bisa dicapai dalam semalam dengan mesin yang lebih kuat.
Saya telah memantau perkembangan menggunakan loop sederhana:
while true; do kill -USR1 $PID ; sleep 10 ; done
Outputnya terlihat seperti ini:
464938971+7 records in
464938971+7 records out
238048755782 bytes (238 GB) copied, 64559.6 s, 3.7 MB/s
Jika saya harus melanjutkan dd
pass di rumah, bagaimana saya me-restart itu? Saya mengetahui seek
parameternya, tetapi apa yang harus saya tunjukkan, nomor rekaman atau jumlah byte?
seek=464938960
Jawaban:
Karena @don_crissti sudah berkomentar, cukup gunakan
seek=
untuk melanjutkan.GNU dd
juga mendukung pencarian dalam byte, sehingga Anda dapat melanjutkan dengan tepat, terlepas dari ukuran blok:Blocksize yang lebih besar akan membantu kecepatan bahkan untuk perangkat yang lambat sekalipun
/dev/urandom
.Jika Anda mencari alternatif yang lebih cepat, Anda bisa
cryptsetup plainOpen
dengan kunci acak dan nol itu, itu harus mengalahkan/dev/urandom
dengan urutan besarnya (tanpa AES-NI) atau bahkan berjalan dengan kecepatan penuh (dengan AES-NI).Anda juga dapat menggunakan
shred -n 1
jika data pseudorandom cukup baik untuk kasus penggunaan Anda.shred
harus dapat memanfaatkan kecepatan disk penuh, bahkan pada mesin yang sangat lambat.sumber
plainOpen
sampai sekarang. Bagus! Menyelesaikan pengacakan 2TB drive saya di sekitar 4 jam dibandingkan dengan 256GB di lebih dari 12 menggunakan/dev/urandom
.Hanya pengingat bagi orang yang ingin menyalin bukan hanya mengacak disk (yang tidak yang umum): Anda dapat menggunakan
skip=BLOCKS
untuk memulai membaca pada posisi yang tepat, danseek=BLOCKS
mulai menulis pada posisi yang benar. Kedua opsi menggunakan blok, bukan byte. Ketika memecahkan / memulai kembali, disarankan untuk menghapus banyak blok untuk berjaga-jaga. Biasanya perlu meningkatkanbs
nilai di atas 512, karena Anda dapat mencapai kinerja yang lebih baik jika Anda membaca banyak data dalam satu baris.Dalam kasus Anda, ini memang merupakan nilai blok yang harus Anda sampaikan
seek
. Mungkin Anda harus mencoba menyesuaikanbs
untuk melihat apakah Anda dapat meningkatkan kecepatan, seperti yang/dev/random
seharusnya berjalan cepat (pseudo-random dan non-blocking ketika tidak tersedia entropi)sumber
dd
dengan ukuran blok kecil seperti 512 byte cenderung jauh lebih lambat dari throughput maksimum disk Anda. Gunakan ukuran blok yang lebih tinggi (pada firasat saya akan mengatakan beberapa MB) untuk kinerja yang baik. Atau gunakancat
- di Linux saya menemukancat
secepatdd
dengan ukuran blok optimal ketika satu disk terlibat (saya tidak tahu apakah itu berlaku untuk OSX juga).Untuk menemukan sejauh mana
cat
telah mencapai, jalankan dilsof -p1234
mana 1234 adalah ID proses daricat
proses tersebut.Untuk melanjutkan dari suatu posisi, gunakan
di mana 123456 adalah offset dalam byte.
sumber
Kloning disk:
Memperluas jawaban ini dari utas ini, ini adalah bagaimana seseorang dapat mengkloning seluruh disk dan melanjutkan:
Contoh ini dioptimalkan untuk menyalin dari drive rotary 5400rpm ke SSD pada sistem tertentu.
gdd
mewakiliGNU dd
:Saya dapat melanjutkan ini dalam salah satu dari dua cara:
Atau:
Dalam contoh pertama, alasan kami menggunakan
59011
dan tidak59012
, adalah karena59011
berapa banyak catatan berukuran blok sepenuhnya disalin sebelum diganggu. (catatan).sumber