Что именно делает опция монтирования ikeep в XFS?

1167
ithisa

У меня есть ноутбук с 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?

3

1 ответ на вопрос

3
Old Pro

ikeep does exactly what the documents say it does. I believe your confusion comes from not understanding what an inode is. An inode stores meta-data about the file. It is part of the filesystem structure and contains none of the data in the file. As the description of the patch which introduced the need for ikeep explains:

XFS dynamically allocates space for inodes as they are created, this is different from many other filesystems where inode space is statically allocated at mkfs time. While inode space is dynamically allocated, it is never freed - up until now that is.

This non-freeing of space tends to lead to fragmentation on filesystems where lots of files come and go. It can also lead to inodes and their parent directories being scattered around the disk more.

Most filesystems allocate all the inodes they will ever need when you "make the filesystem" a.k.a. "format the drive") and never delete them. XFS is different in that it makes them on demand.

Fragmentation and things being "scattered around the disk more" cause significant performance problems for traditional spinning-platter disks. However, on an SSD, those things are no problem at all. Conversely, deleting disk blocks is a significant performance problem on SSDs while being no problem for spinning-disks. So while the patch making it the default to delete empty inodes was a performance improvement for spinning-disks, it actually made performance worse on SSDs. Hence the recommendation to use ikeep on SSDs.

Как именно это освобождение inode вызывает фрагментацию? ithisa 10 лет назад 0
На самом деле не фрагментация inode освобождает от фрагментации, а динамическое распределение inode параллельно с распределением блоков для данных файла вызывает фрагментацию. Скорее, несвобождение inode блокирует любую фрагментацию, вызванную в первую очередь. Old Pro 10 лет назад 1
Хм. Таким образом, единственная причина, по которой XFS решила сделать это, - сжать немного больше места и немного меньше времени MKFS? Оо ithisa 10 лет назад 0
XFS предназначена для поддержки высокопараллельной работы и огромных динамически расширяющихся размеров файловой системы. Оба поддерживаются динамическим распределением inode. Old Pro 10 лет назад 0

Похожие вопросы