我正在运行 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
那么,如果块大小为 4096 字节,小于 4096 的文件在硬盘上占用 4096 字节的存储空间,那么大于 4096 字节的文件又占用多少空间呢?有没有命令可以找到相同的内容?
答案1
顶帖编辑:
预先查找尺寸:
温度 = int(大小/块) 如果 mod(大小/块) != 0: 温度 += 1 温度 = 温度 * 块 打印温度
要知道文件在磁盘上有多少个块:
ls -s
其中 block-size 是分区块大小
,磁盘上的大小是 block-size * 块数
关于块大小术语差异的解释
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 检查。请记住,这些通常也称为“块”,只是我在这里将它们称为簇。
为了让程序能够计算文件的实际磁盘使用情况,簇大小就是统计缓冲区中的 st_blksize 返回的内容。
块大小是内核在缓存从存储设备读取的扇区时内部使用的缓冲区的大小(因此称为“块设备”)。由于这是内核中最原始的存储形式,因此所有文件系统簇大小都必须是块大小的倍数。用户空间程序也几乎总是引用这个块大小。例如,当您运行不带 -h 或 -H 选项的“du”时,它将返回文件占用了多少个这样的块。df 还将报告这些块的大小,fdisk -l 输出中的“Blocks”列属于此类型,依此类推。这就是最常被称为“块”的东西。每个块可容纳两个磁盘扇区。
磁柱大小只在分区表和 BIOS 中使用(Linux 不使用 BIOS)。
“df” 仅对文件系统进行操作,因此,没有文件系统它就无法使用 - 没有文件系统,它返回的数据就不存在。“du” 对单个文件进行操作。
从这里。
答案2
stat
以挂载点作为参数执行的命令,在IO Block
属性下显示文件系统的簇大小
stat /dev/shm/minifs-mounted
将会呈现
File: /dev/shm/minifs-mounted
Size: 1024 Blocks: 2 IO Block: 1024 directory
Device: 709h/1801d Inode: 2 Links: 3
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-12-27 14:03:15.000000000 -0300
Modify: 2022-12-27 14:01:50.000000000 -0300
Change: 2022-12-27 14:01:50.000000000 -0300
Birth: -
以上信息属于使用以下创建的文件系统
cd /dev/shm
dd if=/dev/zero bs=1M count=100 of=minifs.img
mkfs.ext4 -b 1024 ./minifs.img
mount -o loop minifs.img minifs-mounted
强制 1024 字节长的集群