LINUX.ORG.RU

Raid10 на бытовых SSD

 , , , ,


1

3

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

под венду есть програмы которые поблочно читают-записывают весь диск и восстанавливают скорость чтения на изначальную, но это тупая трата ресурса TBW, хотелось бы чтобы именно медленно читающиеся области диска определялись и записывались заново, а не весь диск. Так как этерпрайзные хранилки делают

может в програмных рейдах типа unraid такой функционал есть? Наличие такой функции звучит очень логично

Ответ на: комментарий от mky

Просто у «нормальных» SSD на уровне прошивки реализована перезапись медленых блоков, проблема памяти спрятана под капот. а

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

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

я в первом же посте темы привел графики с падением читаемости в 4-10 раз на двух дисках которым меньше года. samsung 990 pro и какой-то teamgroup TLC из dns купленный для тестов. Зачем вы спорите с очевидным?

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

Так, нет с ней таких проблем, чтобы переустанавливать. Давайте пруфы, что ли, как часто юзер переустанавливает десяточку. Да никто работать не сможет, если винду раз в 2-3 года переустанавливать будет.

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

Плосю, как fstrim, скорее всего не получится. fstrim — просто вызов в ядро, а здесь нужно считать, записать, а если в этот момент система что-то будет в этот блок писать?

– ну это однозначно нужно на отмонтированном диске (даже не разделе а диске целком) делать, иначе не получится корректно замерить время чтения, другое io может помешать.

в теории задача уровня школьного программирования, открыть /dev/sdx как файл, читать кусочками равными sector size (там же смещения никакого нет при чтении с устройтсва?) , сравнить время до и после чтения, если слишком большое записать обратно то же самое. Не вижу где тут можно накосячить, если прервать програму или будут ошибки чтения записи, мы в любом случае ничего деструктивного не сделаем, ведь читаем и пишем то же самое.

единственное вопрос что будет с пространством которое ранее никогда не записывалось и контролер считает его пустым. я так пониамаю он просто нули для него отдаст. но если эти нули записать назад, поймет ли он что это простаранство осталось пустым или начнет считать что теперь диск заполнен под 100% ?

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

В среднем - у вас же деградирует только 20% диска - там размазывается

– да ниче там не размазывается. деградируют просто от времени. у тебя фильм который ты полгода назад скачал будет просто медленнее в 3-4 раза читаться по сравнению с скачанным вчера. Никакого размазывания не происходит. Через год он будет читаться настолько медленно что возможно твой плеер начнет заикаться при просмотре, если битрейт высокий.

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

бувально уже в этом треде множество ссылок где люди обнаруживают именно при копировании старых файлов что скорость упала до 5 мбайт/с , просто почитай их а не спорь с очевидным.

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

Вот когда об этом напишут на непрофильных ресурсах - что

фильм который ты полгода назад скачал будет просто медленнее в 3-4 раза читаться по сравнению с скачанным вчера. Никакого размазывания не происходит. Через год он будет читаться настолько медленно что возможно твой плеер начнет заикаться при просмотре, если битрейт высокий.

только тогда поверю

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

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

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

