Интересная идея.
Я не очень хорошо знаком с ext3, но могу дать вам несколько общих указателей.
В настоящее время ext3 хранит inode в предопределенных местах.Каждая группа блоков имеет свою собственную таблицу inode, массив inode.Поэтому, когда у вас есть номер инода (т. Е. В результате поиска имени файла в каталоге), вы можете найти соответствующий инод на диске, сначала используя номер инода, чтобы выбрать правильную группу блоков, а затем проиндексировать этот блок.таблица индексов группы.
Если вы хотите поместить иноды рядом с соответствующими данными файла, вам понадобится новая схема поиска инода на диске.Если вы готовы выделить блок для каждого inode, то одной из возможных схем будет выделение нового блока каждый раз, когда вам нужен inode, и затем использование номера блока в качестве номера inode.Это может иметь то преимущество, что для небольших файлов вы можете хранить данные в том же блоке.
Чтобы что-то подобное произошло, создание нового файла (т. Е. Выделение индекса) должно работать совсем иначе, чем в текущей файловой системе ext3.Вместо использования растрового изображения для поиска неиспользуемого, предварительно выделенного и предварительно инициализированного inode, вам придется выделить пустой блок и инициализировать его самостоятельно.Итак, вы, вероятно, захотите взглянуть на то, как файловая система распределяет блоки при записи в файл, а затем имитировать это для выделения инода.
Альтернативная схема состояла бы в том, чтобы хранить индекс внутри каталог.Таким образом, вы сохраняете ввод / вывод не потому, что индекс находится рядом с его данными, а потому, что при поиске имени файла вы также читаете индекс.Это было сделано еще в 90-х годах в качестве эксперимента в файловой системе FFS BSD и было написано в превосходной USENIX Paper .Эти идеи никогда не превращались в FFS или в любую другую файловую систему основного потока, о которой я знаю, поэтому может быть интересно посмотреть, как они работают в ext3.
Независимо от того, занимаетесь ли вы одним из этихсхемы или придумать что-то свое, вам также придется изменить mke2fs , чтобы инициализировать файловую систему на диске так, чтобы ваш новый вариант файловой системы мог это понять.
Удачи!Звучит как забавный проект.