69

Моему старому накопителю на 128 ГБ уже около полутора лет, и с тех пор я перешел на другой диск.

Я бы хотел почистить мой старый SSD, чтобы ...

  • восстановить его производительность до почти новых уровней

  • реабилитировать его и вообще дать ему проверку здоровья

Как мне это сделать?

9 ответов9

55

В Linux просто запустите

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

передавая диапазоны блоков, которые вы хотите, TRIM вместо start и count и SSD-устройства вместо /dev/sda . Он имеет преимущество в том, что он быстр и не записывает нули на диск. Скорее, он просто отправляет команды TRIM контроллеру SSD, сообщая ему, что вам не нужны данные в этих блоках, и он может свободно предполагать, что они не используются в его алгоритме сбора мусора.

Вам, вероятно, нужно запустить эту команду от имени пользователя root. Поскольку эта команда чрезвычайно опасна, так как она может немедленно вызвать серьезную потерю данных, вам также нужно передать --please-destroy-my-drive в hdparm (я не добавил это в командную строку, чтобы предотвратить случайную потерю данных, вызванную скопировать и вставить.)

В приведенной выше командной строке /dev/sda следует заменить на SSD-устройство, на которое вы хотите отправлять команды TRIM. start - это адрес первого блока (сектора) для TRIM, а count - количество блоков, помеченных как свободные от этого начального адреса. Вы можете передать несколько диапазонов в команду.

Лично сделав это с hdparm v9.32 на Ubuntu 11.04 на моем ноутбуке с Crucial RealSSD C300 128 ГБ, я должен указать на проблему: мне не удалось передать общее количество дисковых блоков (0: 250069680) в качестве диапазона , Я вручную (по сути, "двоичный поиск вручную") нашел достаточно большое значение для числа блоков, которое сработало (40000) и смог выдать команды TRIM на последовательности 40000 диапазонов, чтобы освободить весь диск. Это можно сделать с помощью простого сценария оболочки, подобного этому (проверено на Ubuntu 11.04 под root):

 # fdisk -lu /dev/sda

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