У меня два SSD диска. Первый - C: от самсунга, под систему. Второй - H: WD Blue на 512 ГБ (WDS500G2B0A) под текущие проекты и большие игры (стим). Впрочем, на диске C несколько игр тоже есть. Некоторое время назад стал замечать, что игры с диска H стали грузиться оооочень долго. Последней каплей стало то, что запустив HL:Alyx (в которую не играл месяцев 6), обнаружил, что игра стала неиграбельной: мало того, что грузится очень долго, так еще и текстуры не успевают прогрузиться, постоянные фризы, звуки отстают от действия и т.д. Загрузка диска H в диспетчере задач показывает 100%, скорость чтения меньше 10-ти Мбс и скорость ответа периодически зашкаливает за 1 секунду. Решил поэкспериментировать. С диска C перенес пару тяжелых игр (около 20 Гб) на диск H (через стим). Перенос прошел достаточно быстро (вполне ожидаемо от переноса с SSD на SSD). Решил перенести HL:Alyx (около 70 Гб) с диска H на диск C. Перенос занял пару часов (!!!). С диска C игра запустилась и загрузилась быстрее, чем я успел лямки контроллеров подтянуть. Проблема явно в скорости чтения диска H. Можно было бы решить, что диск накрылся, НО: Попробовал перенести с H на C игры, которые только что перенес с C на H. Они перенеслись быстро. Т.е. только-что записанные файлы на диск H прочитались с отличной скоростью. Перенес HL:Alyx обратно на диск H (перенос занял около минуты). Запустилось влет! Быстро и без проблем. Выбрал еще игру на диске H, которая там уже очень долго лежит и попробовал перенести на диск C. И снова перенос занял ооочень много времени. CrystalDisk у утилита от WD говорят, что с диском все чики-пок и даже тесты скорости показывают хорошие результаты.

В общем, вырисовывается интересная картина: Файлы, которые лежат на диске H уже давно, почему-то очень медленно читаются (скорость чтения и время доступа). Если эти файлы унести с диска, а потом вернуть обратно, то скорость становится нормальной SSD-шной.

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

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

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

Идёте, читаете отзывы на SSD, в которых есть «сдох», «заменил», «вернул». Если вы системный SSD в компе меняли, значит винду переустанавливали. Идёте смотрите видео про ремонты ноутов — в непонятной ситуации шей BIOS и переустанавливай винду. Идёте в гугл, гуглите «переустановил винду пропала сеть».

Если винду никто не переустанавливает, откуда статьи типа «Нужно ли переустанавливать Windows, если компьютер стал тормозить?», советы на форумах и т.д.

Для многих 2-3 года нормальный срок жизни винды, они не удивляются, если «система поползла», просто переустанавливают. То есть, если где-то windows живёт 5 и больше лет, это пожалуйста. Но, те, у которых начались сильные тормоза через пару лет, скорее всего, просто переустановят винду, чем будут изучать график скорости чтения SSD.

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

mky ★★★★★
()

один и тот же диск до

linear-read-job: (g=0): rw=read, bs=(R) 64.0KiB-64.0KiB, (W) 64.0KiB-64.0KiB, (T) 64.0KiB-64.0KiB, ioengine=libaio, iodepth=64
fio-3.38
Starting 1 process
Jobs: 1 (f=1): [R(1)][0.1%][r=33.5MiB/s][r=536 IOPS][eta 33m:17s]
Jobs: 1 (f=1): [R(1)][0.2%][r=35.2MiB/s][r=563 IOPS][eta 33m:15s]
Jobs: 1 (f=1): [R(1)][0.4%][r=29.4MiB/s][r=470 IOPS][eta 33m:13s]
Jobs: 1 (f=1): [R(1)][0.4%][r=35.4MiB/s][r=566 IOPS][eta 33m:11s]
Jobs: 1 (f=1): [R(1)][0.5%][r=29.1MiB/s][r=466 IOPS][eta 33m:09s]
Jobs: 1 (f=1): [R(1)][0.7%][r=33.3MiB/s][r=532 IOPS][eta 33m:07s]
Jobs: 1 (f=1): [R(1)][0.8%][r=29.7MiB/s][r=475 IOPS][eta 33m:05s]
Jobs: 1 (f=1): [R(1)][0.9%][r=36.6MiB/s][r=585 IOPS][eta 33m:03s]
Jobs: 1 (f=1): [R(1)][0.9%][r=25.8MiB/s][r=412 IOPS][eta 33m:01s]
Jobs: 1 (f=1): [R(1)][1.1%][r=48.7MiB/s][r=779 IOPS][eta 32m:59s]

после его перезаписи новыми данными

