LINUX.ORG.RU

Trim / Over Provisioning: Всё, что мне известно про SSD в Linux

 ,


2

3

Все вы, наверное, слышали про то, что для долгой службы SSD на нём следует держать 10%-20% свободного места; и почти все слышали, что самый эффективный метод — держать на SSD неразмеченное пространство. — Данный метод называется «Over Provisioning» (что-то вроде «Сверх Обеспечение»). Но Овер-Провиз. одним только оставлением свободного пространства — чаще всего не заведётся, так как для этого требуется Discard ячеек. Я очень подробно распишу всё ниже.

Сейчас лишь добавлю, что и про Trim напишу.

Критическое замечание про SSD

Если у вас примонтирован виндовый SSD через NTFS-3G, то fstrim.timer будет вешать в ОС всю дисковую подсистему на 10-15 минут в состояние паузы/ожидания. Ни за что не жмите кнопку «RESET» — смотрите на индикатор работы дисков на вашем системнике, и просто подождите, пока ОС «отлипнет».

Over Provisioning

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

Линуксовые-же мануалы, предлагают зачастую использовать blkdiscard с байтовыми диапазонами (позиция начала неразмеченного пространства и длина). — НИКОГДА НЕ ДЕЛАЙТЕ НИЧЕГО ПО ЭТИМ МАНАМ, т.к. вы можете запороть последнюю запись GUID Partition Table и/или хвост Swap (или другого последнего своего раздела).

Я придумал более простой, универсальный, надёжный и безопасный метод. Всё очень просто: создаём с помощью GParted раздел БЕЗ ФС во всей неразмеченной области (Нам не нужны там иноды, экстенты, журналы, FAT или MFT). СОХРАНЯЕМ. Теперь натравливаем на этот раздел sudo blkdiscard /dev/sdXY … таким образом, ячейки находящиеся в пределах раздела обнулились и об этом был оповещён контроллер, — МЫ ПОДАРИЛИ МНОГО СВОБОДНОГО МЕСТА КОНТРОЛЛЕРУ, ДЛЯ РОТАЦИИ.

Чем хорош этот метод??? — ОН ВЕНДОРО-НЕЗАВИСИМ, идеально работает в линукс, нет шанса напортачить.

Trim

Вы всё знаете про fstrim.timer, который выполняется раз в неделю. Но не факт, что вы знаете про Swap-Trim…

Swap-Trim

Свопу в /etc/fstab нужно вписать одну из этих опций:

  1. discard=once — Срабатывает однажды при загрузке. Нет оверхэда записи свопа. Не подходит для машин с большим ап-таймом.
  2. discard=pages — Обрабатывает на лету. Подходит для машин с большим аптаймом, но вызывает оверхэд на свопе.
  3. discard — (без опции) объединяет в себе эти 2 режима. Я выбрал это, потому что я шланг.

Зачем это нужно в Свопе??!! — Всё дело в том, что если нет дискарда для свопа, то мусолятся одни и те-же ячейки без ротации, пока в них не протрётся дыра. Согласитесь, если в свопе протереть дырку — стабильность системы упадёт.

ИТОГ

Вот вы и узнали достаточно про эксплуатацию SSD в Linux. Даже при самых пессимистичных прогнозах, — диск в теории прослужит не меньше 15 лет.

Надеюсь, мои мысли вам помогли. Have Fun!!!

ЗЫ: ДОМОРОЩЕННЫЙ КОМПЬЮТЕРНЫЙ КЛУБ!

★★

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

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

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

А более правильно вообще не в процентах это считать, а «в несколько раз больше места, чем у тебя записывается данных на SSD в период от одного fstrim до другого».

Нет, не более. Проценты от диска надо. И ничего плохого в 50% запасе нет.

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

От того, что их будет больше, ничего не изменится. «Чем больше, тем лучше» здесь не работает на увеличение срока службы или ещё на что-то.

4.2

Более вменяемый я дал выше: свободного места должно быть столько, чтобы всегда были в наличии «очищенные» ячейки.

Это - чтобы диск не начал вообще жёстко тупить. Если же ты, кроме этого, ещё и хочешь чтобы он прослужил подольше - 50% свободного и правда будет лучше чем 10%, и тому даже несколько причин:

1) блоки чистятся не по одному (512/4096) а только страницами, и при большом желании можно сделать так, что у тебя будет 10% свободного и тримнутого места по мнению ОС, но ни одной целиком свободной страницы

2) больший объём диска (а как ещё сделать больше свободного места при том же количестве данных?) при прочих равных означает тупо больший ресурс во столько же

3) если у тебя 80% диска занято и не меняется, а записывается и тримаются оставшиеся 20% - ресурс этих 20% будет в 5 раз меньше ресурса диска целиком, и если ты их испортишь ничего хорошего ожидать не следует

Прошивка диска вроде умеет бороться с проблемой из пункта 1 (перемещает оставшиеся несколько блоков в другое место чтобы очистить странцу) и, может быть, умеет бороться и с пунктом 3 (начнёт перемещать неизменные данные на более изношенные ячейки чтобы тратить ресурс менее изношенных), но это всё тоже плохо влияет на ресурс и скорость работы диска, и к тому же чем меньше свободного места, тем сложнее заниматься этими пятнашками.

Правда есть и ещё один аспект: большинству юзеров достаточно и того ресурса ссд, который будет если на всё это забить.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 4)
Ответ на: комментарий от bryak

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

Но он пишет не про fstrim а про blkdiscard - она удаляет все сектора раздела целиком вне зависимости от содержимого.

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

Да, я немного не прав. ai:

