SSD и HDD

  • Автор теми Гость344998
  • Дата створення
Ввиду этого

Ввиду особенностей методов удаления, обычно применяемых в файловых системах, накопители «не знают», какие секторы/страницы действительно используются, а какие могут считаться незанятыми. Операции удаления обычно ограничиваются пометкой блоков данных как «неиспользуемых» в файловой системе.В отличие от, например, операции перезаписи, удаление не приведёт к физической записи в затрагиваемые секторы, содержащие данные. Поскольку накопитель не имеет доступа к структурам файловой системы — таким как список неиспользуемых кластеров — накопитель остаётся в неведении об освобождении блоков. Хотя это часто позволяло восстановить удалённые данные на традиционных HDD, несмотря на то, что они были отмечены как «удалённые» операционной системой, так же это означало, что когда позже операционная система произведёт операцию записи в один из секторов, считающихся свободным местом, эта операция будет считаться операцией перезаписи с точки зрения накопителя. Для традиционных жёстких дисков эта операция никак не отличается от записи в незанятый сектор, для SSD из-за выравнивания износа перезапись данных существенно отличается от записи в незанятый сектор (каждая запись в тот же логический сектор будет произведена в разные физические секторы), потенциально ухудшая производительность дальнейших операций записи

SSD хранят данные в ячейках флеш-памяти, сгруппированных (в MLC SSD) в «страницы» (обычно по 4 Кбайт каждая), которые, в свою очередь, сгруппированы в блоки (обычно 128 страниц или 512 Кбайт суммарно) Ячейки NAND-флеш-памяти могут быть непосредственно записаны лишь в том случае, когда они чисты. В случае, когда они хранят данные, содержимое ячеек должно быть очищено, прежде чем в них будут записаны новые данные. В SSD накопителях операция записи может быть проделана только для страниц, однако из-за аппаратных ограничений команда удаления всегда выполняется на весь блок. В результате, запись на SSD-носитель выполняется очень быстро до тех пор, пока существуют чистые страницы, но значительно замедляется, если необходимо очищать предварительно записанные страницы. Так как очистка ячеек в странице необходима перед тем, как в них можно будет записывать снова, но только целый блок может быть очищен, процесс перезаписи инициирует цикл чтение-очистка-модификация-запись: содержимое целого блока должно быть сохранено в кеше перед тем, как оно может быть удалено с накопителя, перезаписываемые данные модифицируются в кеше и только после этого целый блок (с обновленной страницей) записывается на накопитель.
 

Так для этого и делается большой over-provisioning (упомянутая неразмеченная область).
В общем случае, есть некая логическая область диска, видимая системе (это уровень ниже файловой системы, поэтому операционка не важна), и есть собственно реальная флеш-память.
При записи в некую логическую область - винт пишет на свободное место флеш памяти, затем(в идеале - в режиме простоя) проверяет, если какая часть логической области перезаписалась, и стирает соответствующий кусок флеш-памяти(считает его свободным). Если достаточного куска свободного места нет - винт СНАЧАЛА находит, на какое место пишутся данные, стирает их, и записывает заново. Вот именно эта ситуация - самая плохая, во-первых стирание занимает время, во-вторых - получается неравномерное использование флеш-памяти(не обязательно, но в большинстве случаев).
Как бороться с этой бедой?
Если есть TRIM - он говорит винту "этот кусок логического диска не используется" - диск по внутренней таблице соответствия очищает реальную память(опять же, в идеале - в режиме простоя), она готова для записи. Соотвественно диск заранее знает, какие области свободны, заранее их очищает, и скорость не падает.
Если TRIM нету, но есть большой over-provisioning - в большинстве случаев (если вы не пишете файл размером с треть диска) у диска есть достаточно свободного места, чтобы сначала записать файл, а потом, в режиме простоя, рассчитывать перезаписанную область и чистить страницы флеша. Поскольку это всё происходит в режиме простоя - то к моменту новой записи у нас опять есть заранее очищенные области, и скорость опять же не падает.
Собственно, поэтому и рекомендуют не забивать винт данными на сто процентов, иначе скорость упадёт. Но TRIM это менее критично, а вот без него - таки катастрофа, поскольку ни один из описанных выше механизмов не будет работать, и ссд придётся честно чистить память всякий раз перед записью.
К слову, если TRIM нет - важно чтобы область была неразмеченной, и предварительно стёртой на низком уровне, иначе винт не сможет различить реально неиспользуемую область и ваши Очень Важные Данные (TRIM-а то нет).
 
Это миф,или SSD более ненадежны? У моего знакомого был ССД на 160 гб,через некоторое время сгорел...
 
Это миф,или SSD более ненадежны? У моего знакомого был ССД на 160 гб,через некоторое время сгорел...

HDD тоже горят, и пыль в них попадает и прочее.
нельзя по одному случаю судить сразу о все линейке.
Вот я пишу с макбука в котором SSD втророй год, полет нормальный.
 
Это миф,или SSD более ненадежны? У моего знакомого был ССД на 160 гб,через некоторое время сгорел...
Ну как бы они не так давно появились, чтобы набрать статистику, но при этом уже сменилось несколько поколений контроллеров, сложно судить. Да, флеш не вечный, у него ограниченное количество перезаписей. При этом реально они все выдерживают больше заявленного ресурса, насколько - как повезёт. А сколько он прослужит - сильно зависит от того, как вы его используете, точнее - как много данных на него пишется. Если на него постоянно пишутся данные большим потоком - сдохнет довольно быстро. Вот тут интересное исследование живучести ссд (правда на инглише)
Тільки зареєстровані користувачі бачать весь контент у цьому розділі

Меня в этой статье больше всего расстроило описание того как ссд помирали. Вроде как после окончания ресурса он работает до выключения питания в режиме только чтения, а после ребута превращается в кирпич. Как-то печально это, замахаешься данные восстанавливать.
 
Назад
Зверху Знизу