在 Linux 上运行blockdev --flushbufs和在实践上有区别sync(1)吗?(除了blockdev针对特定设备进行刷新和sync系统范围内的冲洗)。
sync(1)手册页说它刷新文件系统缓冲区(仅?)。如果在dd不经过文件系统层的情况下对驱动器进行 I/O(比如),sync真的无效吗?
我什么时候应该使用一个而不是另一个?
如果在不经过文件系统层的情况下对驱动器(例如 dd)进行 I/O,那么同步真的效率低下吗?
这就引出了一个问题:写入设备节点绕过“文件系统层”。我想从某种意义上说它显然是...
无论如何,都没有关系。如果您正在做的事情不涉及缓存,那么sync无论如何运行(或类似的操作)都不会“效率低下”:如果没有任何内容需要同步,那么这就是一个微不足道的调用。
什么时候应该使用其中一种而不是另一种?
我想当你想针对特定分区时,blockdev这是有意义的。我看不出它比其他方式有什么特别的优势sync(反之亦然)。