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)
Ответ на: комментарий от surefire

Нашел на wiki.archlinux.org: Enable TRIM With mkfs.ext4 or tune2fs

One can set the trim flag statically with tune2fs or when the filesystem is created:

# tune2fs -o discard /dev/sdXY
# mkfs.ext4 -E discard /dev/sdXY

Но в мане mkfs.ext4 написано следующее:

discard ...This is set as default. Но тем не менее эта опция присутствует среди прочих... Нафига тогда, если она дефолтная?

Короче мне не понятно, нужно дописывать -E discard при создании файловой системы или этот параметр уже идет по умолчанию и можно ограничится mkfs.ext4 /dev/sdXY.

CoolAller
() автор топика
Ответ на: комментарий от CoolAller
static int      discard = 1;
                } else if (!strcmp(token, "discard")) {
                        discard = 1;
                } else if (!strcmp(token, "nodiscard")) {
                        discard = 0;

(из mke2fs.c)

То есть по умолчанию включено.

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

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

Вроде здесь довольно внятно описано, что происходит со статичными данными. В прошивке контроллера перенос статичных данных таки должен быть предусмотрен, иначе диск быстро заюзается. Скорее всего этот процесс происходит или должен происходить) параллельно со сбром мусора. В общем все зависит от прошивки и насколько она корректно этот процесс отрабатывает или не отрабатывает.

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

Если заполнить весь диск и писать в один блок до протирания - под такое они не заточены, тут сильно поможет f2fs.

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

имеется ввиду полноценно (с регулярной записью)

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

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

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

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

Объясните мне пожалуйста, что происходит например, после удаления раздела и создания нового раздела

Ничего. Но mkfs.extX, например, сделает trim всему разделу во время *создания фс*.

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

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

То есть полную очистку блока по частям проигнорирует? Таких индусов нужно сослать обратно в Индию.

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

discard ...This is set as default. Но тем не менее эта опция присутствует среди прочих... Нафига тогда, если она дефолтная?

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

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

Вообще по-хорошему должна быть возможность переопределять дефолты для конкретной системы.

Кстати, как сделать глобальный noatime?

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

тут сильно поможет f2fs

Бегло глянул что из себя представляет f2fs, напрягает вот что:

Для ускорения выполнения операций в процессе работы индексы c информацией о распределении данных хранятся в оперативной памяти. Для выполнения операций сборки мусора реализован специальный сборщик, выполняющийся в фоне в моменты простоя системы.

Т.е. если отрубается питание, то мы получаем траблы со всеми вытекающими, вплоть до потери данных?

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

Вот тут подробный разбор f2fs и по правде говоря меня он не вдохновил на использование этой FS. Все слишком сыро и сомнительно, для мобильных устройств однозначно маст хев, особенно для Samsung, а для всего остального пока весьма туманно.

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

То есть полную очистку блока по частям проигнорирует?

Для этого кто-то запросы должен агрегировать. Возможно, это умеет делать драйвер ФС.

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

Насколько я понимаю, ОС делает запросы по 4 КБ. Естественно, диск будет игнорировать запросы на отдельные байты, но такие-то можно запомнить.

anonymous
()

Кстати, я вдруг подумал, что на hdd тоже есть польза от trim в случае ремапа дорожек: ненужные блоки можно не читать или ограничиться одной попыткой.

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