有没有办法将一些字节写入磁盘扇区而不先读取它?

时间:2012-10-16 16:40:14

标签: c linux posix

我一直在尝试在Linux上读取和写入文件的性能,特别是O_DIRECT,我想知道,无论是在硬盘级别还是在posix / Linux API级别,都可以只编写一些字节到扇区,而不破坏扇区的其余部分,而不先读取它?

2 个答案:

答案 0 :(得分:1)

我对磁盘驱动器的经验是,他们希望将数据发送到整个扇区。所以,基本上,没有办法编写少于整个扇区,如果你想改变扇区的开始而不改变结束,你必须读取整个扇区,修改和回写。这部分与磁头与磁盘的交互方式有关(无论如何,对于物理磁盘。在闪存驱动器的情况下,它更可能是一次擦除闪存的一小部分)。

答案 1 :(得分:0)

以便携方式?可能不是。

在Linux和其他一些类Unix系统中,您可以打开驱动器的块设备,寻找一个位置(可能与扇区大小对齐)并向其写入一些数据,但我不知道是什么它会对该区块的剩余部分产生影响。

您最好的选择是在虚拟机上试用它,看看会发生什么。 (显然,你必须有权写入块设备。)