gpt4 book ai didi

linux - block 设备上的未对齐写入

转载 作者:太空狗 更新时间:2023-10-29 11:48:39 25 4
gpt4 key购买 nike

我读到过写入未对齐 大小的 block 会导致额外的读取。我的意思是在 Linux 中的 block 设备上写入。为什么?我怎样才能看到它?

最佳答案

block 设备只能以其 native block 对齐方式写入或读取,对于我遇到的所有内容,它要么是 512 字节,要么是 4096 字节。您可以在 sysfs 中查看设备的 block 大小:

# cat /sys/block/sdb/queue/logical_block_size
512

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

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

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

[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

关于linux - block 设备上的未对齐写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53355290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com