Mengembalikan kinerja dan memperkirakan masa pakai drive SSD yang digunakan?


70

Drive SSD 128 GB saya yang lama sekitar satu setengah tahun sekarang, dan sejak itu saya telah ditingkatkan ke drive lain.

Saya ingin membersihkan SSD lama saya untuk ...

  • mengembalikan kinerjanya ke level yang hampir baru

  • merehabilitasi dan biasanya memeriksanya

Bagaimana cara saya melakukan ini?


4
Meskipun tidak mencakup pemulihan, Anda mungkin menemukan posting blog ini menarik untuk mencegah hal ini terjadi.
Tamara Wijsman

1
Saya mungkin baru saja melewatkannya, tetapi saya tidak melihat bahwa jawaban di bawah ini " dicentang ". Dalam hal pertanyaan ini, saya benar-benar ingin tahu apa yang terjadi pada akhirnya bekerja "terbaik" untuk Anda. (Jika Anda ingat untuk mengingat ...)
John,

Jawaban:


56

Di Linux, jalankan saja

hdparm --trim-sector-ranges start:count /dev/sda

melewati rentang blok yang ingin Anda TRIM alih-alih startdan countdan perangkat SSD sebagai pengganti /dev/sda. Ini memiliki keuntungan karena cepat dan tidak menulis nol pada drive. Alih-alih, ia hanya mengirim perintah TRIM ke pengontrol SSD, membiarkannya tahu bahwa Anda tidak peduli dengan data di blok tersebut dan dapat dengan bebas menganggapnya tidak digunakan dalam algoritme pengumpulan sampah.

Anda mungkin perlu menjalankan perintah ini sebagai root. Karena perintah ini sangat berbahaya, karena dapat langsung menyebabkan kehilangan data besar, Anda juga harus meneruskan --please-destroy-my-driveargumen hdparm(Saya belum menambahkan ini ke baris perintah untuk mencegah kehilangan data yang tidak disengaja yang disebabkan oleh salin dan tempel.)

Pada baris perintah di atas, /dev/sdaharus diganti dengan perangkat SSD yang ingin Anda kirimi perintah TRIM. startadalah alamat blok pertama (sektor) ke TRIM, dan countjumlah blok yang akan ditandai bebas dari alamat awal itu. Anda dapat melewati beberapa rentang ke perintah.

Setelah secara pribadi melakukannya dengan hdparm v9.32 di Ubuntu 11.04 di laptop saya dengan 128GB Crucial RealSSD C300, saya harus menunjukkan masalah: Saya tidak dapat meneruskan jumlah total blok disk (0: 250069680) sebagai kisaran . Saya secara manual (pada dasarnya "pencarian biner" dengan tangan) menemukan nilai yang cukup besar untuk jumlah blok yang bekerja (40000) dan mampu mengeluarkan perintah TRIM pada urutan rentang 40000 untuk membebaskan seluruh disk. Dimungkinkan untuk melakukannya dengan skrip shell sederhana seperti ini (diuji pada Ubuntu 11.04 di bawah root):

 # fdisk -lu /dev/sda

 Disk /dev/sda: 128.0 GB, 128035676160 bytes
 255 heads, 63 sectors/track, 15566 cylinders, total 250069680 sectors
 ...  

untuk menghapus seluruh drive, ambil jumlah total sektor itu dan ganti 250069680 di baris berikut dengan angka itu dan jalankan (tambahkan --please-destroy-my-drive):

 # i=0; while [ $i -lt 250069680 ]; do echo $i:40000; i=$(((i+40000))); done \
 | hdparm --trim-sector-ranges-stdin /dev/sda

Dan kamu selesai! Anda dapat mencoba membaca konten mentah disk dengan hexedit /dev/sdasebelum dan sesudah dan memverifikasi bahwa drive telah membuang data.


Tentu saja, bahkan jika Anda tidak ingin menggunakan Linux sebagai OS utama mesin, Anda dapat memanfaatkan trik ini dengan mem-boot CD live dan menjalankannya di drive.


3
Menulis hebat, tetapi sayangnya ini tidak akan berfungsi untuk SSD pendukung non-TRIM. Untuk itu Anda perlu melangkah lebih jauh. Lihat wiki ATA di kernel.org untuk instruksi tentang cara melakukannya dengan hdparm. Akan lebih baik jika Anda dapat memodifikasi entri asli Anda untuk memasukkan info ini :)
James

"fstrim" adalah versi mudah di atas (lihat jawaban terpisah).
Bryce

