• Записи 27
  • Теги 15
  • Комментарии 93

Идеи и размышления

Размышления о накопителях данных

Не раз думал о том, что жаль, что интерфейсы накопителей данных (HDD и SSD) остаются такими же низкоуровневыми, как в старые добрые времена: работа на уровне чтения записи отдельных секторов (или их блоков) вместо того, чтобы работать сразу на уровне файлов. Т.е. OS посылала бы команды не «считай сначала вот этот сектор, потом вот эти потом вот эти» (где в первый из этих секторов — это каталог, второй — таблица inodes или их каталогов, третий — собственно сами данные из файла), а сразу «считай файл такой-то по смещению такому-то», а вся работа с метаданными шла бы на стороне контроллера жёсткого диска, что давало бы больше возможностей по оптимизации хранения данных (правда, реализовать бы их могли только производители дисков).
Но потом в голову пришла другая идея: а что если сделать умную прошивку микроконтроллера, которая будет сама определять, какие типы файловых систем используются на диске, и приметить для самых типовых (в первую очередь, NTFS и ext4) какие-то оптимизации, например, дольше хранить в кеше те сектора, куда попадает таблица inodes или каталоги, чем сектора с обычными данными. Или что-то подобное и так применяется, просто из-за закрытости прошивок это мало кто знает?

2 комментария:

Нет
Массаракша
0
4X_Pro написал(а):
считай файл такой-то по смещению такому-то


Этим занимается файловая система. Какой смысл переносить этот слой абстракции на уровень контроллера накопителя?
4X_Pro
0

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

Написать комментарий
Прикрепить файлы: (не более 4 файлов, не более 102400 Кб каждый, 102400 Кб всего)


Задать вопрос