fstrim оперативно работает на уровне файловой системы, но воздействует на физический уровень SSD. Файловая система (ext4, XFS, Btrfs и т.п.) определяет, какие логические блоки больше не заняты, и через системный вызов ioctl(FITRIM) посылает контроллеру SSD запрос TRIM. Контроллер уже на физическом уровне помечает соответствующие ячейки как готовые к перезаписи. Таким образом, инициатор — файловая система, а эффект — изменения в физическом массиве памяти.

Но опять же, отрезать отдельно кусок и делать на нём раздел без фс и делать на нём blkdiscard - не имеет никакого смысла. Достаточно держать Какой-то там % свободным и этого будет достаточно для trim

bryak ★★★★
()
Последнее исправление: bryak (всего исправлений: 2)
Ответ на: комментарий от firkax

А ты боишься, что алиса на выхлопе бредогенератора натренируется и будет еще бОльший бред генерировать? :)

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

Ну, фишка в том что у меня как раз занимает! Я просто надеялся что трим уже встроен по умолчанию а не требует отдельного включения.

kirill_rrr ★★★★★
()

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

Вот как-то так для простого домашнего компа.

Так что какая-то странная статья.

papin-aziat ★★★★★
()

А такой вопрос, а если у меня размечен весь диск, но я его не заполняю до 80 процентов, или нужно обязательно оставлять не размеченую область?

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

а если у меня размечен весь диск, но я его не заполняю до 80 процентов, или нужно обязательно оставлять не размеченую область?

Если накопитель уже размечен, то можно обойтись тем, что не забивать его по полной, и регулярно использовать fstrim. Только учтите, разные утилиты по-разному оценивают использованное/оставшееся место на разделах, и могут не учитывать внутренние структуры фс. Да и понятие «свободно (доступно для использования)» может не означать «ничем не занято». В общем, когда в следующий раз будете проводить разметку, лучше сначала провести blkdiscard/secure erase на всём пространстве накопителя (учтите, это уничтожит все данные), а затем оставить неразмеченное пространство.

QsUPt7S ★★★
()

Если у вас примонтирован виндовый SSD через NTFS-3G, то fstrim.timer будет вешать в ОС всю дисковую подсистему на 10-15 минут в состояние паузы/ожидания.

Как страшно жить.

Не наблюдаю такого поведения. ОС: OpenSuse Thumbleweed.

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

Мне 128 уже мало, буду переходить на 256. На цену не смотрю - окупится все равно. Но это для работы.

Для домашнего использования 16 за глаза и своп также не нужен.

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

Нет, свап нужен для организации работы страничного менеджера любой современной ОС. Заменять им оперативку в большинстве случаев неразумно.

Разве что если у тебя стабильно половина и больше памяти free (именно free, а не avail которое buffers/cache), можно подумать об отказе от свапа, но только подумать.

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

Для домашнего использования 16 за глаза

верно

и своп также не нужен.

неверно

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

Для домашнего использования 16 за глаза и своп также не нужен.

Ты не прав! Там может возникнуть какая нибудь вин11 и из 16 останется только 10 ещё до запуска хрома, а всякие электрон-телеграмы тоже никто не отменял, а потом ещё зпустится какая нибудь игрушка гигов на 12 потребления...

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

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

Ну почему? Сейчас вместо свопа используют zram полностью в оперативке а в случае чего некоторые лди считают приемлимым увидеть ООМ, главное чтобы мышка не начала дёргаться. И некоторые дистры даже патчат ядро под такой сценарий.

Не, понятно что это диверсия против пользователя и срыв рабочего процесса, но пипл хавает!

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

Ты не прав! Там может возникнуть какая нибудь вин11

Эм, ну тут ССЗБ. Я ещё понимаю 10ку в дуалбут где нет таких проблем, но 11ю…

Хотя, все люди разные.

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

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

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

Хотя, все люди разные.

Ага, см. вариант с Федорой, обмазанной флатпаком.

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

С другой стороны, хранить весь корень и хомяк в оперативке - слишком расточительно, а решение о вытеснении страниц приложений в угоду кешу даже на 4Гб оперы при 100-150 swappines принимается где то в районе 70-80% заполнения памятью приложений. А значит есл оперы х2 от требуемого потребления - своп не будет работать. Ну максимум на десяток мегабайт, что скорее недочёт алгоритма чем реальная польза.

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

Не буду спорить. Скажу лишь вот что: гуглёжка дала гайды с диапазонами, и других я почему-то не нашёл. Я просто элементарно додумался натравить утилиту на целый раздел. И решил посоветовать это всем, мне показалось, совет будет полезен, и всем понравится.

Я как-бы придумал это сам по себе, в информационной изоляции.

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

Тут много очень разных мнений появилось, просто потому, что никто не знает в точности алгоритмы работы ССД.

Плюс, существует инфа, что оверпровиз не всем вендорам/накопителям нужен, так-как многие вендоры — уже нагружают диск оверпровизом в скрытой области памяти. Если ссд не днищенский — эта статья всего-лишь добавит «диску» пару-тройку лет службы (или может даже +8…10)

Много кто сказал, что своп на ссд держать вредно, либо даже «своп не нужен». Я это вижу так: если у меня 32ГБ RAM, то своп будет использоваться по-немножку и редко, — запись в него будет небольшой. Зато, он может спасти от небольшого OOM.

В этой статье ничего вредного нет. Она направлена на то, чтобы на всякий случай «дуть на холодное, пока не обжёгся». Никакой статистики от пользы/вреда этих методов нет. Верить или нет — решай сам. «Думайте сами, решайте сами…»

Set440 ★★
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.