@ Bryce, salah; TRIM hanya bersifat penasehat dan dimaksudkan untuk alasan kinerja, bukan keamanan, yang berarti bahwa drive tersebut bebas untuk mengabaikan perintah atau menunda penghapusan sampai nanti, seperti yang dilakukan sebagian besar drive.
psusi

24

Pertama, mari kita mulai dengan memahami apa yang menyebabkan penurunan kinerja. Tanpa mengetahui hal ini, banyak orang akan menyarankan solusi yang tidak memadai (seperti yang saya lihat terjadi). Inti dari seluruh kesulitan ini pada dasarnya bermuara pada fakta berikut, seperti dikutip dari Wikipedia . Ingat itu, ini penting:

Dengan memori flash NAND, operasi membaca dan pemrograman harus dilakukan setiap saat, sementara membuka kunci dan menghapus harus dilakukan dengan cara yang bijaksana.

SSD terdiri dari NAND flash, dan flash terdiri dari "blok". Setiap blok berisi banyak "halaman". Demi kesederhanaan, mari bayangkan kita baru saja membeli SSD baru yang mengkilap yang berisi satu blok memori, dan blok itu terdiri dari 4 halaman kosong.

Demi kejelasan, saya membedakan antara halaman kosong, halaman bekas, dan halaman yang dihapus dengan ∅, 1, dan X. Kuncinya adalah bahwa ada perbedaan antara masing-masing dari perspektif pengontrol! Ini tidak sesederhana 1 dan 0. Jadi, untuk memulai, halaman pada drive baru kami terlihat seperti ini:

∅, ∅, ∅, ∅ (semuanya kosong)

Sekarang, kita pergi untuk menulis beberapa data ke drive, dan akhirnya disimpan di halaman pertama itu, dengan demikian:

1, ∅, ∅, ∅

Selanjutnya, kami menulis sedikit lebih banyak data, hanya kali ini cukup sehingga membutuhkan dua halaman dan akhirnya disimpan di halaman ke-2 dan ke-3:

1, 1, 1, ∅

Kami kehabisan ruang! Kami memutuskan bahwa kami tidak benar-benar membutuhkan data awal yang kami tulis, jadi mari kita hapus itu untuk membuat ruang .:

X, 1, 1, ∅

Akhirnya, kami memiliki satu set data besar yang perlu kami simpan yang akan mengkonsumsi dua halaman yang tersisa. INI DI MANA KINERJA HIT TERJADI DI DRIVES TANPA POTONG !! Beralih dari status terakhir kami ke ini:

1, 1, 1, 1

... membutuhkan lebih banyak pekerjaan daripada yang disadari kebanyakan orang. Sekali lagi ini disebabkan oleh fakta bahwa flash hanya dapat dihapus dengan cara blok-bijaksana, bukan halaman-bijaksana yang persis apa yang disebut transisi akhir di atas. Perbedaan antara TRIM dan SSD berbasis non-TRIM adalah ketika pekerjaan berikut dilakukan!

Karena kita perlu menggunakan halaman kosong dan halaman yang dihapus, SSD harus terlebih dahulu membaca isi seluruh blok ke beberapa penyimpanan / memori eksternal, menghapus blok asli, memodifikasi konten, dan kemudian menulis konten itu kembali ke blok. Ini tidak sesederhana "menulis", melainkan sekarang menjadi "baca-hapus-tulis". Ini adalah perubahan besar, dan untuk itu terjadi saat kami menulis banyak data mungkin waktu yang paling tidak tepat untuk terjadi. Itu semua bisa dihindari jika halaman "dihapus" itu dipulihkan sebelumnya, yang persisnya dimaksudkan oleh TRIM. Dengan TRIM, SSD dapat memulihkan halaman kami yang dihapus segera setelah penghapusan atau pada waktu lain yang tepat yang dianggap sesuai oleh algoritma TRIM. Namun yang penting adalah bahwa dengan TRIM itu tidak terjadi ketika kita sedang menulis!

Tanpa TRIM, kami pada akhirnya tidak dapat menghindari skenario di atas karena kami mengisi drive kami dengan data. Untungnya beberapa SSD baru melampaui TRIM dan secara efektif melakukan hal yang sama seperti TRIM di latar belakang pada tingkat perangkat keras tanpa perintah ATA yang diperlukan (beberapa menyebutnya pengumpulan sampah). Tetapi bagi kita yang cukup beruntung untuk tidak memiliki keduanya, penting untuk mengetahui bahwa menulis nol untuk seluruh drive tidak cukup untuk mendapatkan kembali kinerja asli !!!!! Menulis semua nol ke drive tidak menunjukkan ke controller bahwa halaman dalam flash gratis untuk ditulis. Satu-satunya cara untuk melakukan itu pada drive yang tidak mendukung TRIM adalah dengan menjalankan perintah ATA secure erase pada drive Anda menggunakan alat seperti HDDErase (via Wayback Machine) .

