【发布时间】:2025-06-06 21:25:02
【问题描述】:
我正在尝试了解块设备写入的工作原理。我的理解是所有写入都需要扇区对齐。因此,如果扇区大小为 512 字节,则所有写入的大小均为 512 字节。现在让我们说我创建了一个文件并开始按顺序写入其中(在应用程序端没有缓冲)。现在假设我首先在文件的偏移量为零处写入 16 个字节。这如何转化为块级别的写入?在我写入“扇区大小”的数据量然后将其推送到磁盘之前,它是否会被缓冲?如果调用 fsync,是否填充剩余字节然后写出?理解是正确的还是我离题了。
后续问题如下。如果我有一个大小为 64K 的文件。假设我在偏移量 64 处执行 16 字节的随机写入。然后读取 512 字节的适当扇区,将 16 字节写入偏移量 64 处的缓冲区,然后将 512 字节写入磁盘。理解正确吗?
【问题讨论】: