LINUX.ORG.RU

Особенности работы SSD с разными FS (трим и выравнивание износа ячеек)

 , , ufsd paragon


2

2

Всем доброго времени суток!

Возникли некоторые вопросы по поводу использования SSD разбитого на несколько разделов с разными файловыми системами, например, ext4 и ntfs.

Выравнивание износа ячеек будет происходить только в пределах разделов с одинаковыми FS или же выравнивание износа осуществляется только посредством самого контроллера и никак не зависит от FS и количества разделов на нем? В таком случае не понятно, как будет контроллер выравнивать износ тех ячеек, в которых никаких изменений после однократной записи больше не происходило? Или контроллер выравнивает износ только тех ячеек в которые динамически производится запись? Где можно подробнее прочитать об этом?

Еще вопрос, может кто-то сталкивался с работой драйвера UFSD от Paragon, он же NTFS & HFS for Linux Express, действительно ли он позволяет делать трим для ntfs разделов под linux? Если верить описанию, то это должна быть достойная замена NTFS-3G, какие могут быть аргументы за и против? Как проверить работу трима на этих разделах с этим драйвером?



Последнее исправление: CoolAller (всего исправлений: 3)

мне почему-то настойчиво кажется, что толковый контроллер хорошего ssd должен всё это проделывать незаметно для юзера и независимо от файловой системы и операционки

вроде бы marvell так и работают

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

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

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

Если контроллер не знает о партициях от куда берутся советы оставлять не размеченные области?

Про типы fs ему действительно не нужно знать, главное знать свободные от данных области.

Возможно ядро сообщает о партициях контроллеру. А что если контроллеры такие умные, что умеют разбираться в mbr, gpt.

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

Если контроллер не знает о партициях от куда берутся советы оставлять не размеченные области?

От чрезмерного ума, конечно же :)

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

Ну так а нахрена усложнять контроллер ненужным функционалом?

dk-
()
Ответ на: комментарий от surefire

https://ru.wikipedia.org/wiki/TRIM

не размечать весь диск - гарантия наличия свободного места, так как фс может не уведомлять об освобождении блока

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

TRIM (англ. to trim — подрезать) — команда интерфейса ATA, позволяющая операционной системе уведомить твердотельный накопитель о том, какие блоки данных уже не содержатся в файловой системе и могут быть использованы накопителем для физического удаления.

Какая файловая система в не размеченной области диска?
Так вот я и пытаюсь понять. Кто должен он ней сообщать: ядро, fstrim или контроллер сам прочитает таблицу разделов? Или это вообще всё выдумки про не размеченную область.

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

ядро, fstrim

Команда TRIM - в спецификации ATA.

Ядро говорит контроллеру «TRIM такой-то блок», контроллер его тримит. А что в действительности внутри SSD происходит - знает лишь контроллер и его разработчики.

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

Или это вообще всё выдумки про не размеченную область.

Не читай советских газет. У ранних SSD падала производительность, когда их забивали на 100%.

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

Да тут есть один нюанс, если никогда не было записи в данную область контроллер знает что она свободна.

Но вот вам ситуация:
Имеем еженедельный fstrim.
Создали раздел
Записали данные
Cнесли раздел
fstrim который сработает через 3 дня бессилен.
Область зависла.

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

Если представить весь зоопарк {c,f,g}disk-ов и {g,x}pated-ов. То лучше бы это было не так.

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

"ничо там не выравнивается, не парься"

Мне кажется, что это практически так и есть, так как я весьма сомневаюсь, что файлы FS, которые статично записаны в какой-то блок/ячейку будут потом принудительно переносится по команде контроллера в другой уже слегка поюзанный блок. Если бы так было, то мне кажется неизбежно были бы просадки скорости, причем значительные.

Предположительно, если этот процесс «выравнивания» вообще существует и это не очередная пиар-компания, то выравнивание износа может идти только для ячеек в которых активно идет запись-обнуление-запись.

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

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

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

А почему Trim должен сработать у вас через 3 дня, а не сразу же после удаления файла? Ведь этим самым убивается само назначение команды Trim? Вот \, например, цитата: «Смысл команд TRIM и заключается в том, чтобы сообщить об этом контроллеру сразу по факту удаления файла». Взято отсюда.

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

А разве при удалении раздела файлы на нем не помечаются как «удаленные»? Мне кажется контроллер при сносе раздела должен как-то обработать это действие, иначе как он потом узнает о том, что область «зависла» и что он с ней будет делать? Другой вопрос когда сработает сборщик мусора, но помоему это не особенно принципиально, если имеется свободное пространство.

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

Выравнивание износа ячеек

какое ещё выравнивание, тычо несёшь. внутреннюю схему разделов и где прописаны блоки знает только контроллер, программам это не видно. Кроме того, у ССД нет понятия «конец» и «начало» диска.

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

Если вы будете ограничивать свой кругозор только винфакми, вы никогда не узнаете что:

Есть 2 резжима работы trim.

  • в режиме discard драйвером fs, команда отправляется сразу после освобождения области.
  • с помощью утилиты fstrim вызываемой по таймеру, рекомендуется 1 раз в несколько дней.

Первый режим имеет недостаток, в том, что он может замедлять SSD при работе и с мелкими файлами, когда контроллер кроме основной работы нагружается trim-ом.
Второй режим, просто собирает и отправляет все свободные области в fs.

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

