問題タブ [vfs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sqlite - FOpen*を使用したSQLiteVFS実装ガイドライン
FOpen、FRead、FWrite、FSeek、およびFCloseを使用して、Netburner組み込みデバイス(Windows以外)用のカスタムVFS(仮想ファイルシステム)を実装しようとしています。利用可能なVFSのFOpen*バージョンが見つからなかったことに驚きました。これにより、組み込みデバイスへの移植性が大幅に向上します。
SQLite用のVFSの作成に関する情報はhttp://sqlite.org/c3ref/vfs.htmlで見つかりまし たが、情報は非常に詳細であり、実装について他にも多くの質問があります。
Win、OS2、LinuxのSQLiteソースコードにVFSの例がいくつかありますが、コメントは多くなく、ソースコードのみが含まれています。
上記のリンクと例で提供されている情報を使用してカスタムVFSを作成することはできますが、そのようにすると何かを見逃してしまうと確信しています。
私の質問は次のとおりです。
- 私が見逃しているSQLiteVFSに関するドキュメントは他にありますか?多分実装ガイド?
- 利用可能なSQLiteVFSのFopenバージョンはありますか?
- カスタムSQLiteVFSを作成した後、それをテストするために使用できる単体テストコードはありますか?
- 共有したい提案、コメント、SQLiteVFSの実装に関する経験。
python - 特定のファイルを含むファイルシステムのサイズと空き容量を見つける
LinuxでPython 2.6を使用しています。最速の方法は何ですか:
特定のディレクトリまたはファイルを含むパーティションを特定するには?
たとえば、
/dev/sda2
が にマウントされ/home
、 に/dev/mapper/foo
マウントされているとし/home/foo
ます。文字列から"/home/foo/bar/baz"
ペアを復元したいと思い("/dev/mapper/foo", "home/foo")
ます。次に、指定されたパーティションの使用統計を取得するには? たとえば
/dev/mapper/foo
、パーティションのサイズと使用可能な空き領域 (バイト単位またはおよそメガバイト単位) を取得したいとします。
c - FUSE ファイルシステムで Linux VFS キャッシュを使用することは可能ですか?
Linux VFS キャッシュは、デフォルトでは FUSE ファイルシステムでは機能しないようです。たとえば、「読み取り」呼び出しは、体系的に FUSE ファイルシステムに転送されるようです。
FUSE 固有のリモート ファイルシステムで作業しています。非常に積極的なキャッシュが必要です。
独自のページ キャッシュを実装する必要がありますか? または、この特定の FUSE ファイルシステムの Linux VFS キャッシュを有効にすることはできますか? または、誰かが優れたプロキシ/キャッシュ FUSE ファイルシステム (または車輪を再発明せずにそれを行うための一種の C ライブラリ) を知っていますか?
ボーナス質問:
独自のページ キャッシュを実装する必要がある場合は、REDIS デーモンを使用して LRU 処理を行うことを考えています。メタデータをキャッシュするための適切なオプションであるとほぼ確信しています。しかし、ページについては、単純なローカル ディレクトリ (VFS キャッシュを使用) や /dev/shm よりも優れているかどうかはわかりません。しかし、LRU 自動クリーニングが失われます。自動 LRU クリーニングを備えた一種の /dev/shm を知っている人はいますか?
追加情報: ファイルシステムは読み取り専用で、リモート側はほぼ不変です。リモート側には、ローカル ディレクトリにコピーできない非常に大きなファイルが含まれています。
osx-snow-leopard - Mac VFS / HFS +でアトミックな名前変更は可能ですか?
Mac OS XでACLがサポートされているため、ファイルを書き込み可能であるが削除不可として宣言する方法があります。
VFSの現在の実装は既存のターゲットであるため、これはアトミック書き込みで問題を引き起こします。書き込み権限を持つ既存のファイルがある場合、アトミックに書き込むことができない可能性があります。
状態を示すACLをアタッチするだけで、アトミック書き込み(さまざまなCocoa APIによって実装されるような-NSArrayなど)は失敗しますが、非アトミック書き込みは問題なく成功します。rename
delete
deny delete
writeToFile:atomically:
低レベルのCコードについての私の理解はかなり限られているので
、代替の実装は、マイナーな(「マイナー」のお気に入りの定義を挿入する)頭痛だけで実行可能ですか?
ありがとう
ダニエル
java - 以前はディレクトリだったファイルをLinuxのディレクトリに戻すにはどうすればよいですか?
Apache VFS APIをいじって、ローカルマシンとリモートのLinuxホスト間でsftpを介してファイルを移動しました。これにより、一部のディレクトリがLinuxホスト上のファイルに変換されdrw-r-----
ました。-rw-r-----
誰かがそれをディレクトリに戻す方法を知っていますか?
java - JBoss vfs:/ URLを開けないのはなぜですか?
アプリケーションをJBoss4からJBoss6にアップグレードしています。
アプリケーションのいくつかの部分が通常とは異なる方法でクライアントに配信されます。jarはアプリケーション内で検索され、サーブレットからクライアントに送信されます。ここで、クライアントは特定のサポート機能を実行するためにそれらを抽出します。
JBoss 4では、これらのjarをクラスローダーで検索し、jarを読み取ってその内容をクライアントに送信するために使用されるjar://URLを見つけます。
JBoss 6では、ルックアップを実行すると、vfs:/URLを取得します。これはorg.jboss.vfsパッケージからのものであることを理解しています。残念ながら、このURLでopenStream()を呼び出してストリームから読み取ると、すぐにEOFが取得されます(read()は-1を返します)。
何が得られますか?このURLが参照しているリソースを読み取れないのはなぜですか?
基盤となるVFSパッケージにアクセスしてJBossVFSAPIを介してファイルを開こうとしましたが、ほとんどのAPIがプライベートであるように見え、vfs:/URLからVFSに変換するルーチンが見つかりませんでした。 VirtualFileオブジェクトなので、どこにもアクセスできませんでした。
JBoss内のディスクでファイルを見つけようと試みることはできますが、そのアプローチはアップグレード時に非常に失敗しやすいように聞こえます。
以前のアプローチでは、Java Web Startを使用してjarをクライアントに配布し、JavaWebStartのキャッシュ内でそれらを検索して抽出していました。しかし、キャッシュのレイアウトが変更されたため、Javaのマイナーアップグレードごとに問題が発生しました。
linux - ディスク上の i ノードをメモリ内に読み込む
ディスク上の i ノードとコア内の i ノード (fs.h の「struct i ノード」) の 2 種類の i ノードがあると思います。ディスク上の i ノードは、ファイルシステムの実装に基づいています。根本的な概念を理解しようとしていますが、いくつか質問があります -
- 誰かが、ディスク上の i ノードがコア内の i ノードに読み取られたりコピーされたりするコード (または手順を順を追って説明する) を教えてもらえますか? つまり、インコア i ノードを作成するときは、ディスク上の i ノードから作成する必要があります。それで、これはどのように起こりますか?
- インコア i ノードがディスク上の i ノードへのポインタを格納しないのはなぜですか?
- コア内 i ノードに変更があった場合、それはどのようにディスク上の i ノードに伝播されますか? コードまたはコードフローへのポインターは役に立ちます。
ありがとう!
linux - VFS: ファイルの最大制限 1231582 に達しました
Linux 2.6.36 カーネルを実行していますが、ランダムなエラーがいくつか見られます。のようなもの
はい、私のシステムは一貫して「ls」コマンドを実行できません。:(
dmesg の出力にいくつかのエラーがあります。
明らかに、file-max エラーは疑わしいように見え、一緒にクラスター化されており、最近のものです。
これも少し奇妙に思えますが、このシステムで 120 万個のファイルを開いているわけにはいきません。これを使用しているのは私だけで、ローカル ネットワーク外のユーザーには表示されません。
私はいくつかの文書を見ました:
ファイルの最大値とファイル番号:
カーネルはファイル ハンドルを動的に割り当てますが、まだ解放しません。
file-max の値は、Linux カーネルが割り当てるファイル ハンドルの最大数を示します。ファイル ハンドルが不足しているというエラー メッセージが多数表示される場合は、この制限を増やすことをお勧めします。
従来、file-nr の 3 つの値は、割り当てられたファイル ハンドルの数、割り当てられているが未使用のファイル ハンドルの数、およびファイル ハンドルの最大数を示していました。Linux 2.6 は、空きファイル ハンドルの数として常に 0 を報告します。これはエラーではなく、割り当てられたファイル ハンドルの数が、使用されているファイル ハンドルの数と正確に一致することを意味します。
file-max よりも多くのファイル記述子を割り当てようとすると、printk で報告されます。「VFS: file-max limit reached」を探します。
これを最初に読んだのは、カーネルには基本的に組み込みのファイル記述子リークがあるということですが、それは非常に信じがたいことです。ファイル記述子を解放するために、アクティブに使用されているシステムを頻繁に再起動する必要があることを意味します。私が言ったように、これが真実であるとは信じられません。なぜなら、Linux システムが何ヶ月も (場合によっては何年も) 稼働し続けるのは私にとって普通のことだからです。一方で、ほぼアイドル状態のシステムが 100 万を超えるファイルを開いたままにしていることが信じられません。
修正またはさらなる診断のためのアイデアはありますか? もちろん、システムを再起動することもできますが、これが数週間ごとに繰り返される問題にはなりたくありません。その場しのぎの措置として、ウィンドウを 1 つしか開いていなかったにもかかわらず、lsof の出力が 2000 行近くもあった Firefox を終了しました (!)。久々の問題。(編集: おっと、話が早すぎました。この質問を書き終える頃には、症状が戻っていました/戻ってきました)
助けてくれてありがとう。
c++ - POSIX / c c ++のディレクトリ内のすべてのファイルを列挙するにはどうすればよいですか?
dir内のすべてのファイルを列挙してから、subdirに移動して同じことを行う必要があります。
理想的には、アルゴリズムはlinux macos [windows(obsolete)nomore]でも同じように機能するはずです。
更新:VFSを認識しましたが、dirを列挙するためにVFSを使用することに戸惑っています。なにか提案を ?dirをファイルとして開く必要がありますか?
java - 2 つのディレクトリから同時に jetty webapp を提供する
開発では、jetty をサーブレット コンテナーとして使用します。次の開発構成があります。
- wabapp ディレクトリを持つマスター プロジェクト
- webapp ディレクトリ内の一部のファイルをオーバーライドする派生プロジェクト
WebAppContext
jettyに適切なものを提供することで、マスター プロジェクトの webapp を開発モードで開始できます。
ここで、派生プロジェクトを同様に開始したいと思います。リクエストが行われたときに次の試みがあると仮定します。
- 派生プロジェクトの webapp ディレクトリからリソースを取得する
- 存在しない場合は、マスター プロジェクトの webapp ディレクトリから取得します
メソッドをオーバーライドできることはわかっていますWebAppContext#getResource()
が、プロジェクトで使用する一部のライブラリは、wabapp ディレクトリに対して独自に IO 操作を実行しているようです。たとえば、 を呼び出しServletContext#getRealPath("/")
てから、メソッドを使用せずにファイルを読み取りますServletContext#getResource()
。この問題は、上の仮想ファイル システムによって下位レベルで解決できますがFile
、JDK 1.6 ではサポートされていないようです。何か提案はありますか?