linear-read-job: (g=0): rw=read, bs=(R) 64.0KiB-64.0KiB, (W) 64.0KiB-64.0KiB, (T) 64.0KiB-64.0KiB, ioengine=libaio, iodepth=64
fio-3.38
Starting 1 process
Jobs: 1 (f=1): [R(1)][0.1%][r=474MiB/s][r=7576 IOPS][eta 33m:17s]
Jobs: 1 (f=1): [R(1)][0.2%][r=430MiB/s][r=6881 IOPS][eta 33m:15s]
Jobs: 1 (f=1): [R(1)][0.4%][r=504MiB/s][r=8066 IOPS][eta 33m:13s]
Jobs: 1 (f=1): [R(1)][0.4%][r=474MiB/s][r=7590 IOPS][eta 33m:11s]
Jobs: 1 (f=1): [R(1)][0.5%][r=445MiB/s][r=7117 IOPS][eta 33m:09s]
Jobs: 1 (f=1): [R(1)][0.7%][r=438MiB/s][r=7008 IOPS][eta 33m:07s]
Jobs: 1 (f=1): [R(1)][0.8%][r=481MiB/s][r=7692 IOPS][eta 33m:05s]

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

По поводу того, что прошивкой правят, то нужно читать про Samsung EVO 840. Я ссылку на топик выше кидал. Там заявляется, что Samsung признавал проблему и обещал исправить в обновлении прошивки. Не знаю, чем дело кончилось.

на отмонтированном диске

Ну, я про это и писал.

Не вижу где тут можно накосячить

Скорость чтения одного блока (сектора) с SSD изменить очень сложно. У SSD есть свои метаданные, где указано в каком физическом блоке лежит читаемый LBA блок, есть кеши. Если блок совсем «холодный», то будет измерено время заполнения всех кешей SSD, а не чтения самого блока. Плюс, там наверняка есть readahead (упреждающее чтение). Так что, возможно, нужно читать/перезаписывать блоками по 64 кбайт...

я так пониамаю он просто нули для него отдаст.

Это, если DRAT, ZRAT. Идите, почитайте, познайте боль TRIM. В стандартах не требуется, чтобы запись нулей воспринималась как TRIM. По стандарту нет возможности узнать, возвращаемые нули — это свободный блок или так записано. И не случайно в линуксе TRIM на RAID456 включается только вручную, на ваш страх и риск.

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

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

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

Скорость чтения одного блока (сектора) с SSD изменить очень сложно

– ну это да, но нам и не нужно очень точно измерять, вот по выводу fio глазами очевидно где появились просадки в несколько раз,и они повторяются в тех же местах между тестами, значит и программе ориентироваться на скорость чтения можно.

еще вспомнил что у ssd обычно отдается наружу размер сектора 512 а внутренний другой, так что долбить записями по 512 может привести к умножению записей внутри. как определить внутренний размер минимальной записи непонятно

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

По поводу того, что прошивкой правят, то нужно читать про Samsung EVO 840. Я ссылку на топик выше кидал. Там заявляется, что Samsung признавал проблему и обещал исправить в обновлении прошивки. Не знаю, чем дело кончилось.

ну, у меня нет sata драйвов samsung для теста, но их nvme 990 pro в моем пк очевидно игнорирует то что у него уже четверть диска читается в 4 раза медленее. Возможно какая то процедура начнет работать если скорость еще сильнее упадет, но пока что я не нашел подтверждений что она вообще в каких то десктопных драйвах существует (в серверных определенно существует, но там и на TBW пофиг, диск изначально расходник на несколько лет)

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

сильно зависит от степени дробления заряда SLC MLC TLC QLC PLC…
с каждым поколением слышал время сохранения данных падает в разы/десяток раз…

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

Вот, когда вы начнёте писать кода, там вы поймёте, что одно дело «определить глазами», а другое дело всё это формализовать :) Если у меня у сына не росли зубы и я бы спал по ночам, уже бы полгода бы как допилил свою прогу до чего-то запускаемого и посмотрел бы, что получается.

может привести к умножению записей внутри... непонятно

