私は Jenkins ビルド サーバー (Linux) とエージェント (Windows) を持っており、どちらもキャッシュのように効果的に扱うことができる大きな一時ワークスペースを作成します。
- 保管しておけばよかった
- 紛失しても復元できる
- 紛失した場合、データが破損するのではなく、失われるはずです
速度のためにデータの永続性を犠牲にし、再起動後もデータを保持しながら、不正なシャットダウンによって影響を受ける可能性のあるデータを、理想的には「トップレベル ディレクトリ」の粒度で破棄できるファイル システムはありますか?
一般的なシナリオでは、ワークスペースを含むディレクトリにマウントされるため、各ジョブは最上位ディレクトリを作成します。ジョブの実行中は、階層の深いところにあるさまざまなファイルの読み取りと書き込みが行われます。ジョブの実行中にマシンがクラッシュし、ファイルが不整合な状態になる可能性がある場合は、ファイル システム チェック中にジョブ ディレクトリ全体を削除する必要があります。これは、簡単に再作成できるためです。
答え1
ファイル システムで必要なものが見つかるとは思わないでください。
ただし、ジョブの最後のステップ (キャッシュを保存したい時点で) として、一貫した名前のファイル/storage/jobID/job_complete
などを作成させることは可能です。起動時に、そのファイルがジョブ ディレクトリに存在しない場合は、ジョブ ディレクトリに対して rm -r を実行します。これで、「ジョブが半分しか終了していない」という問題が解決されます。
次に、速度が必要です。SSD などの新しいハードウェアを検討するか、RAID 0 の実装を検討してください。0 は、1 つのドライブが故障した場合に回復できるデータの量を示しますが、書き込みと読み取りの両方で大幅な速度向上が得られます。(私が地元の大学でサポートしていたメディア センターでは、結果のファイルを SAN ストレージに移動する前に、ライブ ビデオ キャプチャに RAID-1 を使用しています)。