为什么 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 在某个阈值上将文件四舍五入到 1MB。1MB 是确切地1048576(或 2²⁰)字节。
更令人惊讶的是,cat __init__.py > __init__2.py
生成了一个正确大小的新文件。这是否与我通过 samba 创建这些文件有关?
新创建的文件也具有正确的大小。
答案1
事实证明只需就地重写所有文件即可:
find . -type f -exec /usr/bin/echo {} \; -exec sed -i '' {} \;
正确地缩小了文件。我没再看到过这种情况。