Cara tercepat untuk menghapus SSD dari semua partisinya untuk partisi ulang di Linux?

21

Saya ingin menghapus SSD dari semua partisi dan datanya, jadi saya dapat mempartisi ulang (ini bukan untuk tujuan keamanan).

Saya telah melihat sudo dd if=/dev/zero of=/dev/sdb bs=1Mtetapi jika ini hanya mengisi setiap partisi dengan nol, saya tidak yakin ini yang ingin saya lakukan.

Saya berencana untuk menjalankan perintah ini cukup sering, dan saya tidak ingin menghabiskan tulisan SSD saya. Adakah yang bisa memberi saya saran untuk mengatasi masalah ini?

IgDV
sumber
1
Pelajari ini: ATA Secure Erase . Saya tidak punya pengalaman dengan prosesnya, jadi ini bukan jawaban, hanya sebuah petunjuk. Siapa pun merasa bebas untuk menulis jawaban Anda sendiri tentang ini jika Anda tahu ini adalah cara yang benar.
Kamil Maciorowski
18
Untuk tujuan keamanan, atau hanya karena Anda perlu partisi ulang?
grawity
sebagian besar hanya untuk partisi ulang
IgDV
14
12 mengukur aksi pompa. Dan Anda tahu seseorang akan mengatakannya cepat atau lambat!
ssimm
1
@ssimm - Preferensi saya adalah barbecue arang.
Daniel R Hicks

Jawaban:

41

Pada SSD: Anda dapat TRIM menggunakan seluruh disk atau partisi blkdiscard. Ini tidak terlalu aman, tetapi praktis instan (disk hanya menandai semua sel sebagai tidak terpakai).

Untuk keamanan: Gunakan enkripsi disk penuh. Jangan repot-repot menghapus seluruh disk jika terenkripsi - Anda hanya perlu menghapus area yang berisi kunci Anda (mis. 1-2 MiB pertama dari setiap partisi terenkripsi).

Untuk partisi ulang: Sekali lagi, jangan repot-repot menghapus semua data. Anda hanya perlu memusnahkan sistem file menggunakan wipefs, kemudian gosok 1 MiB pertama dari disk Anda untuk membersihkan sisa bootloader. Setelah Anda memformat partisi menggunakan mkfs, OS hanya akan menganggap itu benar-benar kosong.

(Faktanya, di Linux, mkfs.ext4 akan secara otomatis MEMULAI seluruh partisi sebelum memformatnya.)

grawity
sumber
6
Untuk partisi ulang, mengapa tidak hanya menghapus partisi lama dan membuat yang baru?
el.pescado
5
Karena jika Anda membuat partisi baru di lokasi yang sama (posisi awal), Anda hanya akan menemukan data lama yang sama di dalamnya! (Tentu saja itu biasanya tidak masalah, karena memformat ulang mkfsakan membuangnya. Tetapi berbagai situasi aneh memang terjadi - wipefsada karena diperlukan.)
grawity
4
@ IGDV - apa man wipefskatanya? (Petunjuk: lihat contoh pertama di bagian contoh halaman manual)
Timo
2
"Anda hanya perlu menghapus area yang berisi kunci Anda" - pada SSD, kuncinya juga kemungkinan dapat dipulihkan. TPM atau kunci perlindungan kata sandi yang kuat mungkin merupakan opsi yang lebih baik. blkdiscardakan lebih baik juga karena akan membuat puzzle dari sisa disk bahkan jika penyerang tahu kunci (dengan asumsi pemetaan lama tidak dapat dipulihkan juga). "lalu gosok 1 MiB pertama disk Anda untuk membersihkan sisa bootloader" - bagian tambahan hanya digunakan sebagai luapan 512B pertama. Jika Anda menghapus pertama 512B Anda tidak akan dirugikan oleh sisa 1M.
Maciej Piechotka
1
@MaciejPiechotka: Sayangnya, beberapa bootloader (khususnya grub) juga menggunakan ruang setelah MBR.
grawity
14

