3

Solaris で同期ディスク フラッシュを行う最良の方法は何ですか? 単一のファイルではなく、すべてのディスクをフラッシュしたい。

Solaris (Linux とは逆) での Sync() は非同期で動作します。SYNCHRONOUS sync() を探しています (完了すると返されます)。

当然の質問: 同期が適切に行われたことを確認する方法は? 完了したことを示すテストを作成するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

3

以下を実行できます。

/usr/sbin/lockfs -af

lockfs マニュアルページの引用:

-f

     Force a synchronous flush of all data that is  dirty  at
     the  time  fsflush  is  run to its backing store for the
     named file system (or for all file systems.)

     It is a more reliable method than using sync(1M) because
     it  does  not  return  until  all possible data has been
     pushed.

純粋にCでやりたい場合は、次を使用できます

  #include <sys/filio.h>
  ...    
  ioctl(fd, _FIOFFS, NULL);

fd はファイル システムのマウント ポイントへのファイル記述子です (/etc/mtab から)。

ただし、_FIOFFS はプライベート インターフェイスであるため、予告なしにいつでも消える可能性があることに注意してください。完全にサポートされ、より堅牢な方法は、単純にsystem("/usr/sbin/lockfs -af");コードに行を追加することです。

于 2013-03-28T17:07:47.253 に答える