3

У меня есть ноутбук с 512 ГБ SSD. Я использую XFS как мою / файловую систему, смонтированный с noatime,discard,ikeep ikeep из - за какой - то список рассылки проводки о том , как медленно discard и TRIM был на XFS и предложил использовать ikeep для повышения производительности. Однако в документации по ядру Linux написано:

Если указан параметр ikeep, XFS не удаляет пустые кластеры inode и сохраняет их на диске. ikeep - это традиционное поведение XFS. Если указано noikeep, пустые кластеры inode возвращаются в пул свободного пространства. По умолчанию noikeep для монтирования без DMAPI, в то время как ikeep используется по умолчанию, когда используется DMAPI.

Означает ли это , что нет места , когда - либо будет освобождено , если я использую IKEEP, что делает сброшенные спорный , так как независимо от того , сколько файлов я удаляю, свободное пространство не увеличится? Это кажется нелепой идеей "традиционного поведения XFS".

Что именно делает Ikeep?

1 ответ1

3

ikeep делает именно то, что говорится в документах. Я полагаю, что ваше замешательство происходит из-за непонимания, что такое inode . inode хранит метаданные о файле. Он является частью структуры файловой системы и не содержит никаких данных в файле. В описании патча, который вводит необходимость в ikeep поясняется:

XFS динамически распределяет пространство для inode по мере их создания, это отличается от многих других файловых систем, где пространство inode статически выделяется во время mkfs. В то время как пространство inode распределяется динамически, оно никогда не освобождается - до сих пор.

Такое освобождение пространства приводит к фрагментации в файловых системах, где много файлов приходит и уходит. Это также может привести к тому, что inode и их родительские каталоги будут разбросаны по всему диску.

Большинство файловых систем выделяют все inode, которые им когда-либо понадобятся, когда вы "делаете файловую систему" или "форматируете диск") и никогда не удаляете их. XFS отличается тем, что делает их по требованию.

Фрагментация и все, что "разбросано по всему диску", вызывают значительные проблемы с производительностью традиционных дисков с вращающимся диском. Тем не менее, на SSD, эти вещи не проблема вообще. И наоборот, удаление дисковых блоков является серьезной проблемой производительности на SSD, но не является проблемой для вращающихся дисков. Таким образом, хотя исправление, позволяющее по умолчанию удалять пустые inode, было улучшением производительности для вращающихся дисков, на самом деле оно ухудшало производительность SSD. Отсюда и рекомендация использовать ikeep на SSD.

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