2つのスクリプトがあるとします。最初のものは(mvコマンドで)いくつかのファイルをディレクトリに入れ、2つ目はディレクトリをしばらくチェックしてファイルを処理します。私が心配しているのは、2番目のスクリプトが、現在のところ部分的にしか動かされていないファイルの処理を開始したときです。 XFSファイルシステムでこれが実際に起こることはありますか?Linux上でファイルを移動する際の競合条件
5
A
答えて
6
どこからファイルを移動しているかによって異なります。 mv一つのファイルシステムの中では、アトミックです。そうでなければ、アトミックではない(元のファイルの削除が続きます)コピーを行わなければなりません。
FWIW、これは通常のPOSIXセマンティクスであり、XFSには何もありません。
1
あなたの場合、XFSファイルシステムで競合状態は発生しません。しかし、XFSでは、Unixファイルシステムのシングルスレッドのiノードロックとは異なり、柔軟なロック方式を使用することにより、複数のプロセスが一度にファイルの読み書きを行うことができます。 XFSは、複数のプロセスで同じ領域の書き込みをシリアル化することを重視しています。
XFSはファイルにアクセスするためにダイレクトI/Oを使用します。ダイレクトI/Oでは、アプリケーションがデータをバッファキャッシュにキャッシュしないように指定できます。
通常のバッファされたI/Oを使用すると、複数のリーダーがファイルに同時にアクセスできますが、一度に1つのライターのみがファイルにアクセスできます。ダイレクトI/Oを使用する場合、複数のリーダーとライターがファイルに同時にアクセスできます。
関連する問題
- 1. Node/Expressでrequest.urlを取得する際の競合条件
- 2. スレッドスタートアップの競合条件
- 3. シェルコマンドリストの競合条件
- 4. データベースの競合条件
- 5. C#スタティックコンストラクタの競合条件
- 6. asyncioとの競合条件
- 7. 流星の競合条件
- 8. ConcurrentBitSetの競合条件
- 9. SQL Serverと競合条件
- 10. スプラッシュスクリーン、スレッディング、競合条件
- 11. PHP mysql session_set_save_handler競合条件
- 12. linqクエリでの競合条件
- 13. Tensorflowでtf.assignを使用する場合の競合条件
- 14. 私のPOSIXシグナルハンドラの競合条件
- 15. 条件文を使用したOpenMP競合条件
- 16. キャッシュの一貫性と競合条件
- 17. 共有変数の競合条件
- 18. Rethinkdb競合条件テーブルの作成
- 19. JavaScriptイベント処理の競合条件?
- 20. 変数セットと取得、競合条件
- 21. JavaScript非同期競合条件
- 22. 移動したファイルの競合を表示する方法
- 23. AWS CLIすべてのファイルを条件付きで移動
- 24. Linux - ファイルを上書きして移動元から移動先に移動
- 25. プロセスRedirectStandardErrorとRedirectStandardOutputを使用した場合の競合条件
- 26. エスプレッソでテスト中にViewProperyAnimatorsを使用する際の競争条件
- 27. Cの競争条件
- 28. 春の競争条件コントローラ
- 29. NSUrlConnectionを使用して競合条件でビートを取得
- 30. PHPでのハンドルキューの競合条件Symfony with MySQL Database
ストーリーの道徳は、最初のスクリプトが同じファイルシステムのディレクトリに項目を置くことを簡単にすることで安全だと確信できるようにすることです。これが疑わしい場合は、それらを目的地のディレクトリ* first *のサブディレクトリにmvしてから、目的地のディレクトリに移動して到着がアトミックであることを確認してください。 – zmccord