Seperti yang Kamil Maciorowski sebutkan , cara terbaik, dengan sedikit penulisan untuk menghapus seluruh disk, adalah dengan menggunakan perintah ATA 'secure erase'. Ini akan menginstruksikan perangkat keras untuk melakukan satu penghapusan penuh, daripada menimpa sel berulang kali seperti dengan alat-alat seperti shred. Ini hanya dapat dilakukan untuk seluruh disk, jika Anda perlu menghapus partisi secara selektif, lihat jawaban grawity ( blkdiscard)

Implementasi yang tepat dari perintah tergantung pada perangkat keras.

  • Sebagian besar SSD akan menggunakan sinyal listrik massal untuk menghapus seluruh chip dengan cara semua atau tidak sama sekali. Hal ini menimbulkan keausan (normal), tetapi hanya sebatas mungkin (~ siklus penulisan tunggal).

  • SSD yang dienkripsi sendiri biasanya hanya akan menghapus kunci enkripsi di dalam chip pengontrol (benar-benar instan). Hard disk terenkripsi sendiri selalu mengenkripsi, bahkan out-of-the-box (dengan kunci standar pabrik). Jadi, menyeka kunci hanya akan meninggalkan campur aduk yang tidak dapat didekripsi pada chip flash, bahkan jika tidak ada kunci pengguna yang ditetapkan.

  • Hard-disk Spinning-Rust akan melakukan zero-write berbasis hardware dari semua sektor, yang setara (dan memakan waktu) dd if=/dev/zero.

Proses ini didokumentasikan dengan cukup baik di sini: https://www.thomas-krenn.com/en/wiki/SSD_Secure_Erase (Saya secara pribadi menggunakan proses ini berulang kali pada SSD saya sendiri ketika menginstal ulang OS'es)

Sunting: jika Anda tertarik dengan implikasi keamanan: periksa pertanyaan Security.SE ini

Jules Kerssemakers
sumber
Apakah Secure Erase didukung oleh sebagian besar disk ATA? Saya mendapat kesan bahwa dukungannya tidak umum.
Ruslan
1
Saya belum menemukan disk (modern, SATA) yang tidak mendukungnya, tapi saya akui pengalaman saya terbatas pada harddisk yang saya miliki secara pribadi. Tampaknya juga ada perbedaan antara "penghapusan aman" dan "penghapusan aman yang ditingkatkan", dengan yang terakhir kurang didukung.
Jules Kerssemakers
3
@Ruslan Saya belum pernah melihat (atau mendengar) disk spesifikasi SATA-2 yang tidak mendukungnya. Hampir semua disk SATA yang dibuat dalam 10 tahun terakhir atau lebih harus memilikinya.
Tonny
Apakah ini juga berarti bahwa pada SSD yang dienkripsi sendiri, perintah TRIM adalah no-op? (Kalau tidak, itu tidak selalu mengenkripsi, kan?)
Mehrdad
1
@Mehrdad: Ya, menggunakan TRIM pada SSD yang dienkripsi membocorkan informasi tentang blok mana yang gratis. Apakah itu dapat diterima tergantung pada kebutuhan keamanan Anda. Lihat misalnya askubuntu.com/questions/399211/... untuk diskusi.
sleske
4

Ingatlah bahwa Anda telah meminta solusi tentang cara menghapus disk dengan cepat. Ganti / dev / sdx dengan disk Anda, yang paling disukai / dev / sda

Ini akan menghapus tabel partisi.

dd if=/dev/zero of=/dev/sdx bs=1024 count=50

Ini akan menghapus seluruh disk, itu akan memakan waktu.

cat /dev/zero > /dev/sdx
Jarrod Chesney
sumber
4
Jangan gunakan cat. Gunakan dduntuk meningkatkan kinerja.
Micheal Johnson
6
@Micheal Anda mengatakan itu, tetapi secara default ddmenggunakan buffer 512-byte, yang akan merusak kinerja ... Coreutils ( cpdan mungkin juga cat) memiliki ukuran buffer yang lebih masuk akal. Lagipula tidak ada ddyang membuatnya menjadi lebih cepat.
grawity
3
@grawity Anda dapat mengubah ukuran buffer dd. Terakhir kali saya mencoba menggunakan catuntuk menulis gambar ke disk, itu secara signifikan lebih lambat daripada menggunakan dddengan ukuran buffer yang sesuai.
Micheal Johnson