Хранение множества маленьких файлов с 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, не теряя место на диске?

1 ответ

Решение

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

Другие вопросы по тегам