Saya percaya ada beberapa SSD awal yang hanya mendukung TRIM setelah menghapus partisi atau pada hal-hal seperti "diskpart clean all" Windows 7, dan bukan pada penghapusan file individual. Ini mungkin menjadi alasan mengapa drive yang lebih lama muncul untuk mendapatkan kembali kinerja setelah menjalankan perintah itu. Ini tampaknya agak kabur bagiku ...

Sebagian besar pengetahuan saya tentang SSD dan perangkat keras / gadget secara umum berasal dari anandtech.com . Saya pikir dia memiliki artikel bagus yang menjelaskan semua ini tetapi untuk kehidupan saya, saya tidak dapat menemukannya!


Aha! Saya menemukan artikel Anandtech asli!
James

Hanya membaca sekilas ini tetapi memberi +1 untuk menyebutkan penghapusan aman ATA, dan kutipan per-blok vs per-halaman.
Christopher Galpin

1
Meskipun sebagian besar jawaban ini benar, bagian tentang pengumpulan sampah salah. Semua SSD memiliki koleksi sampah. Mereka tidak akan bekerja tanpanya. Pengumpulan sampah bukanlah alternatif untuk TRIM. Dalam keadaan kosong sel NAND mewakili 1 dan Anda kemudian dapat menuliskannya ke 0. Tapi untuk mengembalikannya ke nol Anda harus menghapus seluruh blok sekaligus. Jadi alih-alih menimpa data yang ada, perubahan apa pun bisa ditulis ke blok baru dan data lama ditandai sebagai tidak valid. Menghapus data yang tidak valid adalah Pengumpulan Sampah. TRIM memberi tahu SSD untuk menandai data sebagai tidak valid ketika Anda menghapusnya di OS.
Tuan Alpha

Tidak cukup Tuan Alpha. Istilah "Pengumpulan Sampah" muncul dari pengontrol yang secara proaktif melakukan proses yang Anda gambarkan pada waktu optimal sebagai lawan hanya bereaksi ketika mereka benar-benar perlu melakukannya (yang lagi-lagi, menghasilkan kinerja yang buruk saat drive terisi).
James

1
Mungkin kita seharusnya tidak pernah menyebutnya "Pengumpulan Sampah" dan sebagai gantinya hanya dijuluki "penimbun" pengendali reaktif yang lebih tua.
James

17

Rupanya rekomendasi standar adalah melakukan penulisan full-drive dari semua nol. Saya tidak sepenuhnya yakin mengapa ini membantu (jangan banyak penulisan akhirnya membunuh SSD?), Tetapi tampaknya didukung oleh forum dukungan SSD vendor besar.

Jadi, untuk melakukannya di Windows:

  • mulai prompt perintah dengan hak istimewa Administrator
  • jalankan perintah diskpart

Setelah di utilitas Anda akan melihat DISKPART>prompt dan mengeluarkan perintah berikut:

DISKPART> list disk
DISKPART> select disk x

Jelas, PASTIKAN ANDA TELAH MEMILIH DRIVE SSD yang BENAR sebelum melanjutkan!

DISKPART> clean all
DISKPART> create partition primary
DISKPART> format quick fs=NTFS 

Keajaiban di sini adalah clean allyang menulis semua nol ke drive :

Jika Anda menentukan semua parameter, setiap sektor dapat di-nolkan, dan semua data yang terdapat pada drive dapat dihapus.

Setelah melakukan ini, saya dapat mengonfirmasi bahwa kinerja disk naik secara substansial.


11
@Jeff Alasan mengapa menulis semua angka nol dapat membantu baru-baru ini dijelaskan oleh David Spillett : beberapa pengendali berasumsi bahwa blok zeroed dapat dibuang dan dikembalikan ke kumpulan ruang kosong, meniru efek dari perintah TRIM.
sblair

1
2 poin - pertama, biasanya perintah flash erase menghapus blok ke semua 0xffs, jadi akan lebih baik untuk menulisnya daripada 0s. Saya harus memeriksa lembar data untuk memastikan. Kedua - jika Anda mencoba mengelabui controller ke TRIMing drive, bukankah itu ide yang baik untuk menjalankan semacam utilitas yang hanya TRIM setiap blok pada drive? Secara pribadi, saya mungkin akan melakukan keduanya (0xffs dan TRIM), tapi saya mungkin agak sedikit berlebihan di sini.
Dennis Munsie

