Назад | Перейти на главную страницу

Хранение множества небольших файлов с помощью xattr в XFS и ext4

У меня много небольших файлов (20 миллионов) с xattr на дисках XFS. Средний размер файлов составляет около 20 КБ, а средний размер xattr - около 512 байт.

Поскольку я хотел бы переместить их в ext4, я попытался скопировать часть этих файлов в ext4 (с размером индекса 512 и 1024) и диски XFS.

Я отформатировал 3 диска со следующими параметрами соответственно:

# mkfs.ext4 -i 8192 -I 512 /dev/sde1
# mkfs.ext4 -i 8192 -I 1024 /dev/sdf1
# mkfs.xfs -f -i size=1024 /dev/sdg1

И скопировал около 30 ГБ небольших файлов с помощью cp -r --preserve = mode, owner, timestamps, xattr

Результат такой:

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sde1            133654640  37164884  89360916  30% /srv/node/sde1 # ext4 -I 512
/dev/sdf1            124741744  36645652  80967252  32% /srv/node/sdf1 # ext4 -I 1024
/dev/sdg1            142507224  31020968 111486256  22% /srv/node/sdg1 # XFS

ext4 использует гораздо больше блоков, чем XFS в обоих случаях. В чем разница? Как я могу использовать ext4, не тратя зря дисковое пространство?

Одно дело в том, что XFS плохо работает на миллионах небольших размеров. XFS не является файловой системой на основе inode. Размеры ваших блоков будут отличаться, поскольку у вас много маленьких файлов, ext4 содержит группу блоков данных, а также косвенные карты блоков, блоки дерева экстентов и расширенные атрибуты, списки inode и т. Д. которые увеличивают общий размер блока для того же количества файлов. Также требуется немного времени для ведения дневника. Для ext4 вы можете удалить ведение журнала, если хотите, но время восстановления fs значительно увеличится, также вы можете выделить меньше% для суперпользователя, используя параметр -m (по умолчанию 5%), вы можете добавить 1%.