Как рассчитывается теоретический максимальный размер файла в файловых системах, таких как XFS?

Вам потребуется программный репозиторий rpmsphere , который содержит пакет gufw.

Следующие работы для Fedora 30 с правами root:

# install rpmsphere repository
rpm -Uvh 'https://github.com/rpmsphere/noarch/blob/master/r/rpmsphere-release-30-1.noarch.rpm?raw=true'

# install gufw
dnf install gufw

2
08.05.2021, 19:10
2 ответа

I am wondering how this calculation (8 exbibytes - 1 byte) was computed?

Размер файла хранится в виде 64-битного целого числа со знаком, которое изменяется от -2^63 до 2^63 -1. Поскольку эксбибайт равен 2^60 байт, 2^63 -1 соответствует до 8 эксбибайт -1 байт.

I am also curious if there is a way for me to verify this if I have the filesystem mounted?

Да, попробуйте:

truncate -s 9223372036854775807 test && ls -l test

... или это, если у вас нетtruncate:

dd if=/dev/null of=test bs=1 seek=9223372036854775807 && ls -l test

(как вы уже догадались, 9223372036854775807 равно 2^63 -1)

4
28.07.2021, 11:34

В общем, даже если размер не сохраняется явно, должны быть две вещи :где хранятся фрагменты данных и насколько большим может быть каждый фрагмент. Вы берете максимальное значение для каждого и умножаете, чтобы получить максимальный размер файла. Особенности зависят от каждой файловой системы. В XFS фрагменты называются «экстентами», а число экстентов(di_nextentsв соответствии с проектом документации XFS)равно 32-битному целому числу со знаком . Размер экстентов(di_extsize)представляет собой 32-битное целое число без знака . Это дает (2^32 -1 )*(2^31 -1 ), что является относительно крошечным битом (2^32 + 2^31 -1 = 3 *. ] 2 *2^30 -1 ~6 ГиБ )менее 8 ЭиБ.

В зависимости от файловой системы количество фрагментов может быть несколько сложнее определить (, например, каждый инод может иметь список из N блоков данных и список из M других инодов для этого файла, вплоть до глубина K, то вы получаете предел N *(M^ (K+1)-1 )/ (M -1 )всего блоков данных ).

2
28.07.2021, 11:34

Теги

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