我一直在试验在 Linux 上读写文件的性能,特别是 O_DIRECT,我想知道,无论是在硬盘驱动器级别还是 posix/Linux API 级别,是否可以只将几个字节写入扇区,而不破坏扇区的其余部分,并且不先读取它?
问问题
1079 次
2 回答
1
我对磁盘驱动器的经验是,他们希望将整个扇区的数据发送给他们。因此,基本上,没有办法写入少于整个扇区,如果您希望更改扇区的开头而不更改结尾,则必须读取整个扇区,修改并回写。这部分与磁盘头与盘片的交互方式有关(无论如何对于物理磁盘。在闪存驱动器的情况下,更可能与一次擦除一小块闪存的大小有关)。
于 2012-10-17T12:14:27.290 回答
0
以便携的方式?可能不是。
在 Linux 和其他一些类 Unix 系统中,您可以打开驱动器的块设备,寻找一个位置(可能与扇区大小对齐)并向其写入一些数据,但我不知道它会产生什么影响在该块的剩余部分。
最好的办法是在虚拟机上尝试一下,看看会发生什么。(显然,您必须有权写入块设备。)
于 2012-10-16T17:26:02.847 回答