Опять 25.
Вы не видите разницу между примонтированной файловой системой и удаляемым разделом.
Не корректно говорить о файлах на уровне добавления и удаления раздела. Удаляемый раздел отмонтирован и никто не знает какие там файлы и где. Там может быть фс вообще повреждена, а может даже не поддерживаемая фс.
Или например вы хотите удалить раздел и создать на его месте новый который будет начинаться там же, а заканчиваться дальше. Это нормальная практика, при работе с fdisk. Получиться всё, данные уплыли.

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

fstrim только для смонтированной файловой системы работает. Смонтируй снесенный раздел и делай ему fstrim

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

Если контроллер не знает о партициях от куда берутся советы оставлять не размеченные области?

чтобы всегда оставалось свободное место

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

Всё верно именно это я и написал.
И discard тоже работает только для смонтированной ФС.

Еще раз повторю кто не читает начало.

  • Нужно выяснить, знает ли контроллер о не размеченной области?
    • И если знает, то от куда:
      • Ядро сообщает?
      • Он сам читает таблицу разделов?
surefire ★★★
()
Ответ на: комментарий от Alyssa

Это хорошо, для нового диска. Но, что если мы разметили диск на 100%, забили файлами на 100%. Снесли раздел. Создали новый на 50% диска.
В сознании диска свободного места нет, в нашем сознании оно есть. Необходим механизм синхронизации наших знаний.

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

нет не знает.

пруф в студию.

зачем ему знать о неразмеченной области?

Что бы использовать эту область для равномерного износа ячеек. Что бы внутри себя переставить неиспользуемые блоки с теми на которые уже произошло несколько сотен операций записи.

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

пруф в студию.

возьмите hdparm и смотрите очищает он или нет.
пруфа у меня нет.

Что бы использовать эту область для равномерного износа ячеек. Что бы внутри себя переставить неиспользуемые блоки с теми на которые уже произошло несколько сотен операций записи.

это не проблемы контролера. Контролеру должны были сообщить что сектора которые занимал удаляемый раздел не используются. То что fdisk ему не сообщил это уже проблемы пользователя который получить больший износ и падение скорости.
Можно перед удалением сделать trim разделу с помощью hdparm
или искать программу которая пометит не размеченное пространство как неиспользуемое. Или писать скрипт при помощи баша и hdparm. Или в ручную все помечать hdparm

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

Что бы использовать эту область для равномерного износа ячеек. Что бы внутри себя переставить неиспользуемые блоки с теми на которые уже произошло несколько сотен операций записи.

это не проблемы контролера.

лол

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

контроллер кроме основной работы нагружается trim-ом

Это потому что говноконтроллер сразу перетряхивает блоки, даже в говноштеудах такая лажа.

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

Это потому что говноконтроллер сразу перетряхивает блоки, даже в говноштеудах такая лажа.

Даже если сразу и не перетрахивает, всё равно блоки надо помечать. А пометка блоков это та же запись битов и байтов только в служебную область.

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

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

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

Для пометки нужно писать сильно меньше. Попробуй удалить 30ГБ файл, система повиснет на несколько секунд.

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

Попробуй удалить 30ГБ файл, система повиснет на несколько секунд.

Ничего не повиснет, мой fstrim сработает только через 2 дня.

Пн 2015-05-04 00:00:00 MSK  2 days left Пн 2015-04-27 00:00:20 MSK  4 days ago  fstrim.timer                 fstrim.service

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

Объясните мне пожалуйста, что происходит например, после удаления раздела и создания нового раздела, который будет отформатирован, разве контроллер не очищает блоки во время создания FS (форматирования)?

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

Я думаю, ни одна программа разметки диска не посылает trim.

Как минимум на форуме gparted, на вопрос о trim разработчики ответили отрицательно.

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

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

При удалении и создании раздела ничего не происходит кроме изменения таблицы разделов. В результате форматирования создания фс на разделе, происходит внимание! создание фс на разделе, т.е. запись идентификаторов, таблицы файлов и еще чего-то в зависимости от фс. Дискеты которые надо было форматировать уже 20 лет назад вышли из обращения.

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

Так то оно так, но в данном случае чем тогда занимается контроллер, кроме очищения и переноса байтов информации из блока в блок. Тем более, что «поддержка» так уверена в том, что «современный контроллер сам знает как лучше» Жесть однако... помоему они сами нихрена не знают.

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

Вот! Это оно!

BLKDISCARD - требует от блочного устройства удалить все блоки, попадающие в указанный диапазон. Есть ограничение - блочное устройство может игнорировать этот ioctl. Что будет прочитано после выполнения этой функции никак не стандартизируется, и может заполнить указанный диапазон нулями, случайными числами, или просто проигнорировать запрос целиком, оставив все, как есть.

Т.е. это нифига не выход.

CoolAller
() автор топика
Ответ на: Вот! Это оно! от CoolAller

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

Остался правильный вопрос из шапки. Что происходит в блоками которые записаны 1 раз в начале жизни диска и хранят данные до сих пор.

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

При mkfs TRIM обычно тоже происходит (зависит от конкретного mkfs.<fs-type> и его версии).

А где об этом можно прочитать?

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