5

2 つのスクリプトがあるとします。最初のものは (mv コマンドを使用して) いくつかのファイルをディレクトリに置き、2 番目のものは時々ディレクトリをチェックしてファイルを処理します。私が懸念している状況は、2 番目のスクリプトが、現時点で部分的にしか移動されていないファイルの処理を開始するときです。これは、XFS ファイル システムで実際に発生する可能性がありますか?

4

2 に答える 2

7

ファイルの移動元によって異なります。mv WITHIN 単一のファイルシステムはアトミックです。それ以外の場合、アトミックではないコピーを実行する必要があり(その後、元のファイルが削除されます)、言及した種類の競合状態が発生しやすくなります。

FWIW、これは通常の POSIX セマンティクスであり、XFS に固有のものではありません。

于 2012-02-27T11:17:09.977 に答える
1

XFS ファイル システムでは、競合状態は発生しません。ただし、XFS では、Unix ファイル システムのシングル スレッド i ノード ロックとは対照的に、柔軟なロック スキームを使用することで、複数のプロセスが一度にファイルを読み書きできるようになっています。XFS は、複数のプロセスによる同じ領域への書き込みのシリアル化に注意を払います。

XFS は、ファイルへのアクセスにダイレクト I/O を使用します。ダイレクト I/O を使用すると、アプリケーションは、そのデータがバッファ キャッシュにキャッシュされないように指定できます。

通常のバッファー I/O を使用する場合、複数のリーダーが同時にファイルにアクセスできますが、一度にファイルにアクセスできるのは 1 つのライターだけです。ダイレクト I/O を使用すると、複数のリーダーとライターが同時にファイルにアクセスできます。

于 2012-02-27T10:52:27.043 に答える