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