Filesystems
解釋 /proc/partitions
我對嵌入式 linux 設備中快閃記憶體的分區大小感到困惑:
/ # cat /proc/partitions major minor #blocks name 240 0 93184 ndda 240 1 85168 ndda1 240 2 7000 ndda2 240 3 1000 ndda3
我知道對應於 ndda2 和 ndda3 的分區被創建為分別具有 7000 kB 和 1000 kB 的大小。
我看到 ndda 比 ndda1 + ndda2 + ndda3 的大小大 16 kB。
也就是說,93184 - (85168 + 7000 + 1000) = 16。
這些 16 kB 的原因是什麼?我在哪裡可以了解更多資訊?
現在,如果我將 ndda1 掛載到一個名為 /nand1 的目錄上,我會得到:
/ # df Filesystem 1k-blocks Used Available Use% Mounted on tmpfs 27044 0 27044 0% /dev/shm /dev/ndda1 84928 64288 20640 76% /nand1
它的大小(84928 kB?)比 /proc/partitions 報告的大小小 240 kB。
同樣,什麼結構對此負責?
分區被掛載為vfat。
分區通常從 2MB 的邊界開始,以將文件系統塊與物理塊對齊(可能是 16kB、64kB 甚至更大,具體取決於設備)。未對齊的塊意味著當一個文件系統塊被更新時,需要獲取兩個設備塊,第一個塊的最後一部分被更新,第二個塊的第一部分被更新,兩個塊都被寫回。與正確對齊的文件系統相比,這是兩次塊讀取和一次塊寫入。
在設備的最開始,您可以找到分區表本身。這就是為什麼第一個分區不能從塊 0 開始。
至於你的第二個問題(為什麼文件系統比設備小):文件系統需要它的管理數據(例如空閒塊列表),這是保留空間,因此不能用於直接數據儲存。