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. シェルコマンドリストの競合条件
- 2. データベースの競合条件
- 3. C#スタティックコンストラクタの競合条件
- 4. スレッドスタートアップの競合条件
- 5. SQL Serverと競合条件
- 6. PHP mysql session_set_save_handler競合条件
- 7. 条件文を使用したOpenMP競合条件
- 8. 私のPOSIXシグナルハンドラの競合条件
- 9. 共有変数の競合条件
- 10. JavaScriptイベント処理の競合条件?
- 11. JavaScript非同期競合条件
- 12. 変数セットと取得、競合条件
- 13. Cの競争条件
- 14. NSUrlConnectionを使用して競合条件でビートを取得
- 15. RequireJSはブラウザの競合条件を定義します
- 16. NServicebusサガ競争条件
- 17. jQueryのプラグインの競合:移動Y
- 18. 条件付き移動最大
- 19. C - pthread関数の再利用 - ローカル変数と競合条件
- 20. のLinux - スプリットCSV条件
- 21. オペレーティングシステムの設計競争条件
- 22. 条件が満たされている場合、別のビューに移動...
- 23. ウィンザーとasp.net MVCシングルトン競争条件
- 24. ベアボード上でLinuxを移植
- 25. 合成条件
- 26. Java AWT drawImage競合条件 - 同期を使用して回避する方法
- 27. ReportViewer条件でセルを動的に結合する
- 28. 条件付きでlinuxスクリプトでファイルを追加または追加する
- 29. アクティブレコードレール上の条件3
- 30. 動的条件
ストーリーの道徳は、最初のスクリプトが同じファイルシステムのディレクトリに項目を置くことを簡単にすることで安全だと確信できるようにすることです。これが疑わしい場合は、それらを目的地のディレクトリ* first *のサブディレクトリにmvしてから、目的地のディレクトリに移動して到着がアトミックであることを確認してください。 – zmccord