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

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

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

Мое единственное устройство хранения /dev/sda— это Samsung 500 ГБ SSD. Он «TRIM-ready», а ядро ​​поставляется с fstrimисполняемым файлом в /etc/cron.weekly. Тем не менее, я хотел запустить тест, скажем, из любопытства. Тест выдал файл размером 1 МБ, 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-накопителей, однако эти 2 проблемы различны.

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

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

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

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

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

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

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

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

Заключение:

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

НТН.

Связанный контент