首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >块设备上的未对齐写入

问块设备上的未对齐写入
EN

Stack Overflow用户
提问于 2018-11-17 20:30:01
回答 1查看 1.1K关注 0票数 3

我曾经读过,对于不对齐的大小的块的写入可以产生额外的读取,我的意思是在Linux中的块设备上写入。为什么?我怎么看得到?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-03 16:52:35

块设备只能在其本机块对齐时被写入或读取,对于我所遇到的任何事情,都是512字节或4096字节。您可以在sysfs中看到设备的块大小:

代码语言:javascript
复制
# cat /sys/block/sdb/queue/logical_block_size
512

为什么?NVMe、SCSI和ATA命令集根本不支持访问小于该区域的区域。WRITE命令的参数是整数块。

如果应用程序需要编写一个较小的或非对齐的区域,那么内核发出一个读来填补空白,然后写出一个更大的块。例如,假设您需要在512字节块的中间写入256字节.内核将从磁盘读取整个512字节,将数据合并到正确的位置,然后编写512字节块。

监视系统上读写的一种简单方法是使用iostat实用程序,它至少在Centos/RHEL上与sysstat包一起打包。

代码语言:javascript
复制
[root@bb-cluster-4 md]# iostat -xyz 1
...

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          32.29    0.00    7.61    0.00    0.00   60.10

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdd               0.00     0.00    1.00    0.00     4.00     0.00     8.00     0.00    1.00    1.00    0.00   1.00   0.10
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53355290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档