Предположим, мы говорим о заурядном USB-накопителе (который может или не может выполнять выравнивание при износе) и "тупой" файловой системе, которая не особенно оптимизирована для флэш-памяти (например, FAT32 и т.д.) Диск, скорее всего, не имеет поддержки TRIM.

Поскольку блоки флэш-накопителей имеют ограниченное количество перезаписей, имеет смысл попытаться свести к минимуму как можно больше перезаписей. Теперь, если бы я создал несколько файлов A, B и C, а затем неоднократно изменил бы файлы на месте, это изнашивало бы диск больше, чем просто добавление B ', C' и т.д. И, в конечном итоге, удаление оригиналов, когда у меня заканчивалось свободное место ?

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

(Примечание: это не о том, что диск или ОС делают внутри. Это о том, как пользователь должен использовать это)

1 ответ1

1

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

В случае USB-накопителей с флэш-памятью NAND микропрограмма / микроконтроллер на этих устройствах, вероятно (надеюсь) реализует FTL, который выполняет выравнивание при износе.

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

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

это не о том, что диск или ОС делают внутри.

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


"тупая" файловая система, которая не особенно оптимизирована для флэш-памяти

Файловым системам, «оптимизированным для флэш-памяти», требуется прямой доступ к оборудованию флэш-памяти, чтобы они могли самостоятельно выдавать команды стирания во флэш-память. Общение с устройством через USB, SATA, SCSI через команды запоминающего устройства не является прямым доступом.

Вероятно, самая простая ситуация, в которой вы можете столкнуться с этим, - это основанные на Linux маршрутизаторы потребительского уровня - базовая ОС Linux включена и имеет доступ к 4-мегабайтной, 8-мегабайтной, 16-мегабайтной или подобной флеш-микросхеме и может общаться с ней и управлять ею напрямую. Android телефоны похожи.

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

Теперь, если бы я создал несколько файлов A, B и C, а затем неоднократно изменил бы файлы на месте, это изнашивало бы диск больше, чем просто добавление B ', C' и т.д.

Флеш-чипы читаются и пишутся на страницах. Они стираются в наборы страниц, которые Linux-проекты называют "стираемыми блоками". (Это сильно отличается от механических жестких дисков).

Устройства хранения данных на основе Flash реализуют FTL - слой трансляции флэш-памяти. Что это такое: они поддерживают внутреннюю таблицу, которая отображает видимые ОС "блоки" на видимые микропрограммой флэш-страницы (от PBA до LBA), и они также будут отслеживать, какие "стираемые блоки" готовы для новых данных. Входящие записи не будут переходить на флэш-страницу только на основе номера входящего блока, но там, где микропрограмма сочтет это хорошим местом, - и микропрограмма обновит свою внутреннюю таблицу PBA до таблицы LBA, чтобы найти ее, когда она потребуется в следующий раз.

Хорошие прошивки попытаются перенаправить записи в стертые блоки со стертыми страницами по соображениям производительности, и они будут менять местами блоки в фоновом режиме, пытаясь сделать так, чтобы удаление не требовалось перед записью. Когда накопители переполняются, это менее вероятно, и это может сказаться на производительности.

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


Мораль этой истории: не беспокойся об этом. Относитесь к нему как к обычному жесткому диску и сохраняйте резервные копии. Дрянные флешки умрут раньше хороших.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .