Разработка файловой системы
При проектировании файловой системы, которая использует структуру inode для указания файлов / блоков, как фактически определяется количество необходимых inode?
2 ответа
В некоторых файловых системах Unix (например, ext * fs) это фактически зависит от системного администратора, который устанавливает относительный параметр при создании файловой системы.
Если файловая система будет содержать множество небольших файлов (типичный пример - новостной и почтовый серверы), вам потребуется большое количество inode, поскольку для каждого объекта (файла или каталога) вам нужен inode.
Если, с другой стороны, файловая система будет содержать большие файлы (например, видеосервер), вам не нужно столько inode.
Поскольку иноды занимают место, важно обеспечить баланс между производительностью / эффективностью и достаточным количеством инодов для ваших целей. Простой метод состоит в том, чтобы вычислить средний размер файла в активной файловой системе с аналогичными шаблонами использования и использовать это число в качестве базового значения для отношения байтов к индексу на новой FS. Это позволило бы ФС оставаться работоспособным, пока объем заполняется, пока модели использования не меняются кардинально.
Если вы на самом деле проектируете новую файловую систему, а не просто создаете том, вам следует рассмотреть идею динамического распределения inode, как и некоторых других распространенных файловых систем Unix (например, JFS, XFS, Reiserfs). Это сделает вашу файловую систему немного более гибкой, хотя обычно считается, что динамические структуры FS значительно затрудняют восстановление после проблем с повреждением.
Некоторые современные файловые системы (XFS для одной) распределяют inode по мере необходимости. Файловые системы без этой функции выбирают основанное на опыте значение относительно размера диска (например, ext2/3/4 создает 1 инод на дисковое пространство 4 КБ IIRC), и обычно существует способ настроить это значение при создании файловой системы.