Что делает функция «экстенты» в файловой системе ext4 в Linux?

Для vim вы можете переместить местоположение файла восстановления с помощью параметра каталога .

set directory=/tmp/XXXXXXXX

Это можно добавить в командную строку для одного экземпляра, например этого

mkdir -m700 /tmp/xyz
vim --cmd "set directory=/tmp/xyz" /path/to/secure.file

8
15.08.2015, 02:22
1 ответ

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

Адреса первых нескольких блоков данных файла хранятся в индексном узле, но, поскольку индексный дескриптор имеет фиксированный размер, это работает только для небольших файлов. В ext2 или ext3 большие файлы требуют использования косвенных блоков для хранения остальной части списка адресов блоков, которые не помещаются в сам индексный дескриптор. То есть индекс содержит адрес блока, который сам содержит список блоков. Они называются косвенными блоками. Эти дополнительные блоки обычно не нужны при использовании экстентов, потому что для хранения экстента требуется постоянное количество места, независимо от того, насколько большой диапазон блоков он описывает.

Сильно фрагментированному файлу могут по-прежнему требоваться дополнительные блоки метаданных (которые ext4 называет узлами экстентов) для хранения длинного списка экстентов, но обычно их гораздо меньше, чем в противном случае.

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

13
27.01.2020, 20:12

Теги

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