Если у меня есть текстовый файл в Unix, содержащий N-много независимых записей (например, записи о сотрудниках, где у каждого сотрудника есть отдельная запись), ожидается ли, что этот файл займет меньше места, чем если бы я разбил файл на N файлов каждый из которых содержит запись для одного сотрудника? Другими словами, можно ли сэкономить значительное место в файловых системах Unix путем объединения многих файлов вместе, или разница незначительна? Благодарю.

1 ответ1

3

Это зависит от соотношения между длиной записи и размером блока файловой системы.

Например, если длины записей (по модулю размера блока) распределяются случайным образом, объединение данных в меньшее количество файлов приведет к уменьшению потерянного пространства. Последний блок в каждом файле будет заполнен в среднем на 1/2. Это то, что называется внутренней фрагментацией. Если вы сократите количество файлов пополам путем объединения файлов, вы уменьшите количество полных блоков на 1/2 в два раза.

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

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