磁碟上的 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
  • 磁碟陣列1

好的,看來 BTRFS 在某個閾值下將檔案四捨五入到 1MB。那 1MB 是確切地1048576(或 2²⁰)位元組。

更令人驚訝的是,cat __init__.py > __init__2.py創建了一個正確大小的新檔案。這與我透過 samba 建立這些文件有關嗎?

新建立的文件也具有正確的大小。

答案1

結果只是就地重寫所有文件:

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

正確縮小文件。我還沒有看到它再次發生。

相關內容