2
@dennis yakin, jika ada utilitas seperti itu - jangan ragu untuk menunjuk saya ke salah satunya.
Jeff Atwood

1
@ Dennis: Jika drive menggunakan bit "fisik" "pada" dan ini diterjemahkan ke bit logis di tempat lain, maka 0xff mungkin pola yang Anda butuhkan. Mereka bisa menggunakan logika terbalik, jadi dokumentasi atau komunikasi dengan pabrikan adalah satu-satunya cara untuk memastikan sebelum melanjutkan. Saran saya untuk menggunakan sdelete atau serupa adalah mencoba memangkas blok yang tidak digunakan pada sistem file yang berfungsi. Tentu saja akan menghasilkan tulisan non-trim untuk semua blok dalam pemetaan SSD yang merupakan campuran dari yang digunakan dan yang tidak digunakan.
David Spillett

2
Saya agak terperangah bahwa begitu banyak orang yang tampaknya tidak mengetahui cara menghapus SSD yang aman. Tidak perlu TRIM setiap blok tunggal. Cukup jalankan utilitas yang mengirimkan perintah Secure Erase ATA ke SSD dan masalah Anda terpecahkan, terlepas dari apakah SSD mendukung TRIM atau tidak.
James

16

Saya juga menemukan alat, SSD Life Pro . Ada berita buruk bagi saya.

SSDLife Pro - kesehatan drive buruk!

Mengenai cara menghitung itu, ia menggunakan indikator SMART SSD. Tampaknya ia mencoba untuk memprediksi berdasarkan data SMART :

  • Masa pakai memori flash, yang menjadi dasar SSD, dibatasi hingga 10.000 tulis per sel
  • sebagian besar drive juga menampilkan data tentang informasi tertulis dan / atau baca dalam parameter SMART mereka

Ini rumit karena juga perlu tahu kapan data ditulis untuk memperkirakan, tetapi inilah data yang mendasarinya:

01 Baca Tingkat Kesalahan 7
09 Jam Penyalaan Hitung 7085
Jumlah Siklus Daya 0C 318
B8 Initial Bad Block Count 15
C3 Kegagalan Blok Program Hitung 0
C4 Penghapusan Kegagalan Blok Hitung 0
C5 Baca Kegagalan Jumlah Blok 0
C6 Baca Sektor 5468243171
C7 Menulis Sektor 41640920876
C8 Baca Perintah 100482453
C9 Tulis Perintah 417315851
CA Error Bits dari Flash 345270
CB Baca Sektor dengan Kesalahan Bit yang Dapat Diperbaiki 340001
CC Bad Block Bendera Penuh 0
Spesifikasi Hitungan P / E Maksimum 5000
CE Penghapusan Minimum Count 3774
CF Penghapusan Maksimum Count 65348
Rata-rata Penghapusan D0 Hitung 4837
D1 Remaining Drive Life 4

Angka menakutkan di sana adalah Remaining Drive Life yang 4 .. persen!

Dan perhitungan yang dihasilkan:

Model: CRUCIAL_CT128M225
Ukuran: 128 GB
Nomor seri: xxxxxxxxxxxxxxxxx456
Firmware: 2030
Diberdayakan pada kali: 318    
Dukungan TRIM dalam drive / OS: diaktifkan / diaktifkan
Waktu kerja: 9 bulan 16 hari 5 jam
Total data baca: 2607,46 GB
tertulis: 19855,94 GB

Sebagai catatan, drive ini awalnya dibeli pada bulan Oktober 2009, jadi sedikit lebih dari satu setengah tahun.


3
@ Jeff Ketika memori flash telah ditingkatkan dalam ukuran proses, jumlah siklus program / hapus telah menurun . Nilai 0xCD menunjukkan bahwa Anda memiliki drive berbasis 34nm dengan 5.000 siklus P / E terukur, bukan 10.000.
sblair

1
@blair bagus untuk diketahui; Saya mencoba alat ini pada OCZ Vertex 2 yang baru dan memiliki bidang dan nilai SMART yang sama sekali berbeda.
Jeff Atwood

2
Data itu terlihat sedikit salah - dikatakan Anda telah menulis data hampir 10x lebih banyak dari yang Anda baca. Bukankah itu terdengar tinggi? Saya berharap lebih banyak membaca dari itu. Apakah Anda memiliki file halaman pada drive itu?
Dennis Munsie

1
Lebih banyak titik data - Saya memiliki SSD serupa yang diinstal di MacBook istri saya. Ini sebelumnya laptop saya, yang digunakan untuk tujuan pengembangan. Saya hanya melihat statistik pada SSD itu, dan dalam 8 bulan atau lebih dari kehidupan drive itu, itu memiliki total 17 daya pada jam dibandingkan dengan 7085 untuk Anda (295 hari). Saya tahu pasti bahwa mesin telah di total lebih dari 17 jam, tetapi tampaknya OS secara agresif mematikan drive.
Dennis Munsie

2
20TB ditulis ke drive 128GB !? Untuk apa sebenarnya Anda menggunakan drive ini?
BlueRaja - Danny Pflughoeft

6

Saya telah menemukan bahwa menulis nol melalui drive bukanlah pendekatan terbaik. Meskipun mungkin membantu dalam jangka pendek, saya menemukan bahwa itu pasti tidak mengembalikan drive saya ke performa penuh (saya memiliki Intel-SSD non-TRIM yang agak lama). Setelah satu tahun penggunaan yang cukup berat, saya mulai membeku 1-2 detik ketika SSD akan mencoba menulis ke file apa pun , bahkan setelah mem-nolkan SSD.

Satu-satunya hal yang saya telah menemukan bahwa mengembalikan sepenuhnya kinerja adalah menghapus aman menggunakan hdparm. Saya telah membiasakan untuk menghapus SSD saya setiap 6-12 bulan ketika mulai mengalami beberapa masalah kecil. Seseorang di Macrumors membuat tutorial khusus mac tentang cara melakukannya untuk perangkat mac *.

Menurut semua klaim yang saya lihat, penghapusan aman mengirim perintah khusus ke SSD yang menyebabkannya mengatur semua sektor menjadi nol pada level yang jauh lebih rendah daripada hanya menggunakan ddatau sesuatu.


jika drive tidak mendukung TRIM maka semua taruhan dimatikan ..
Jeff Atwood

1
Jeff salah, Secure Erase benar-benar independen dari TRIM. Ini adalah perintah ATA yang sebenarnya, dan itu adalah satu-satunya hal yang dapat Anda lakukan untuk mengembalikan drive pendukung non-TRIM sepenuhnya . Ketika SSD menerima perintah ini, semua sel NAND ditandai sebagai kosong, memulihkan kinerja penulisan drive asli tanpa memerlukan TRIM. Ada banyak alat yang tersedia yang dapat melakukan ini, termasuk hdparm yang dirujuk dalam jawaban teratas sejauh ini.
James

5

Di Mac, periksa digtoydTools DiskTester . Ada juga beberapa poin data menarik di sana untuk melihat efek rekondisi pada kinerja drive.


Saya percaya semua yang dilakukan adalah menulis file yang sangat besar nol ke SSD Anda. Anda dapat mencapai menyimpan hasil dengan melakukan cat /dev/zero > /tmp/bigfile.
Kendall Hopkins


2

Untuk memeriksa sisa masa pakai ssd pada SSD (solid-state drive), Anda perlu menginstal paket smartmontools. Ini berisi dua program utilitas (smartctl dan smartd) untuk mengontrol dan memantau sistem penyimpanan menggunakan Sistem Teknologi Pemantauan Diri, Analisis dan Pelaporan (SMART) yang dibangun di sebagian besar hard disk ATA dan SCSI modern.

Untuk distribusi berbasis Ubuntu, Mint, atau Debian

# apt-get install smartmontools

For Fedora, Centos, or Red Hat based distributions
# yum install smartmontools

Media_Wearout_Indicator adalah apa yang Anda cari. Untuk 100 berarti SSD Anda memiliki 100% masa pakai, angka yang lebih rendah berarti sisa masa pakai yang lebih sedikit.

# smartctl -a /dev/sda | grep Media_Wearout_Indicator

Output dari laptop saya

233 Media_Wearout_Indicator 0×0032 100 100 000 Old_age Always – 0

Jika Anda ingin melihat lebih banyak detail dan atribut lengkap dari drive Anda, Anda dapat menjalankannya

# smartctl -data -A /dev/sda

Sumber: namhuy.net/1024/how-to-check-ssd-life-left.html


2

Sekarang ada jawaban yang jauh lebih baik untuk sistem Linux, dibandingkan dengan jawaban @LeakyCode:

sudo fstrim -v / boot

Perintah "fstrim" dari "util-linx" akan dijalankan melalui sistem berkas dan mengeluarkan perintah TRIM untuk semua ruang yang tidak digunakan. Pada distribusi seperti Ubuntu ini dinonaktifkan secara default kecuali untuk daftar tertentu drive "dikenal aman" dari Intel dan Samsung. Tetapi perintah tersebut dapat dijalankan secara manual pada partisi apa pun untuk drive apa pun.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.