我对嵌入式 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。
再说一遍,什么结构负责?
分区安装为脂肪组织。
答案1
分区通常从 2MB 的边界开始,以使文件系统块与物理块(可能是 16kB、64kB 甚至更大,具体取决于设备)对齐。未对齐的块意味着当更新一个文件系统块时,需要获取两个设备块,第一个块的最后部分被更新,第二个块的第一部分被更新,并且两个块都被写回。与正确对齐的文件系统相比,这多了两个块读取和一个块写入。
在设备的最开始,您可以找到分区表本身。这就是为什么第一个分区不能从块 0 开始。
至于你的第二个问题(为什么文件系统比设备小):文件系统需要其管理数据(例如空闲块列表),这些数据是保留空间,因此不可用于直接数据存储。