Вот, с SSD много что непонятно. Одно дело запилить примитивную прогу чисто для себя, а другое дело что-то запускаемое на разных компах под разные SSD. Плюс, если программа будет требовать отмонтировать накопитель, то нафиг кому она нужна, у многих один SSD в системе, делать загрузочную флешку — да ну нафиг.

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

У меня на Samsung 970 evo-plus скорость линейного чтения не упала, не знаю почему. Но у меня он воткнут в PCIe 2.0, то есть зарезан по скорости интерфейса. И, чтобы утверждать, что прошивка не перезаписывает (исправляет) «утекший» блок, надо наблюдать не просто падение скорости чтения, а падение до безобразного уровня около 5 Мбайт/с. Потому что разрабы прошивки тоже не дураки, зачем им тратить ресурс записи, если чтение 100Мбайт/с?

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

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

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

У меня на Samsung 970 evo-plus скорость линейного чтения не упала, не знаю почему. Но у меня он воткнут в PCIe 2.0, то есть зарезан по скорости интерфейса.

а какой возраст на нем самых старых файлов? если есть возможность можно вотнкуть в нормальный порт и прогнать скорость чтения

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

не думаю что код проверки чтением и восстановления производители зажали исключительно для серверных дисков.

я пока что не нашел графиков чтения старых дисков без просадок, по которым можно было бы утверждать что в каких-то дисках такая процедура есть, а в каких-то нет. Из минусов для десктопа это очевидно тратит TBW. Да, в той истории с samsung EVO они что то шаманили в прошивке что восстановило скорость чтения медленных файлов, но вовсе не факт что это относится к самостоятельной перезаписи драйвом, может просто поправили процедуры восстановления данных по четности

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

Я не по файлам читаю, линейное чтение всего SSD. Самое старое — таблицы разделов, загрузчик, efi-раздел и старые ядра в boot-разделе. Осень 2024, как поставил, так ни в efi ничего не писал, ни grub в MBR не обновлял. То есть первые три гигабайта практически не изменялись с момента установки. Устанавливал в конце 2022 года, ноябрь или декабрь.

Возможность протестировать есть, но времени нет, да и не хочется. Я его исходно в PCIe 3.0 не измерял, нет данных, какую он скорость покажет там в моих попугаях. Чтобы корректно измерить скорость чтения в PCIe 3.0, мне его нужно будет перезаписать весь, много возни. Да существующего охлада может не хватить. Здесь он мне даёт при чтение 64 кбайт блоками около 1100 млн. байт/с и хорошо. Да, есть просадки до 850, но они не воспроизводятся. То есть при одном запуске одни блоки покажут скорость пониже, при повторном — другие.

Так, у меня лежит ещё три SSD про запас, причём они все при покупке протестированы, заполнены, SMART и дата этого действия сохраннены. Но нет времени сейчас, через 1-1,5 года с покупки посмотреть что со скоростью чтения.

P.S. Прога самописаная, можно считать, что измеряют в попугаях, а не байтах в секунду.

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

И по алгориту в прошивке могут быть два варианта, что SSD сам всё время, пока есть питание вычитывает память и перезаписывает, а может перезапись только при медленном чтении по запросу пользователя.

Но, одиночный график ничего не скажет, нужно несколько проходов, и чтобы именно на одних и тех же участках была сильная просадка. И не обязательно гонять весь объём, достаточно нескольких гигабайт, чтобы гарантировано привысить все кеши в SSD.

А так, ещё существуют алгоритмы выравнивая износа и они тоже перезаписывают ячейки, то есть запись от пользователя в одни LBA блоки может привести к перезаписи других LBA блоков. Может, действительно алгоритмов перезаписи «утекших» блоков нет, а только выравнивание износа. Так как сейчас перестали заморачиваться с ограничением записи на SSD, пишут всё подряд, у многих SSD может за счёт этого всё не так плохо.

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

Я не по файлам читаю, линейное чтение всего SSD. Самое старое — таблицы разделов, загрузчик, efi-раздел и старые ядра в boot-разделе. Осень 2024, как поставил, так ни в efi ничего не писал, ни grub в MBR не обновлял. То есть первые три гигабайта практически не изменялись с момента установки.

