我正在运行 Ubuntu 11.04,我想知道如何找到分配单元的大小?Ubuntu 中是否有命令可以找到它?还取决于分配单元的大小,文件使用的硬盘空间总量是否会发生变化?我已经使用ls
和检查了文件大小,du -b
并且在这两种情况下我都得到了相同的值。
包括数据:
sudo tune2fs -l <file system>
Block count: 8052736
Reserved block count: 402636
Free blocks: 2797402
First block: 0
Block size: 4096
Reserved GDT blocks: 1022
Blocks per group: 32768
Inode blocks per group: 512
Flex block group size: 16
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
Journal backup: inode blocks
Run Code Online (Sandbox Code Playgroud)
那么,如果块大小为4096字节,小于4096的文件在硬盘上占用4096字节的存储空间,那么大于4096字节的文件占用多少空间呢?有没有找到相同的命令?
顶帖编辑:
先发制人地找到尺寸:
temp = int(大小/块) 如果 mod(size/block) != 0: 温度 += 1 温度 = 温度 * 块 打印温度
要知道文件在磁盘上有多少块:
ls -s
其中块大小是分区块大小
,磁盘上的大小是块大小 * 块数
关于块大小术语差异的解释,
sudo fdisk -l /dev/sda
其中 /dev/sda 是有问题的硬盘
磁盘 /dev/sda:500.1 GB,500107862016 字节 255 个磁头,63 个扇区/磁道,60801 个柱面,总共 976773168 个扇区 单位 = 1 * 512 = 512 字节的扇区 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标识符:0x000c1f6b 设备引导开始结束块 Id 系统 /dev/sda1 * 63 498014 248976 83 Linux /dev/sda2 498015 976768064 488135025 5 扩展 /dev/sda5 498078 976768064 488134993+ 83 Linux这告诉你几件事。其他人已经说得更好了,所以引用:
问题在于您必须牢记四个不同的单位。更糟糕的是,其中两个单位具有相同的名称。这些是不同的单位:
- 硬件块大小,“扇区大小”
- 文件系统块大小,“块大小”
- 内核缓冲区缓存块大小,“块大小”
- 分区表块大小,“柱面大小”
为了区分文件系统块大小和缓冲区缓存块大小,我将遵循 FAT 术语并使用“集群大小”作为文件系统块大小。
扇区大小是硬件处理的单位。这范围在不同的硬件类型之间,但大多数 PC 风格的硬件(软盘、IDE 磁盘等)使用 512 字节扇区。
集群大小是文件系统使用的分配单元,也是导致碎片的原因——我相信你知道这一点。在中等大小的 ext3 文件系统上,这通常是 4096 字节,但您可以使用 dumpe2fs 进行检查。请记住,这些通常也称为“块”,只是我在这里将它们称为集群。
簇大小是在 stat 缓冲区中的 st_blksize 中返回的,以便程序能够计算文件的实际磁盘使用情况。
块大小是内核在缓存从存储设备读取的扇区时在内部使用的缓冲区的大小(因此得名“块设备”)。由于这是内核中最原始的存储形式,所有文件系统集群大小都必须是它的倍数。这个块大小也是用户空间程序几乎总是提到的。例如,当您在没有 -h 或 -H 选项的情况下运行“du”时,它将返回文件占用的这些块的数量。df 还将报告这些块的大小,fdisk -l 输出中的“块”列就是这种类型,等等。它是最常被称为“块”的东西。每个块中有两个磁盘扇区。
柱面大小仅用于分区表和 BIOS(Linux 不使用 BIOS)。
“df”只在文件系统上运行,所以,不,它不能在没有文件系统的情况下使用 - 如果没有文件系统,它将返回的数据不存在。“du”对单个文件进行操作。
从这里。