Filesystems

解釋 /proc/partitions

  • January 30, 2019

我對嵌入式 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 開始。

至於你的第二個問題(為什麼文件系統比設備小):文件系統需要它的管理數據(例如空閒塊列表),這是保留空間,因此不能用於直接數據儲存。

引用自:https://unix.stackexchange.com/questions/497717