rm filename.txtを呼び出すとどうなりますか?

rm filename.txtを呼び出すとどうなりますか?

からインスピレーションを受けるこれ郵便はがき、

呼び出すとディスク容量が増えますかrm insert_filename

リンクされたUNIX Stackexchange投稿には次のように記載されています。 「ファイルが切断されました。データはまだディスクにありますが、リンクは削除されました。以前はデータを取得できましたが、メタデータは消去され、回復できませんでした。

ディレクトリに移動し、大容量rmファイルを呼び出すと、後でシステムにビデオやより多くの容量のファイルを保存できることを意味しますか?rmアクセス可能なディスク容量をすべて埋めると、「ed」ファイルが上書きされますか? (私はコンピュータの電源を切ったり、オンにしたり、ユーザーがコンピュータを離れるときなど、時々古いファイルをクリーンアップするJavaのガベージコレクションなど、いくつかのシステムを想定しています。)

システムメッセージ:

私はリファブLenovo ThinkPad T420ラップトップでUbuntu 16.04 LTSを実行しています。

答え1

リンクされた質問はすでに問題のほとんどの側面をカバーしているので、短い答えです。

ディレクトリを見つけて大きなファイルを呼び出すと、rm後でシステムにビデオと大きなファイルを保存できることを意味しますか?

はい、以前に削除されたファイルが占有していたスペースは、後でリンク数がゼロになった場合に大容量ファイルを含むファイルシステムに他のデータを保存するために使用できるようになりましたrm(ABのコメントに従って)。

詳細に説明すると、アクセスしようとしているファイルが実行rm中のプロセスで参照される場合、/proc/$PPID/fd/$fdここで、およびはそれぞれプロセスIDとファイルハンドル番号です。ファイルedのスペースは、プロセスが終了してリンク数に達するまで使用できません。ヤング。 (ご指摘いただいたAB様に感謝します)$PPID$fdrm

別のシナリオは、ディスク上の他の場所に削除されたファイルへのハードリンクがあることです。rmリンク数は1つ減りますが、余分なスペースはありません。

つまり、rm削除されたファイルが占めるスペースは、削除後のリンク数がゼロになっている場合にのみ再利用できます。この情報はLinksコマンド出力のフィールドから取得できますstat。このフィールドが実行される1前に表示される場合にのみ、rm削除されたファイルが占有していたスペースをすぐに使用できるようになります。

rmアクセス可能なディスク容量をすべて埋めると、「ed」ファイルが上書きされますか?

上書きのタイミングは、ディスクの場所とファイルシステムの構成方法によって異なりますが、通常、「ファイル」はすべてのディスク容量を使用する前に上書きされます。

答え2

「ディスクスペースあり」が何を意味するのかわかりません。

これは主題の質問の基礎であるので洞察力のあるメタ質問です。

ファイル「リンク解除」が何を意味するのかを理解するには、ファイル「リンク」が何を意味し、「ファイル」が何であるかを理解するのが役立ちます。信じられないかもしれませんが、「文書」は3人の視覚障害者と象のようなもので、人によって異なる意味を持ちます。

答えはファイルシステムによって異なります。 WindowsではNTFSを使用でき、Linuxではext3を使用できます。私の答えはLinux側に制限し、使用されるファイルシステム(ext3など)をさらに制限します。インデックスノード説明ファイルを使用すると、ほとんどのプライマリコンピュータでこれを行います。

これらのファイルシステムは、生のディスク領域をブロックとして構成します。ブロック間にはインデックスノードを含むブロックが散在しています。各inodeには、ファイルに関する情報(所有権、権限、使用されるデータの場所とサイズ)が含まれています。

ファイルシステムは、使用を待っているinodeでいっぱいです。過去には、ファイルシステムを作成するときにアイノードの数が固定されており、アノードが不足すると新しいファイルを生成できないため、「スペース不足」が発生しました。今日、これは通常動的に処理されます。

ファイルシステムは、すべてのinodeの場所、使用中のinode、まだ割り当てられていないブロックを追跡します。 「ディスク空間所有」とは、どのノードにも割り当てられていないブロックを所有することを意味します。

新しいファイルを作成するときは、実際には2つのことを行います。

  1. 未使用のインデックスノードからインデックスノードを取得する
  2. 名前をつけてください

この最初のステップは一人ではできません。 inodeを直接操作することはできません。オペレーティングシステムには、このタスクを実行する機能はありません。名前でファイルを作成して開きます。 inode の詳細はカーネルに保存されます。

2番目の手順を繰り返すことができます。なぜなら(1):inodeに名前をいくらでも割り当てることができます。名前をファイルに関連付けるため、この手順を「接続」と呼びます。リンクを削除すると、プロセスを元に戻すことができます。RM(1)。他の名前もあります:解く(1).今、「del」の代わりに「rm」と呼ばれる理由をご存じでしょう。ファイルを削除するのではなく、リンクを削除することです。

では、いつファイルを削除しますか?ファイルの作成の反対は何ですか?

  • 索引ノードとその名前の間のリンクの削除
  • 索引ノードの削除

まず、削除リンクを実行します。ただし、インデックスノードを未使用のヒープに配置するには、次の2つの制限を満たす必要があります。

  • インデックスノードには複数の名前があるため、名前が関連付けられなくなるまで使用されます。それが私の意味です。リンクがゼロに下がると一部の文書でこの問題が発生することがあります。
  • inodeが開いている可能性があるため(プログラムが使用しているため)、オペレーティングシステムはそれを参照するファイル記述子がないまで(どのプログラムでもファイルが開いていないとき)、未使用のヒープにinodeを入れません。

インデックスノードに関連付けられた名前がない場合、破棄されるのは時間の問題です。 inodeはリンクされた名前でのみ参照できるため、名前なしで新しいリンクを作成したりファイルを開くことはできません。同じ名前のファイルを開こうとすると、新しいファイルのみが生成されます。その他inodeを作成し、名前をここにリンクします。

多くの人がこのような現象に遭遇したときに混乱し、「実行中のプロセスで使用中の大容量ファイルを削除」してディスク容量を解放できないとイライラします。プログラムが使用していたファイルが突然消えた場合は、何が起こるのかを想像してみるとさらに理解できます。または、Windows で「ファイルが既に別のプログラムで開いているため削除できません」という理解できないエラーが発生した場合。 inodeを使用すると、ファイルが他のプログラムで開かれても削除されないため、そのメッセージを受信できません。

関連情報