чтобы стереть весь диск, возьмите это общее число секторов и замените 250069680 в следующей строке на этот номер и запустите (добавьте --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

И вы сделали! Вы можете попробовать прочитать необработанное содержимое диска с помощью hexedit /dev/sda до и после и убедиться, что диск отбросил данные.


Конечно, даже если вы не хотите использовать Linux в качестве основной ОС машины, вы можете использовать этот трюк, загрузившись с live CD и запустив его на дисководе.

23

Прежде всего, давайте начнем с понимания того, что именно приводит к снижению производительности. Не зная этого, многие люди предложат неадекватные решения (как я уже вижу, что происходит). Суть всего этого затруднительного положения в основном сводится к следующему факту, цитируемому из Википедии. Помните это, это важно:

При использовании флэш-памяти NAND операции чтения и программирования должны выполняться постранично, а разблокировка и стирание должны выполняться блочно.

Твердотельные накопители состоят из NAND-вспышки, а флэш-память состоит из "блоков". Каждый блок содержит много "страниц". Для простоты давайте представим, что мы только что приобрели новый блестящий SSD, который содержит колоссальный блок памяти, и этот блок состоит из 4 пустых страниц.

Для ясности я различаю пустые страницы, используемые страницы и удаленные страницы с помощью ∅, 1 и X. Главное, что между ними есть разница с точки зрения контроллеров! Это не так просто, как 1 и 0. Итак, для начала, страницы на нашем новом диске выглядят так:

∅, ∅, ∅, ∅ (все пусто)

Теперь мы переходим к записи некоторых данных на диск, и в итоге они сохраняются на этой первой странице, таким образом:

1, ∅, ∅, ∅

Затем мы записываем немного больше данных, только на этот раз достаточно, чтобы для этого потребовалось две страницы, и в итоге они были сохранены на 2-й и 3-й странице:

1, 1, 1, ∅

У нас заканчивается пространство! Мы решили, что нам не нужны начальные данные, которые мы написали, поэтому давайте удалим их, чтобы освободить место.

X, 1, 1, ∅

Наконец, у нас есть еще один большой набор данных, который нам нужно сохранить, который будет занимать оставшиеся две страницы. ЭТО ГДЕ ЭФФЕКТИВНОСТЬ ХИТ ПРОИСХОДИТ В ПРИВОДАХ БЕЗ ТРИМА !! Переходя от нашего последнего состояния к этому:

1, 1, 1, 1

... требует больше работы, чем большинство людей понимают. Опять же, это связано с тем, что флэш-память может стираться только блочным способом, а не постраничным, что в точности и требует последний переход, описанный выше. Отличающим TRIM и не-TRIM на основе SSD - х, когда выполняется следующая работа!

Поскольку нам нужно использовать пустую страницу и удаленную страницу, SSD должен сначала прочитать содержимое всего блока в некоторое внешнее хранилище / память, стереть исходный блок, изменить содержимое, а затем записать это содержимое обратно в блок. Это не так просто, как "запись", вместо этого он теперь стал «читать-стирать-писать». Это большое изменение, и для того, чтобы это произошло, когда мы пишем много данных, вероятно, самое неподходящее время для этого. Этого можно было бы избежать, если бы эта "удаленная" страница была восстановлена заблаговременно, что и предназначено для TRIM. С TRIM SSD либо восстанавливает наши удаленные страницы сразу после удаления, либо в другое удобное время, которое алгоритмы TRIM сочтут целесообразным. Важной частью является то, что с TRIM этого не происходит, когда мы находимся в середине записи!

Без TRIM мы, в конечном счете, не сможем избежать описанного выше сценария, так как заполняем наши диски данными. К счастью, некоторые новые твердотельные накопители выходят за рамки просто TRIM и фактически делают то же самое, что и TRIM в фоновом режиме на аппаратном уровне без необходимых команд ATA (некоторые называют это сборкой мусора). Но для тех из нас, кому не повезло, что их тоже нет, важно знать, что записи нулей на весь диск недостаточно для восстановления первоначальной производительности !!!!! Запись всех нулей на диск не указывает контроллеру, что страница во флэш-памяти свободна для записи. Единственный способ сделать это на диске, который не поддерживает TRIM, - это вызвать на диске команду безопасного стирания ATA с помощью такого инструмента, как HDDErase (через Wayback Machine).

Я полагаю, что были некоторые ранние SSD, которые поддерживали TRIM только после удаления разделов или при таких вещах, как "очистка диска в Windows 7", а не при удалении отдельных файлов. Это может быть причиной того, что старый диск восстанавливал производительность при выполнении этой команды. Это кажется мне немного туманным ...

Большая часть моих знаний о твердотельных накопителях и аппаратном обеспечении / гаджетах в целом исходит от anandtech.com. Я думал, что у него была отличная рецензия, объясняющая все это, но я не могу ее найти!

16

По-видимому, стандартная рекомендация состоит в том, чтобы записать все нули с полным приводом. Я не совсем уверен, почему это помогает (не много ли записей в конечном итоге убивает SSD?), Но, похоже, это подтверждается форумами поддержки SSD основных производителей.

Итак, чтобы сделать это в Windows:

  • запустить командную строку с правами администратора
  • выполнить команду diskpart

В утилите вы увидите DISKPART> и выполните следующие команды:

DISKPART> list disk
DISKPART> select disk x

Очевидно, убедитесь, что вы выбрали правильный дисковод SSD, прежде чем продолжить!

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

Волшебство здесь - это clean all что записывает все нули на диск:

Если вы укажете параметр all, каждый сектор может быть обнулен, а все данные, содержащиеся на диске, могут быть удалены.

После этого я могу подтвердить, что производительность диска существенно возросла.

15

Я также нашел инструмент, SSD Life Pro. Это плохие новости для меня.

SSDLife Pro - здоровье диска плохое!

Что касается того, как он рассчитывает это, он использует индикаторы SMART SSD. По-видимому, он пытается прогнозировать на основе данных SMART:

  • Время жизни флэш-памяти, на которой основаны твердотельные накопители, ограничено 10 000 операций записи на ячейку.
  • большинство приводов также показывают данные о записанной и / или считанной информации в своих параметрах SMART

Это сложно, потому что также необходимо знать, когда данные были записаны для оценки, но вот основные данные:

01 Read Error Rate   7
09 Power-on Hours Count  7085
0C Power Cycle Count   318
B8 Initial Bad Block Count   15
C3 Program Failure Block Count   0
C4 Erase Failure Block Count   0
C5 Read Failure Block Count  0
C6 Read Sectors   5468243171
C7 Write Sectors  41640920876
C8 Read Commands  100482453
C9 Write Commands   417315851
CA Error Bits from Flash  345270
CB Read Sectors with Correctable Bit Error  340001
CC Bad Block Full Flag   0
CD Maximum P/E Count Specification   5000
CE Minimum Erase Count   3774
CF Maximum Erase Count   65348
D0 Average Erase Count   4837
D1 Remaining Drive Life  4

Самое страшное число - это оставшийся срок службы привода, который составляет 4 .. процента!

И результирующие расчеты:

Model: CRUCIAL_CT128M225
Size: 128 GB
Serial number: xxxxxxxxxxxxxxxxx456
Firmware: 2030
Powered on times: 318    
TRIM support in drive/OS: enabled/enabled
Worked time: 9 months 16 days 5 hours
Total data read: 2607.46 GB
written: 19855.94 GB

Для справки, этот диск был изначально куплен в октябре 2009 года, поэтому ему чуть больше полутора лет.

5

Я обнаружил, что запись нуля через диск - не лучший подход. Хотя это может помочь в краткосрочной перспективе, я обнаружил, что он определенно не восстанавливает полную мощность моего диска (у меня довольно старый Intel-SSD без поддержки TRIM). После примерно года интенсивного использования я начал зависать на 1-2 секунды, когда SSD пытался записать любой файл, даже после обнуления SSD.

Единственное, что я обнаружил, что полностью восстанавливает производительность - это безопасное стирание с использованием hdparm . Я приобрел привычку надежно стирать мой SSD каждые 6-12 месяцев, когда он начинает испытывать незначительные икоты. Кто-то на Macrumors создал учебник для Mac, посвященный тому, как это сделать для устройств Mac *.

Согласно всем утверждениям, которые я видел, безопасное стирание отправляет на SSD специальную команду, которая заставляет его устанавливать все сектора на ноль на гораздо более низком уровне, чем просто с помощью dd или чего-то еще.

4

На Mac, проверьте DigilloydTools DiskTester. Там также есть некоторые интересные данные, чтобы увидеть влияние восстановления на производительность диска.

3

ThinkPads имеет скрытое меню BIOS (включите его с помощью http://www-307.ibm.com/pc/support/site.wss/MIGR-68369.html ), которое сбрасывает ваш SSD.

1

Теперь для систем Linux существует гораздо лучший ответ по сравнению с ответом @LeakyCode:

sudo fstrim -v /boot

Команда "fstrim" из "util-linx" будет проходить через файловую систему и будет выдавать команды TRIM для всего неиспользуемого пространства. В таких дистрибутивах, как Ubuntu, это отключено по умолчанию, за исключением списка избранных "известных безопасных" дисков от Intel и Samsung. Но команду можно запустить вручную на любом разделе для любого диска.

1

Чтобы проверить жизнь ssd на твердотельном диске ssd, вам нужно установить пакет smartmontools. Он содержит две служебные программы (smartctl и smartd) для управления и мониторинга систем хранения с использованием системы самоконтроля, анализа и отчетности (SMART), встроенной в большинство современных жестких дисков ATA и SCSI.

Для дистрибутивов на основе Ubuntu, Mint или Debian

# apt-get install smartmontools

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

Media_Wearout_Indicator - это то, что вы ищете. Если 100 означает, что ваш ssd имеет 100% жизни, то меньшее число означает меньше жизни.

# smartctl -a /dev/sda | grep Media_Wearout_Indicator

Вывод с моего ноутбука

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

Если вы хотите увидеть более подробную информацию и полные атрибуты с вашего диска, вы можете запустить

# smartctl -data -A /dev/sda

Источник: namhuy.net/1024/how-to-check-ssd-life-left.html

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .