TRIM и фрагментация файла на SSD

Я провел тест TRIM, предложенный SHIBENYONG, а также нашел его здесь. Полученный файл размером 1 МБ сильно фрагментирован. Как это может быть?

Мое единственное запоминающее устройство /dev/sda такое Samsung 500GB SSD. Это "TRIM-ready" и ядро ​​поставляется с fstrim исполняемый в /etc/cron.weekly, Я, тем не менее, хотел провести тест, скажем так, из любопытства. В результате теста был создан файл 1MB, trim.test, заполненный y альфа персонаж.

После создания файла я проверил точную позицию файла на диске:

> cd /
> yes | sudo dd iflag=fullblock bs=1M count=1 of=trim.test
> sudo filefrag -s -v trim.test

Filesystem type is: ef53
Filesystem cylinder groups approximately 177
File size of trim.test is 1048576 (256 blocks of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..      15:    2816076..   2816091:     16:             merged
   1:       16..      31:     170064..    170079:     16:    2816092: merged
   2:       32..      63:     170848..    170879:     32:     170080: merged
   3:       64..     127:     168269..    168332:     64:     170880: merged
   4:      128..     255:     170112..    170239:    128:     168333: merged,eof
trim.test: 5 extents found, perfection would be -1 extent

Это повторяется, если я стираю файл и повторяю процедуру. Как файл размером 1 МБ может быть сильно фрагментирован?

1 ответ

Решение

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

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

  • Фрагментация файла состоит в том, что один файл записывается на жесткий диск или твердотельный накопитель во многих разных несмежных областях записи с использованием физических блоков, распределенных по носителю данных в разделе. В конкретном контексте твердотельных накопителей мы увидим, что это не имеет ничего общего с действиями TRIM или даже с уровнем управления хранилищем TRIM, но связано с выравниванием износа (WL), еще одним процессом для низкоуровневого управления носителями данных. в SSD (в отличие от TRIM). Внутреннее управление данными в SSD принципиально отличается от управления жесткими дисками по назначению секторов энергонезависимым элементам флэш-памяти (т. Е. Элементам SSD) и их соответствующим блокам (флэш-блокам). Он напрямую связан с фрагментацией файлов.
  • TRIM подготавливает как минимум один раз записанные физические блоки на SSD для новых операций записи (Wops), устраняя необходимость фактически удалять целевые блоки непосредственно перед тем, как происходит Wop (как это было бы в случае установки без TRIM). Для этого SSD должен иметь аппаратный контроллер, который готов к TRIM. Это не всегда так. После первого этапа использования (т. Е. Когда твердотельный накопитель все еще относительно новый и все его блоки еще не перезаписаны хотя бы один раз), Wops замедляется, пока не достигнет плато скорости. На этом этапе эмпирическое правило заключается в том, что TRIM приблизительно вдвое сокращает время записи на твердотельных накопителях с поддержкой TRIM по сравнению с тем же оборудованием без включенной TRIM.

Во время Wops SSD ведут себя совершенно иначе, чем HDD. HDD никогда не будет нуждаться в удалении блока перед Wop. SSD всегда делает, и это занимает много времени. TRIM помогает снизить потребление времени путем предварительной подготовки недавно освобожденных блоков на SSD с поддержкой TRIM, главным образом путем предварительного удаления блоков, которые освобождаются после изменения файла и перемещения в другую область тома. Это упрощенный взгляд на реальность, но на него может положиться неопытный пользователь, чтобы начать принимать решение об аппаратном и низкоуровневом администрировании оборудования. Читать дальше...

Связана ли TRIM с фрагментацией SSD?
- Краткий ответ: нет, они не связаны.
- Длинный ответ: фрагментация связана с выравниванием износа (WL), еще одним процессом, который оптимизирует срок службы твердотельных накопителей. WL необходим для гомогенизации Wops по всему свободному / доступному / незарезервированному пространству блоков SSD внутри тома / раздела. Это происходит благодаря тому, что каждый Wop приводит к старению соответствующих ячеек SSD посредством приложения относительно большого напряжения к крошечной области полупроводникового слоя, тем самым сокращая его срок службы. (Я полагаю, это связано с дефектами, вызванными термическим воздействием, которые появились в основной массе SSD, но это не по теме.)

Если бы Wops управлялись на твердотельных накопителях так же, как на жестких дисках, некоторые области носителя данных изнашиваются задолго до других, что приводит к неработоспособным блокам, потере емкости, потере данных и ошибкам. WL фактически гарантирует, что все блоки в любом данном разделе SSD подвергаются одинаковому количеству Wops, и что износ "выравнивается" по всему доступному пространству раздела SSD. В этом смысле он эффективно увеличивает срок службы твердотельного накопителя, сохраняя при этом его полную емкость до конца эксплуатации.

Есть два режима WL: статический и динамический. В этой вики (на немецком языке) указано, что число циклов записи в конце срока службы SSD может увеличиться в 100 раз для статического и в 25 раз для динамического WL по сравнению с тем же оборудованием с отключенным WL.

Поскольку WL физически распределяет Wops (ограничивающий параметр, определяющий срок службы SSD) как можно более равномерно по всему пространству хранения SSD внутри раздела, это неизбежно будет способствовать его фрагментации данных. Это необходимо для достижения своей главной цели - оптимизированного распределения записанных блоков по всему разделу SSD. Предполагается, что любой файл, хранящийся на SSD, может быть фрагментирован гораздо больше, чем на традиционном HDD. Фрагментация, однако, не приводит к снижению производительности SSD.

Принцип работы WL имеет и другие следствия: чем больше объем SSD, тем больше его срок службы при данных условиях использования. Для пользователя "условия использования" означают прежде всего:
- объем используемого пространства на разделе SSD и
- Частота Wop, т. Е. Насколько сильно доступен доступ для записи на носитель.
Это на самом деле может говорить в пользу:
- размещение lx swap, /home, /tmp и /var на жестком диске, в то время как остальная часть ОС может счастливо жить на меньшем SSD.
- не делать разделы с большим количеством Wops слишком маленькими на SSD. Например, если swap должен быть на SSD, и вы прочитали, что lx-swap лучше всего установить в два раза больше, чем размер DRAM, сделайте это 4 раза. Я не знаю, верна ли моя арифметика, но общая идея заключается в том, что это также более или менее удвоит срок службы пространства подкачки. Если вы выполняете много операций, требующих подкачки (серверы с большой нагрузкой на БД и т. Д.), Подумайте о переносе вашего свопа и / tmp на жесткий диск, если, конечно, вам не нравится идея перевести газовую горелку на ваш SSD.

Тем временем TRIM подготавливает блоки SSD для предстоящей новой Wop. Это предварительно подготовило предварительно записанные ячейки для нового Wop, удалив эти ячейки (фактически операция происходит на уровне блока) и запустив сборку мусора, когда это необходимо. В этом смысле TRIM следит за картой распределения недавно освобожденных (и, по крайней мере, однажды использованных) блоков, поскольку они находятся на низком уровне, управляемом контроллером WL.

Вывод:

  • Фрагментация не имеет значения. Это не ухудшает производительность SSD. Твердотельные накопители не нужны (см. Доклад Intel по твердотельным накопителям) и не получают выгоды от ведения домашнего хозяйства в форме дефрагментации. Независимо от вашей ОС, отключите дефрагментацию. Сейчас.
  • TRIM важен и полезен при условии, что SSD готов к TRIM. Сегодня несколько брендов предоставляют твердотельные накопители с поддержкой TRIM. Если вы прочитали эту ветку с самого начала, вы знаете название хотя бы одного из этих уважаемых брендов. Также несколько лет назад ext2 считался лучшим вариантом по сравнению с ext3, потому что ведение журнала фактически противоречило некоторым преимуществам, которые TRIM применял при использовании SSD первого поколения. Это больше не так, и ext4 на самом деле рекомендуется с TRIM + Сборка мусора.

НТН.

Другие вопросы по тегам