Apa cara yang disarankan untuk mengosongkan SSD?

53

Saya baru saja menerima SSD baru saya sejak yang lama mati. Intel 320 SSD ini mendukung TRIM. Untuk tujuan pengujian, dealer saya menaruh Windows di dalamnya, tetapi saya ingin menyingkirkan ini dan menginstal Kubuntu di atasnya.

Tidak harus menjadi "penghapusan aman", saya hanya perlu mengosongkan disk dengan cara yang paling sehat. Saya percaya bahwa dd if=/dev/zero of=/dev/sdahanya mengisi blok dengan nol dan dengan demikian mengambil tulisan lain (koreksi saya jika saya salah).

Saya telah melihat jawabannya Cara mengaktifkan TRIM , tetapi sepertinya cocok untuk membersihkan blok kosong, tidak menghapus disk.

hdparmtampaknya menjadi program untuk melakukannya, tetapi saya tidak yakin apakah itu membersihkan disk ATAU membersihkan blok kosong. Dari halaman manualnya:

  --trim-sector-ranges
          For  Solid State Drives (SSDs).  EXCEPTIONALLY DANGEROUS. DO NOT
          USE THIS OPTION!!  Tells the drive firmware to discard  unneeded
          data  sectors,  destroying  any  data that may have been present
          within them.  This makes those sectors available  for  immediate
          use  by  the firmware's garbage collection mechanism, to improve
          scheduling for wear-leveling of the flash  media.   This  option
          expects  one  or  more  sector range pairs immediately after the
          option: an LBA starting address, a colon, and  a  sector  count,
          with no intervening spaces.  EXCEPTIONALLY DANGEROUS. DO NOT USE
          THIS OPTION!!
          E.g.  hdparm --trim-sector-ranges 1000:4 7894:16 /dev/sdz

Bagaimana saya bisa membuat semua blok tampak kosong menggunakan TRIM?

Lekensteyn
sumber
Pertanyaan bagus, mungkin cukup menghapus sistem file NTFS saja?
htorque
1
Karenanya itu hanya komentar. ;) Namun, Anda pertama-tama dapat memeriksa beberapa sektor pada partisi tersebut sudo dd if=/dev/sda iflag=direct bs=512 skip=<some_sectors> count=32 | hexdump -C, lalu menghapus partisi NTFS menggunakan versi Gparted terbaru dan memeriksa kembali dengan perintah yang sama - jika data terhapus, Anda hanya akan melihat nol.
Htorque
1
@tortor: Saya baru saja mengujinya tetapi tidak berfungsi, saya telah menggunakan hexdump -C /sda1dan hexdump -C /sda1untuk menentukan blok awal. Ide yang bagus.
Lekensteyn
1
@Lekensteyn - Maksud saya sedikit lidah di pipi dan muncul jawaban yang tepat untuk Anda di bawah ini. Artikel Jeff memiliki sedikit kinerja juga, itulah sebabnya ia menggunakannya meskipun tingkat kegagalannya :-)
Rory Alsop
3
Saya masih tidak mengerti mengapa Anda harus menghapusnya ... mengapa Anda tidak bisa memformatnya kembali dengan Ext4 atau apa pun?
Nathan Osman

Jawaban:

52

ATA Secure Erase

Anda harus menggunakan fitur penghapusan keamanan drive .

  1. Pastikan Keamanan pengandar tidak beku . Jika ya, mungkin membantu untuk menangguhkan dan melanjutkan komputer.

    $ sudo hdparm -I /dev/sdX | grep frozen
           not     frozen 
    

    Output perintah (yang difilter) berarti bahwa drive ini "tidak beku" dan Anda dapat melanjutkan.

  2. Atur Kata Sandi Pengguna (kata sandi ini juga dihapus, pilihan yang tepat tidak masalah).

    sudo hdparm --user-master u --security-set-pass Eins /dev/sdX
    
  3. Keluarkan perintah ATA Secure Erase

    sudo hdparm --user-master u --security-erase Eins /dev/sdX
    

catatan:

  • /dev/sdX adalah SSD sebagai perangkat blok yang ingin Anda hapus.
  • Eins adalah kata sandi yang dipilih dalam contoh ini.

Lihat artikel ATA Secure Erase di wiki kernel Linux untuk instruksi lengkap termasuk pemecahan masalah.

