Есть ли в Ubuntu поддержка команды TRIM для использования с SSD?

34

Диски SSD должны быть «очищены / сброшены» после того, как накопитель заполнен, чтобы поддерживать производительность. Это делается с помощью команды TRIM для новых накопителей SSD. Поддерживает ли Ubuntu команду TRIM (через hdparm и т. Д.) Для очистки / сброса этих дисков?

ssanj
источник
Хороший вопрос, хотя обратите внимание, что степень, в которой TRIM улучшает производительность, зависит от твердотельных накопителей, для некоторых это не имеет такого большого значения, как вы думаете (хотя в большинстве случаев они кажутся медленнее).
Николас Найт
1
Я думаю, что производительность будет восстановлена ​​до тех же (если не близко) заводских значений по умолчанию. Посмотрите здесь для объяснения -> anandtech.com/show/2738/10
ssanj

Ответы:

24

Похоже, что есть поддержка TRIM в 10.10 и более новых версиях:

Кроме того, работа с TRIM происходит автоматически - пустые блоки автоматически освобождаются, когда они больше не нужны (например, вы удаляете файл), если диск сообщает, что он поддерживает TRIM. Вам не нужно вручную вводить команду hdparm, чтобы это работало.

Джереми Керр
источник
Я думал, что вы все еще должны использовать инструменты, которые «отправляют» команду TRIM на SDD. Хорошо, если это работает так, как вы укажете. :) В этой статье Anandtech -> ( anandtech.com/show/2738/10 ) указано, что для работы TRIM и ОС, и SSD требуется поддержка TRIM. Я предполагаю, что мой вопрос касается поддержки OS / Linux для TRIM при использовании SSD-дисков с поддержкой TRIM.
ssanj
3
Команде TRIM необходимо знать, какие блоки необходимо освободить, поэтому было бы опасно выдавать это, не зная точно, какие блоки на диске не используются. Да, и ОС, и диск должны иметь поддержку обрезки. В Linux это было добавлено в версии ядра 2.6.33, поэтому будет включено в Maverick. Оба драйвера диска и файловая система, которую вы используете, должны поддерживать триммер для правильной работы. Если вы используете ext4 в качестве файловой системы на Maverick, все будет в порядке.
Джереми Керр
Интересно, будет ли возможность для существующих твердотельных накопителей пройти «модифицированную TRIM», чтобы очистить существующую крошку, накопленную до ОС, поддерживающей TRIM. Или потребуется переустановка?
Кент Бугаарт
20

Ответ Джереми не совсем точный AFAIK. В течение некоторого времени я работал с последними стабильными ядрами на Lucid и довольно остро следил за состоянием TRIM, поскольку в качестве основного диска у меня установлена ​​OCZ Agility.

Вот что (я думаю) я знаю:

  • Ядро имеет поддержку TRIM с 2.6.33 (Maverick - 2.6.35).

  • EXT4 имеет поддержку TRIM, но только когда журналирование отключено.

  • Принцип работы TRIM в ядре очень простой и довольно медленный. Диски, соответствующие спецификациям, могут принимать несколько диапазонов, но ядро ​​в настоящее время может использовать только один диапазон за раз. Это происходит от того, что я прочитал, возможно, месяц назад. Хотелось бы, чтобы у меня был источник, поскольку это может быть неверно или больше не может применяться.

Журналирование это то, что убивает это для меня. Повреждение данных - это PITA.

Однако более новые версии hdparm (v9.25 - Maverick - v9.27) поставляются со скриптом, wiper.shкоторый вызывает быстрый анализ диска и затем обрезает все пустое пространство. Вместо того, чтобы терять функции, мне намного проще wiper.shзапускать cron раз в неделю (или раз в день / месяц / что угодно). Ухудшение SSD для диска ОС не происходит так быстро, если вы постоянно не разрываете вещи. Вам не нужно в режиме реального времени TRIMming.

Существует также интерфейс GUI под названием DiskTRIM, которого нет в репозиториях. Менее опытным пользователям может показаться, что это проще в использовании, чем настройка заданий cron.

Есть PPA для hdparm и disktrim, и все они могут быть запущены на Lucid (и обратно) без необходимости в ядрах 2.6.33+.

Оли
источник
Можете ли вы дать ссылку на эти PPA, пожалуйста?
Хорхе Кастро
Так discardотключает ли журналирование включение опции монтирования для ext4? Я только что искал ссылки, но не могу найти ни одного, кроме этого ответа - можете ли вы предоставить источник?
Хэмиш Даунер
2
в Ubuntu 12.04 wiper.sh был заменен на fstrim
tomodachi
1
@Oli: Я немного больше читал и теперь уверен, что опция сброса не отключает журнал. Первоначально Afaict опция сброса работала только с журналом (я нашел этот патч, который позволяет отбрасывать без журнала). Страница ядра ext4 описывает вариант сброса, но не упоминает, что журнал несовместим.
Хэмиш Даунер
8

Linux поддерживает автоматический TRIM с файловой системой ETX4 начиная с ядра 2.6.33.

Первый выпуск Ubuntu с автоматической поддержкой TRIM - 10.10 (Maveric), но его нужно активировать в fstab (как описано здесь ).

Uli
источник
4

В общем, да, потому что есть множество способов получить более новые ядра. Если мы уточним ваш вопрос следующим образом: «Имеет ли 10.04 LTS встроенную поддержку для команды?» тогда ответ - нет. Однако ядра Maverick и Natty (-generic, -generic-pae, -server и -virtual flavors) были перенесены в 10.04 LTS и доступны из $ release-updates в репозиториях Ubuntu, например, linux-image-generic-lts-backport-maverickэто обратный порт Maverick для Lucid. ,

Даниэль Т Чен
источник
2

У меня работает 11.04, и не похоже, что TRIM работает по умолчанию.

Я протестировал, используя приведенные здесь инструкции, чтобы создать файл, удалить его и посмотреть, обнуляются ли / удаляются ли сектора .

Я попытался включить TRIM, используя инструкции здесь, но не игра в кости

Я запускаю wiper.sh, я получаю

/sbin/wiper.sh --verbose --commit / dev / sda1
wiper.sh: утилита Linux SATA SSD TRIM, версия 3.3, автор Mark Lord.
rootdev = / DEV / sda1
fsmode2: fsmode = чтение-запись
/: fstype = ext4
свободный размер = 13785252 КБ, зарезервировано = 137852 КБ
Подготовка к онлайн-TRIM свободного места в / dev / sda1 (ext4 смонтирована для чтения-записи в /).

Эта операция может молча уничтожить ваши данные. Вы уверены (да / нет)? Y
Создание временного файла (13647400 КБ).
Синхронизация дисков ..
Начало операций TRIM.
get_trimlist = / sbin / hdparm --fibmap WIPER_TMPFILE.9689

/ DEV / SDA:
обрезка 27294800 секторов из 462 диапазонов
удалось
Удаление временного файла ..
Синхронизация дисков ..
Выполнено.

Однако, если я запустлю его снова, он покажет то же количество секторов / диапазонов, которые необходимо обрезать, и снова сообщит об успехе. Я получаю одно и то же каждый раз. Не похоже, что сектора когда-либо удаляются / освобождаются. Чтение их по-прежнему показывает те же данные.

Любопытно, если кто-то еще получил его на работу.


источник
Если вы добавили опцию сброса в fstab, и она все еще не работает, возможно, это ошибка в альфа-версии. Вы должны подать отчет об ошибке.
Uli
Я только что проверил это в natty (следуя этим инструкциям: askubuntu.com/questions/18903/how-to-enable-trim ) и его работа еще лучше в natty, TRIM почти мгновенный.
Uli
Возможно, у вас есть твердотельный накопитель, который не поддерживает TRIM - некоторые из более ранних твердотельных накопителей не поддерживали TRIM.
Хэмиш Даунер