Dockerの現在のデフォルト動作はCOW(書き込み中のコピー)、つまり割り当て中の書き込みです。これは、ディスクに書き込むことができるドライブの空き容量によって異なります。
対照的に、メモリを使用すると、参照されていないファイルは引き続き使用され、他のものが必要な場合は上書きされ、再び必要な場合は一定の時間に再リンクできます。
私たちは、ローカルディスクにリモートファイルをキャッシュする同様のメカニズムを実装しようとしています。つまり、ファイルには設定された場所があるため、スペースが必要な場合はファイルを上書きするか、ファイル自体が必要な場合はリンクできます。
理想的には、これらのソフトウェアは空き領域を書き込んだり報告したりするときにFSドライバに接続されます。私の仮説は、ソフトウェアがいつでもランダムに大容量ファイルを割り当てることができるため、ポーリング方法だけでは十分ではないということです。
オープンソースの世界に似たものがすでに存在していますか?そうでなければ可能ですか?深刻な障害物がありますか?始める良い方法は何ですか?
答え1
始める1つの方法は、ユーザースペースのファイルシステム(FUSE)を使用することです。このAPIを使用すると、リモートファイルへのアクセスをキャッシュするために選択したすべての操作を実行できる小さなプログラムでファイルシステムを実装できます。たとえば、sshfs
ヒューズファイルシステムは、sftp
リモートシステムにファイルをインポートおよび挿入し、透過的にローカルファイルとして表示するために使用されます。
FUSEを使用するC読み取り専用キャッシュファイルシステムは、すでにコードの基礎を形成できます。2004年そしてここ。初期開発では、FUSEのPythonライブラリインタフェースを使用することをお勧めします。少なくとも3つの異なる実装と各実装に構築された多くのサンプルファイルシステムがあります。 Pythonキャッシュ検索FUSEが登場しました。 キャッシュファイルシステム2011年から。