在Solaris上执行同步磁盘刷新的最佳方法是什么?我想刷新所有磁盘,而不是一个文件。
在Solaris (与Linux相反)上的Sync()是异步工作的,我正在寻找同步sync() (完成后它会返回)
随之而来的问题:如何正确检查同步?我如何编写测试来表明它已经完成了?
谢谢!
发布于 2013-03-29 01:07:47
您可以运行:
/usr/sbin/lockfs -af引用lockfs manual page
-f
在将fsflush运行到指定文件系统(或所有文件系统)的后备存储区时,强制同步刷新所有脏数据。它是一种比使用sync(1M)更可靠的方法,因为它在推送所有可能的数据之前不会返回。
如果你想用纯C语言来做这件事,你可以使用
#include <sys/filio.h>
...
ioctl(fd, _FIOFFS, NULL);其中fd是文件系统挂载点的文件描述符(来自/etc/mtab)。
但要注意,_FIOFFS是一个私有接口,因此可能会在没有通知的情况下随时消失。一种完全受支持且更健壮的方法是简单地将system("/usr/sbin/lockfs -af");行添加到代码中。
https://stackoverflow.com/questions/13248124
复制相似问题