為什麼 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
- 磁碟陣列1
好的,看來 BTRFS 在某個閾值下將檔案四捨五入到 1MB。那 1MB 是確切地1048576(或 2²⁰)位元組。
更令人驚訝的是,cat __init__.py > __init__2.py
創建了一個正確大小的新檔案。這與我透過 samba 建立這些文件有關嗎?
新建立的文件也具有正確的大小。
答案1
結果只是就地重寫所有文件:
find . -type f -exec /usr/bin/echo {} \; -exec sed -i '' {} \;
正確縮小文件。我還沒有看到它再次發生。