Почему 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 '' {} \;
Правильно сжал файлы. Больше такого не видел.