我刚刚发现了打印出与给定文件关联的元数据的mdls命令OS X。此命令告诉我“物理大小”(“kMDItemPhysicalSize”)和“逻辑大小”(“kMDItemLogicalSize”)。例如,我正在查看的当前文本文件有:
如果我执行 a ls -l,则其大小为 1152。如果我打开“获取信息”面板,它会显示“1,152 字节(磁盘上为 4 KB)”。因此,无论“逻辑大小”是什么,它显然都等于“磁盘上”的大小。
磁盘分为扇区,在典型的硬盘驱动器或 SSD 上为 512 字节*。
文件系统负责根据名称(您理解的内容)获取文件请求并将其转换为块读/写请求(磁盘理解的内容)。为此,需要哪些扇区属于哪个文件的映射。有很多方法可以做到这一点,因此,存在许多文件系统。例如,Windows 使用 NTFS 和 FAT32,Linux 有很多,包括 ext2、ext3 等。不确定 Mac 文件系统,但原理相同。
有些文件系统将上述领域这称为水平集群系统会将这些部门的-因为对大容量磁盘地图上的每一个部门可能会占用太多的空间。例如,在 NTFS 上,您可以指定簇大小(“分配单元”是它的另一个名称),4096 字节(8 个扇区)是您可以选择的其中之一。
因此,考虑到所有这些,您真正可以读取或写入磁盘的“最小值”将是扇区大小或簇大小。因此,虽然您可以将 4097 字节写入磁盘,但文件系统必须为该文件提供两个簇,因此它会占用 8192 字节的可用空间。因此,您有逻辑大小(它在磁盘上消耗的大小)和物理大小(文件的实际大小)。
*在一些较新的“高级格式”磁盘上,它的内部大小为 4Kbytes,但为了兼容,操作系统看起来仍然像 512 字节扇区。SSD 内部有很大的不同,但对于操作系统来说,仍然看起来像 512 字节的扇区。