если у вас там первые 3 гб загрузчик и ядра то это 90% пустое место, конечно оно будет быстро читаться. Я выше проверял на 1/3 заполненый bdrip фильмами, плюс сейчас добил еще 0,5тб из urandom, чтобы точно в кэш не влезло

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

а может перезапись только при медленном чтении по запросу пользователя.

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

И не обязательно гонять весь объём, достаточно нескольких гигабайт, чтобы гарантировано привысить все кеши в SSD.

у современных ssd очень большой кэш, например у ваших 970 evo 42 GB, вполне можно все систему установить в кэш и работать с ней думая что работаешь с реальной скоростью диска. А бывает и сотнями гб кэш , благо этот кэш бесплатный – диск просто часть памяти размечает под slc

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

и у него часть будет копироваться в 10 раз медленее

А он и в первый раз не засекал время. Ему сравнивать не с чем будет.

он это просто будет ощущать как «что то пк тормозит»

А вот это может быть.

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

У меня измеряется скорость чтения 64кбайт блоков. С чего они будут быстро читаться, если часть места не заполнено? ФС не размазывает файлы по разным блокам, не будет так, что в 64 к блоке только 10% занято данными файла, а остальное пустое место.

И даже если 100 Мбайт будут читаться на скорости 100 Мбайт/с, а остальные 900 Мбайт со скоростью 1100Мбайт/с, то средняя будет 550 Мбайт/с, это заметно. И я именно про такие провалы скорости до 30..100Мбайт/с, снижение 1600->800 я провалом не считаю, SSD вполне может относительно долго определять откуда физически читать блок, в какой буфер его сложить и т.д.

На проблемном SSD у меня точно такая же разметка, там копия самсунга, сделаная тогда же. Дак вот, там эти первые 3 Гбайт читаются в основном со скоростью 30..450 Мбайт/с (по 64 кбайт блокам). Там есть незаполненые и свежезаписаные области, но, похоже, что если прошивка переключила флеш память в медленое чтение, она ещё некторое время так её и оставляет. А там где перезаписаный раздел, скорость чтения становится 1300..1900.

Что касается SLC-кеша, то туда попадают только записываемые данные, и SSD стремится его освободить. Старые данных не будет в SLC-кеше. Я писал про кеши в ОЗУ, что распаяном в SSD, что по технологии HMB. Я писал про то, что если при чтении получена низкая скорость какого-то блока, что автоматически означает, что он не в SLC-кеше, то нужно ещё почитать некий объём, прежде чем повторно изменять скорость чтения именно этого блока.

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

тест чтения исправлял бы скорость

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

никаких фактических примеров этого нет

А где-то есть графики еженедельного чтения какой-то области SSD, чтобы из этой области только чтение, без записи, а остальной SSD нормально работал? Чтобы было видно, как через несколько месяцев стали появляться медленые блоки и т.д.

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

перезаписывать только нужное

Храните только нужные файлы!

(Запуск defrag раз в год даст прирост по записи не более 1/365 dwpd — будто куда проще, чем байты поштучно пересчитывать)

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

Десяточка живёт у пользователей по 5-7 лет без переустановки.

5-7? Моя 11 живёт с 8.1. И то из-за бага с раскладками делал чистую установку, которая не помогла. :) Так бы с 7 жила без переустановок. Ага, апгрейднулся с Интела на АМД заодно за эти годы. У жены тоже с 7 пашет без проблем лет 13.

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

Здесь не про то, у кого сколько винда живёт, перепись ЛОРовских виндузятников где-то там... :)

Я писал про то, что проблему «утекания» SSD маскирует перестановка винды. И время жизни 1-2 года — это не к тем компам, у которых хороший SSD. Это было про то, что перестановка винды воспринимается большинством как нормальное явление, и если SSD нормально читает файлы год-другой, а потом начинает тормозить, то переставят винду и будут считать, что с компом всё хорошо.

mky ★★★★★
()