LINUX.ORG.RU

Как оживить SSD, который давно не видел TRIM?

 , ,


0

3

Есть SSD диски, которые в RAID-10 стоят в p420i HP контроллере. Контроллер не умеет передавать TRIM на диски, и скорость уже стала проседать сильно. Поставили другой накопитель, данные перекинули. Теперь вопрос - как оживить диски? По ресурсу там еще 70+%. Нет возможности их физически достать, только как есть, подключенные к контроллеру. Может как то записать 0 на все диски или что такое…

Нужно вывести SSD из RAID так, чтобы накопитель виделся в системе как отдельное устройство. Обнулить его командой dd, создать на нём файловую систему с поддержкой TRIM, записать весь объём большими файлами и стереть их. Подождать некоторое время, пока SSD выполнит очистку адресуемого пространства. Можно повторить процедуру с разбивкой на разделы - так гарантированно освежатся страницы, занятые служебной информацией.

iZEN ★★★★★
()
Последнее исправление: iZEN (всего исправлений: 1)
Ответ на: комментарий от iZEN

Обнулить его командой dd

Зря, только ресурс записи потеряешь.

Подождать некоторое время, пока SSD выполнит очистку адресуемого пространства.

По какому техническому/программному признаку можно определить что SSD действительно освободил пространство ?

sekreti-gollivuda
()
Последнее исправление: sekreti-gollivuda (всего исправлений: 1)
Ответ на: комментарий от iZEN

вывести SSD из RAID так, чтобы накопитель виделся в системе как отдельное устройство

И использовать blkdiscard вместо вот этого вот чесания в гамаке, которое дальше описано

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

Т.е.:

  1. разбираю RAID, делаю отдельно 4 диска как бы
  2. на каждом раздел на весь размер диска и по нему blkdiscard этого должно хватить?

Сейчас там кстати LVM. С хост-машины и TRIM то не сделаешь.

Anfernee
() автор топика

На распознавание нулей можно не надеяться, но если ssd со сжатием, то может освободиться некоторая часть.

anonymous
()
Ответ на: комментарий от legolegs

Точней, он применяется к любому блочному устройству: диску, разделу, LV, даже файлу(в большинстве случаев). Но, да. Проще на весь диск.

anonymous
()
Ответ на: комментарий от anonymous

да еще прикол в том, что чистые ячейки имеют значение 0xFF( то есть все единицы), а не нули как многие думают. правда каждый конроллер может отдавать их по разному.

Rost ★★★★★
()

Лечил такое через sata secure erase в простом ноутбуке, загруженном с livecd.

А… Достать никак? Ну вот.. задача усложняется.

aol ★★★★★
()
Последнее исправление: aol (всего исправлений: 1)
Ответ на: комментарий от legolegs

Сделал blkdiscard -s -z. Точнее, делается еще. Реально теперь как то понять, что все норм? Планирую делать новый RAID, но использовать только 90% диска, остальное не размечать. Поможет?

Anfernee
() автор топика
Ответ на: комментарий от Anfernee

но использовать только 90% диска, остальное не размечать. Поможет?

Должно. Классический метод. Если конечно, твой изначальный диагноз был правильный. И если сделаешь нормальный TRIM а не то, что ты сейчас запустил.

legolegs ★★★★★
()
Последнее исправление: legolegs (всего исправлений: 1)
Ответ на: комментарий от Anfernee

Останови то что сделал и сделай просто blkdiscard. Или ATA Secure Erase (hdparm --security-set-pass foo /dev/sdX, hdparm --security-erase foo /dev/sdX).

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от legolegs

Вот же ж. Я по первой ссылку из поисковика. Там предлагают именно -s -z Причем оно теперь не хочет останавливаться. kill PID ничего не делает. какая то команда остановки что ли есть?

«Нормально» это blkdiscard -s?

Anfernee
() автор топика
Ответ на: комментарий от Anfernee

Нормально - это просто blkdiscard /dev/устройство.

Не останавливается возможно из-за того, что буфер записи ядра сбрасывается. В линуксе процессы в iowait не прерываются на сигналы. Ты же сделал по сути dd if=/dev/zero. Жди теперь.

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

удалил raid, создал такой же raid10 из тех же дисков, с теми же настройками. теперь оно говорит

blkdiscard /dev/sdd

blkdiscard: /dev/sdd: BLKDISCARD ioctl failed: Operation not supported До этого оно было sdc и blkdiscard запускался нормально. Что оно хочет?

Anfernee
() автор топика
Ответ на: комментарий от Anfernee

Эээ. Так ты сквозь контроллер рейда пытаешься сделать trim? Ты же сам сказал, что контроллер рейда такого не умеет. Я думал, что ты как-то вывел диски из под контроллера.

blkdiscard делает настоящий trim. blkdiscard -z это затычка для неудачников, у которых trim не поддерживается, которая пишет нули в надежде, что контроллер ssd поймет намёк и сам сделает себе trim.

PS постарайся не перепутать девайсы, которые очищаешь. Стоит обращаться к ним через /dev/disk/by-id/* а не /dev/sd*

legolegs ★★★★★
()
Последнее исправление: legolegs (всего исправлений: 1)
Ответ на: комментарий от anonymous

Вряд ли у него там FreeBSD, а в Linux давно уже придумали blkdiscard.

И заодно интернет, с системой инициализации-не-на-баше, тоже там придуали, угу.

man trim 
 trim [-Nfqv] [-[lo] offset[K|k|M|m|G|g|T|t]] [-r rfile] device ...

DESCRIPTION
     The trim utility erases specified region of the device.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.