問題タブ [inode]
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.
filesystems - ファイルシステムのインデックス付き割り当て:iノード
次の質問に対する私の答えを誰かが再確認できるかどうか疑問に思いました。単一の間接ブロックと二重の間接ブロックを正しく理解しているかどうかはわかりません。
ディスクブロックは2KBで、インデックス付きの割り当てが使用されます。ファイルのiノードの長さは128バイトで、ステータス情報には32バイトが使用されます。残りの96バイトは、インデックスエントリに使用されます(エントリごとに4バイト)。
次のスキームを使用した場合、ファイルに保存できるデータの最大量はどれくらいですか?
a。各インデックスエントリは、直接ブロックへのポインタです
b。各インデックスエントリは、単一の間接ブロックへのポインタです。
c。最初の22エントリは直接ブロックへのポインタであり、23番目のエントリは単一の間接ブロックへのポインタであり、24番目のエントリは二重間接ブロックへのポインタです。
c - Minix 内部フラグメンテーション
重複の可能性:
内部フラグメンテーション
私は最近、ディレクトリ内のすべてのファイルを再帰的にリストし、ファイル名、サイズ、およびパスを出力するプロジェクトに取り組んでいます。
ここで、内部断片化の量を出力に追加し、ディレクトリ内の内部断片化の割合を計算する必要があります。
私はこれを行うために取り組んできました。iノード番号が必要です(から取得しますstat()
)。次に、その inode 番号をたどり、inode をトラバースして最後のブロックを見つける必要があります。次に、このブロックにどれだけの未使用スペースがあるかを調べる必要があり、それによって内部の断片化が発生します。
髪を引きちぎる前にどうしても助けが必要です!
linux-kernel - 特定の inode からパス名、dentry、または構造体ファイルを取得する方法は?
dentry
パス名を取得する方法、またはstruct file
特定の inode から取得する方法を知る必要があります。
file_open
パス名から取得するために使用してstruct file
いましたが、常にカーネルパニックが発生しました。i ノード リストの i ノードをパス名の i ノードと比較する方法、またはディスク内のすべての i ノードを比較して対応するパス名を見つけてから、i ノード リストと比較する方法が必要です。
unix - ファイルとiノードの削除
私はバージョン6UNIXのテキストを読んでいて、iノードについて学びました。次の質問があります。
あるディレクトリにファイルがあり、別の場所にファイルへのリンクがあるとします。ファイルを削除しても、refcountが0でないため、iノードはまだ存在していると言ってもいいですか?これは、リンクが存在する間はファイルが実際には削除されず、iノード番号を介してファイルにアクセスできることを意味しますか?
c++ - 開いたファイルが開いた後に移動されたことをどのように検出しますか
タイトルが示すように:
- 私のプログラムはファイルを開きます。
- 何かがやって来て、そのファイルを移動します。inode は同じはずですが、名前が異なります。
- ファイルを閉じてから削除しますが、もうありません
では、移動されたことを検出して正しいファイル名を削除するにはどうすればよいでしょうか?
何か案は?
xml - XSLT または XPath: 特定のタグとテキストを持つノードを見つけて、それを新しい xml ファイルに抽出する方法は?
xml ファイル内の特定のノードを見つける必要があります。<example>Some text</example>
次に、このノードとそのサブ要素をxmlファイルから抽出し、それを新しいxmlファイルに書き込みます。次に、元のxmlファイルから抽出されたノードを差し引いた残りのxmlノードを抽出した後、新しいxmlファイルに抽出する必要があります。ノード。
xslt または xpath でこれを行うにはどうすればよいですか?
linux - 2つのパスでテストする方法はハードリンク可能ですか?
片側にファイルパスがあり、それらを複製したい新しいパスがあります。
それらを単純にハードリンクできるかどうか、またはコピーする必要があるかどうかをテストするにはどうすればよいですか?
memory - CentOS でのランダムな i ノード/Ram キャッシュ ドロップ
RAID10セットアップで24GB RAMと4x SASドライブを搭載したCentOS 5.7マシン(64ビット)を実行しています。このマシンは、nginx/1.0.10、php-fpm、および xcache を実行します。約 1 か月前に、このマシンの RAM 使用量が変化しました。
約数時間ごとに「キャッシュ」が RAM からフラッシュされます。これは、まさに「I ノード テーブルの使用率」が低下したときに発生します。これらのドロップが関連していると確信しています。(添付の 2 つの画像を参照してください)。
このサーバーは、非常に多くの小さなファイル (20M ですべて数 KB) をホストしています。多くのファイルが削除されるわけではなく (おそらく 1 時間あたり 100 個 (合計サイズは最大で数 MB))、巨大な Inode テーブルの削除を考慮するには十分ではありません。
また、これらのドロップを引き起こす可能性のある実行中のcronもありません。
Sar -r
出力: http://pastebin.com/C4D0B79i
私の質問: RAM/I ノードの使用量が大幅に減少するのはなぜですか? Nginx/PHP ですべてのサーバー RAM を使用するにはどうすればよいですか?
編集: ここに設定を入れました: http://pastebin.com/iEWJchc4と LSOF の出力: http://hostlogr.com/lsof.txt。/dev/zero に移動する非常に多数の php-fpm プロセスに気付きました。私のxcache構成で指定されています。それはもしかしたら間違っているのでしょうか?
linux - 一部のデータを構造体 i ノードに格納する
こんにちは、私はカーネルプログラミングの初心者です。バックアップ メカニズムを実装するための wrapfs テンプレートに基づく小さなカーネル モジュールを作成しています。これは純粋に学習ベースです。
書き込み呼び出しが行われると、wrapfs が別のディレクトリにそのファイルのコピーを透過的に作成し、そのファイルに対して書き込みが実行されるように、wrapfs を拡張しています。しかし、書き込み呼び出しごとにコピーを作成したくありません。
素朴なアプローチは、そのディレクトリにファイルが存在するかどうかを確認することです。しかし、これをチェックするたびに、これは深刻なペナルティになる可能性があると思います。
また、最初の書き込み呼び出しを確認してから、private_data 属性を使用してその特定のファイルの値を保存することもできます。しかし、それはディスクに保存されません。そのため、もう一度確認する必要があります。
修正時間を活用することも考えていました。修正時間を節約できました。古い変更時刻がその時刻より前の場合、コピーのみが作成されます。それ以外の場合は何もしません。これに inode.i_mtime を使用しようとしましたが、書き込みが呼び出される前でも変更された時刻でした。アプリケーションもその時刻を変更できます。
そのため、バックアップが作成されたかどうかを示す値をディスク上の i ノードに保存することを考えていました。それは可能ですか?他の提案やアプローチは大歓迎です。