Unix文件系统的Blocksize究竟多大

 我来答
帐号已注销
2016-06-16 · TA获得超过3.6万个赞
知道大有可为答主
回答量:2.8万
采纳率:93%
帮助的人:6365万
展开全部
自从开始Linux 软件平台开发,经常遇到“Block Size”。但经常发现此block size非彼block
size。意义不一样,大小值也不一样。Open Source的东东有时候也挺烦的。下面是自己的总结。通常Linux的“block
size”指的是1024 bytes,Linux用1024-byte blocks 作为buffer
cache的基本单位。但linux的文件系统的block确不一样。例如ext3系统,block
size是4096。使用tune2fs可以查看带文件系统的磁盘分区的相关信息,包括block size。例如:tune2fs -l /dev/hda1 |grep "Block size"Block size: 4096另一个工具dumpe2fs也可以。
其实本来这几个概念不是很难,主要是NND他们的名字都一样,都叫“Block Size”。1. 硬件上的 block size, 应该是"sector size",linux的扇区大小是512byte2. 有文件系统的分区的block size, 是"block size",大小不一,可以用工具查看3. 没有文件系统的分区的block size,也叫“block size”,大小指的是1024 byte4. Kernel buffer cache 的block size, 就是"block size",大部分PC是10245. 磁盘分区的"cylinder size",用fdisk 可以查看。
我们来看看fdisk显示的不同的信息,理解一下这几个概念:
Disk /dev/hda: 250.0 GB, 250059350016 bytes255 heads, 63 sectors/track, 30401 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System/dev/hda1 * 1 1305 10482381 83 Linux/dev/hda2 1306 1566 2096482+ 82 Linux swap/dev/hda3 1567 30401 231617137+ 83 Linux
8225280就是cylinder size。一共有30401个cylinder。Start和End分别标记的是各个分区的起始cylinder。

第4列显示的就是以1024为单位的block(这一列最容易把人搞晕)。为什么“2096482+”有个“+”号呢?因为啊,总size除1024除不
尽,是个约数,表示2096482强!哈哈。搞笑吧,只有opensource的人想得出来这么表示。自从开始Linux 软件平台开发,经常遇到“Block Size”。但经常发现此block size非彼block size。意义不一样,大小值也不一样。Open Source的东东有时候也挺烦的。下面是自己的总结。通常Linux的“block size”指的是1024 bytes,Linux用1024-byte blocks 作为buffer
cache的基本单位。但linux的文件系统的block确不一样。例如ext3系统,block
size是4096。使用tune2fs可以查看带文件系统的磁盘分区的相关信息,包括block size。例如:tune2fs -l /dev/hda1 |grep "Block size"Block size: 4096另一个工具dumpe2fs也可以。
其实本来这几个概念不是很难,主要是NND他们的名字都一样,都叫“Block Size”。1. 硬件上的 block size, 应该是"sector size",linux的扇区大小是512byte2. 有文件系统的分区的block size, 是"block size",大小不一,可以用工具查看3. 没有文件系统的分区的block size,也叫“block size”,大小指的是1024 byte4. Kernel buffer cache 的block size, 就是"block size",大部分PC是10245. 磁盘分区的"cylinder size",用fdisk 可以查看。
我们来看看fdisk显示的不同的信息,理解一下这几个概念:
Disk /dev/hda: 250.0 GB, 250059350016 bytes255 heads, 63 sectors/track, 30401 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System/dev/hda1 * 1 1305 10482381 83 Linux/dev/hda2 1306 1566 2096482+ 82 Linux swap/dev/hda3 1567 30401 231617137+ 83 Linux
8225280就是cylinder size。一共有30401个cylinder。Start和End分别标记的是各个分区的起始cylinder。

第4列显示的就是以1024为单位的block(这一列最容易把人搞晕)。为什么“2096482+”有个“+”号呢?因为啊,总size除1024除不
尽,是个约数,表示2096482强!哈哈。搞笑吧,只有opensource的人想得出来这么表示。
Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
野人无事不言L
2018-07-31 · TA获得超过1413万个赞
知道顶级答主
回答量:2242万
采纳率:0%
帮助的人:144.8亿
展开全部
比方说你要找所有大于1M的文件,那么 find path -type f -size +1M 如果是找恰好等于1M的文件,就是 find path -type f -size 1M 同理,小于1M的文件 find path -type f -size -1M
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
没落帝国dcy
2018-01-17
知道答主
回答量:27
采纳率:0%
帮助的人:14.9万
展开全部

Ubuntu 系统下面

$ stat -f file1.txt 

File: "file1.txt"

ID: 8417eeb4f7fcd118 Namelen: 255     Type: ext2/ext3

Block size: 4096       Fundamental block size: 4096

Blocks: Total: 16222927   Free: 14925784   Available: 14095948

Inodes: Total: 4128768    Free: 3863055

在MAC 中使用 man ls 搜索  block 有下面内容

-s      Display the number of file system blocks actually used by each file, in units of 512

bytes, where partial units are rounded up to the next integer value.  If the output

is to a terminal, a total sum for all the file sizes is output on a line before the

listing.  The environment variable BLOCKSIZE overrides the unit size of 512 bytes.

默认512 bytes.  可以别环境变量BLOCKSIZE 覆盖

也可以用下面命令查看

$ diskutil info / | grep "Block Size"
Device Block Size:        512 Bytes

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式