psusi
sumber
Terima kasih atas tautannya, terlihat bagus untuk mereka yang memiliki BIOS yang mendukungnya, tetapi milik saya tampaknya tidak mendukungnya. (beku)
Lekensteyn
Hore! Setelah membaca artikel itu lagi, saya membaca "Menempatkan sistem saya ke dalam" tidur "(notebook Clevo M865TU) bekerja juga --- dan ini dapat mengatur ulang drive lain untuk" tidak beku "juga." dan mencobanya karena milik saya berasal dari Clevo juga (tapi BTO membangunnya). Berhasil, saya melihat "tidak beku" sekarang. ... tetapi langkah 3 gagal dengan "ERASE_PREPARE: Alamat buruk" karena saya mengganti sudo berdasarkan waktu alih-alih menambahkan pada perintah!
Lekensteyn
1
OMG berhasil dan hanya butuh 19 detik! Terima kasih banyak! Seandainya saya bisa membesarkan Anda sepuluh kali: D
Lekensteyn
Saya hanya ingin melaporkan bahwa jawaban yang diterima di atas memiliki tautan yang terputus. Tidak ada gunanya tanpa kata tautan, siapa pun mau memposting ringkasan apa yang dikatakan tautan itu?
Ashimema
@Ashimema: Tautan saat ini rusak karena kernel.org telah diretas dan karena itu sedang dalam pemeliharaan. Google Cache kosong, tetapi blog ini menyalinnya: peter.membrey.hk/2011/09/11/…
Lekensteyn
30

util-linux 2.23 menawarkan blkdiscardyang membuang data tanpa menghapusnya dengan aman. Saya diuji: bekerja lebih dari SATA dan mmcblk tetapi tidak USB.

Kutipan dari halaman manual blkdiscard(8):

NAMA

blkdiscard - buang sektor pada perangkat

RINGKASAN

blkdiscard [-o offset] [-l length] [-s] [-v] device

DESKRIPSI

blkdiscard digunakan untuk membuang sektor perangkat. Ini berguna untuk driver solid-state (SSD) dan penyimpanan yang disediakan secara tipis. Tidak seperti fstrim (8) perintah ini digunakan langsung pada perangkat blok.

Secara default, blkdiscard akan membuang semua blok pada perangkat. Opsi dapat digunakan untuk mengubah perilaku ini berdasarkan rentang atau ukuran, seperti yang dijelaskan di bawah ini.

Argumen perangkat adalah nama path perangkat blok.

PERINGATAN: Semua data di wilayah yang dibuang pada perangkat akan hilang!

Perintah sudah ada sejak Ubuntu 15.04 dan OpenSUSE 13.1 (ya OpenSUSE memilikinya 2 tahun lebih awal dari Ubuntu).

Tankman 六四
sumber
Terima kasih telah menambahkan informasi ke posting usang ini dan selamat datang di askubuntu.
mondjunge
Arch Linux sudah memiliki paket ini karena util-linux 2.23 dirilis pada 25 April 2013.
Lekensteyn
4
Terima kasih atas sambutannya. Pos kedaluwarsa? Tua, tetapi tidak ketinggalan zaman, selama muncul di halaman 1 hasil pencarian Google, selalu ada orang baru yang mencari jawaban yang sama datang ke sini. Bagi saya itu sudah usang hanya ketika halaman yang lebih baik mendorongnya keluar dari halaman hasil google pertama.
Tankman 六四
3
Jika Anda bertanya-tanya perbedaan antara blkdiscarddan hdparmperintah, itu dijawab di sini : "Ketika Anda menggunakan blkdiscard, SSD (dengan asumsi SSD SATA) akan menerima perintah ATA TRIM, sedangkan hdparm --security-erase akan mengeluarkan ATA SECURITY ERASE Perintah UNIT. Apa yang sebenarnya dilakukan drive tergantung pada detail implementasi dari firmware SSD tertentu itu. "
Lekensteyn
2
Anda sebenarnya tidak ingin menggunakan blkdiscard. Pertama, ini dimaksudkan untuk memberi tahu drive bahwa bagian-bagian tertentu mungkin dibuang, bukan untuk menghapus semuanya. Drive mungkin atau mungkin tidak benar-benar menghapus data. Perintah penghapusan aman harus menghapus semua data, termasuk data apa pun yang ada di bagian drive yang saat ini tidak dapat diakses. Sunting: baca kembali pertanyaannya dan sadari itu tidak membutuhkan penghapusan, tetapi masih perlu diperhatikan.
psusi
5

Jika Anda tidak membutuhkan penghapusan yang aman, mengapa Anda tidak menginstal kubuntu menggunakan opsi untuk 'menggunakan seluruh disk' dan setara dengan 'format cepat' (tidak dapat mengingat terminologi yang tepat sekarang)

Dengan begitu Anda membuang tabel alokasi file dan drive secara efektif dikosongkan untuk ditimpa. Anda sebenarnya tidak perlu mengosongkannya.

