Размер BTRFS на диске в 200 раз больше фактического размера

Размер BTRFS на диске в 200 раз больше фактического размера

Почему BTRFS так грубо неверно определяет размер небольших файлов в моей файловой системе?

[pi@rpi scipy]% cat __init__.py | wc -c            # literal byte count
4729
[pi@rpi scipy]% du --apparent-size -h __init__.py  # size on filesystem (same)
4.7K    __init__.py
[pi@rpi scipy]% du -h __init__.py                  # reported size to ls
1.0M    __init__.py
  • Полностью опционы на акции ( defaults, простые mkfs.btrfs)
  • Ядро Linux 3.18
  • RAID1

Хорошо, похоже, что BTRFS округляет файлы до 1 МБ при достижении какого-то порога. Этот 1 МБточно1048576 (или 2²⁰) байт.

Что еще более удивительно, cat __init__.py > __init__2.pyсоздает новый файл правильного размера. Это как-то связано с тем, что я создал эти файлы через samba?

Вновь созданные файлы также имеют правильный размер.

решение1

Оказывается, просто переписываем все файлы на месте:

find . -type f -exec /usr/bin/echo {} \; -exec sed -i '' {} \;

Правильно сжал файлы. Больше такого не видел.

Связанный контент