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