Rory Alsop
sumber
2
Lihat anandtech.com/show/2865/2 . Menghapus blok tidak sama dengan menghapusnya dan menandainya sebagai kosong.
Lekensteyn
@Lekensteyn Menghapus tidak berarti apa-apa untuk perangkat blok. Pemasang akan memanggil mkfs.ext4 dan membuang seluruh perangkat; ini seaman "secure erase", dalam arti bahwa dalam kedua kasus Anda mempercayai firmware SSD.
Tobu
1
@Tobu Benar, itu telah berubah di beberapa titik. mkfs.ext4(8)mengatakan: Buang - Mencoba membuang blok pada waktu mkfs (membuang blok awalnya berguna pada perangkat solid state dan penyimpanan yang jarang / tipis). Ketika perangkat mengiklankan yang membuang juga nol data (setiap pembacaan berikutnya setelah dibuang dan sebelum menulis mengembalikan nol), kemudian tandai semua tabel inode belum-zeroed sebagai nol. Ini secara signifikan mempercepat inisialisasi sistem file. Ini ditetapkan sebagai default.
Lekensteyn
@Tobu Untuk kasus penggunaan saya, "Secure erase" tidak harus benar-benar menghapus data dari chip flash-nya, itu hanya memastikan bahwa tidak ada efek kinerja negatif yang dihasilkan dari penggunaan beberapa blok.
Lekensteyn
1

Jika drive memiliki filem Linux, Anda dapat menggunakannya fstrim. Secara default, Ubuntu baru-baru ini dijalankan fstrimpada drive dari vendor berikut:

    if [ -z "$NO_MODEL_CHECK" ]; then
        if ! contains "$HDPARM" "Intel" && \
           ! contains "$HDPARM" "INTEL" && \
           ! contains "$HDPARM" "Samsung" && \
           ! contains "$HDPARM" "SAMSUNG" && \
           ! contains "$HDPARM" "OCZ" && \
           ! contains "$HDPARM" "SanDisk" && \
           ! contains "$HDPARM" "Patriot"; then
            #echo "device $DEV is not a drive that is known-safe for trimming"
            continue

Sekali seminggu.

Jadi satu jawaban untuk pertanyaan Anda adalah boot sistem dan tunggu seminggu!

Bryce
sumber
1
fstrim disebutkan dalam postingan blkdiscard ini , Anda juga dapat memanggilnya secara manual dengan sudo fstrim /(di mana /ada mountpoint dari sistem file yang mendukung discardopsi).
Lekensteyn
-4

Cukup hapus partisi, Anda tidak perlu menghapus seluruh disk, data lama akan ditimpa ketika penyimpanan diperlukan untuk hal lain.

Untuk mengaktifkan TRIM:

gksudo gedit /etc/fstab

Ubah "ext4 errors = remount-ro 0" menjadi "ext4 discard, errors = remount-ro 0". (Tambahkan buangan)

Simpan dan reboot, TRIM sekarang harus diaktifkan.

Periksa apakah TRIM diaktifkan:

sudo -i
dd if=/dev/urandom of=tempfile count=100 bs=512k oflag=direct
hdparm --fibmap tempfile

Gunakan alamat begin_LBA pertama.

hdparm --read-sector [begin_LBA] /dev/sda

Sekarang harus mengembalikan angka dan karakter. Hapus file dan sinkronkan.

rm tempfile
sync

Sekarang, jalankan perintah berikut lagi. Jika mengembalikan nol, TRIM diaktifkan.

hdparm --read-sector [begin_LBA] /dev/sda
Alex
sumber
2
Anda TIDAK ingin mengisi SSD dengan nol karena akan menulis ke setiap blok hapus, menyebabkan lebih banyak keausan, dan meninggalkan setiap blok hapus penuh. Juga banyak drive TIDAK segera memangkas sektor dipangkas.
psusi
Tentu, ini membutuhkan banyak penulisan, tetapi tidak merusak disk. Saya telah menggunakan Corsair F120 selama 10-11 bulan sekarang dan sering mengisinya dengan nol. (Melakukannya sebelum setiap tolok ukur) Jadi, setelah 30-35 kali kinerjanya masih sama. (~ 285MB baca, 275MB / tulis) SMART mengatakan: Disknya sehat
Alex
9
Alex, setiap tulisan ke SSD sedikit merusaknya. Menulis ke setiap blok penghapusan tunggal menyebabkan semuanya ditandai untuk digunakan, yang akan mencegah GC drive berfungsi dengan benar dan kinerja akan terganggu. Anda dapat menganggapnya sebagai keseluruhan drive unTRIM.
psusi