GNU/Linux >> Linux の 問題 >  >> Linux

高速および低速のシンボリックリンク?

http://en.wikipedia.org/wiki/Symbolic_link#Storage_of_symbolic_links

から

シンボリックリンクの初期の実装では、シンボリックリンク情報がデータとして通常のファイルに保存されていました。
このファイルには、リンクのターゲットへのテキスト参照
と、シンボリックリンクであることを示すインジケーター[説明が必要]
が含まれていました。

この方法は時間がかかり、小規模なシステムではディスクスペースを非効率的に使用していました。
高速シンボリックリンクと呼ばれる改善 、ファイル情報をディスク(iノード)に保存するために使用されるデータ構造内に
ターゲットパスを
保存できるようにしました
。このスペースには通常、ファイルに割り当てられた
ディスクブロックアドレスのリストが格納されます。したがって、ターゲットパスが短い
シンボリックリンクにすばやくアクセスできます。シンボリックリンクが高速なシステムは、
ターゲットパスが
利用可能なiノードスペースを超える場合、元の方法を使用することにフォールバックすることがよくあります。 。元のスタイルは、遡及的に
スローシンボリックリンクと呼ばれます。 。また、他のまたは
古いバージョンのオペレーティングシステムとのディスク互換性にも使用されます。

  1. 「ファイル情報をディスク(inodes)に保存するために使用されるデータ構造内のターゲットパスの許可された保存
    」は、高速シンボリックリンクがリンクされたファイルのパスを
    のiノード内に保存することを意味しますか? />高速シンボリックリンク

    高速シンボリックリンクは、ファイル自体として、実際にはiノードしかなく
    、ファイルコンテンツはありませんか?

    遅いシンボリックリンクには、ファイル自体として、iノードとターゲットパスである
    コンテンツが含まれていますか?

  2. 「ターゲットパスが利用可能なiノードスペースを超える場合」
    はどういう意味ですか?

    ファイルへのシンボリックリンクが高速シンボリックリンクである場合、
    シンボリックリンクとファイルが同じファイルシステム上にある場合にのみ、正しいですか?

  3. シンボリックリンクが速いか遅いかを確認できるコマンドはありますか

  4. シンボリックリンクにファイルコンテンツがある場合、シンボリックリンクの
    コンテンツを表示するコマンドは何ですか? (高速のシンボリックリンクにファイルコンテンツがなく、低速のシンボリックリンクにファイルコンテンツがある場合は、それを確認できます。)

承認された回答:

「ファイル情報をディスク(inodes)に保存するために使用されるデータ構造内にターゲットパスを保存できる」とは、高速シンボリックリンクがリンクされたファイルのパスを高速シンボリックリンクのiノード内に保存することを意味しますか?

はい

高速シンボリックリンクは、ファイル自体として、実際にはiノードのみを持ち、ファイルコンテンツはありませんか?

「ファイルの内容がある」とはどういう意味かによって異なります。 open()できないという意味で、シンボリックリンクにファイルコンテンツが含まれることはありません。 それらとread() それらから。しかし、あなたが引用したテキストによって暗示されている意味では、「ファイルには、リンクのターゲットへのテキスト参照が含まれていました」。したがって、はい、そのテキスト参照はファイルの「コンテンツ」と見なすことができます。

関連:新しいハードドライブ用に分割された新しいパーティションの作成:マウントすると、予想よりもはるかに小さくなります。なんで?

この内容は、シンボリックリンクが高速シンボリックリンクであるか低速シンボリックリンクであるかに関係なく同じです。ファイルシステムがその情報をディスク上のデータ構造に格納することを選択した方法と場所は、実装の詳細であり、これには影響しません。

遅いシンボリックリンクは、ファイル自体として、iノードとターゲットパスであるファイルコンテンツを持っていますか?

同じ観点から、そうです!

「ターゲットパスが利用可能なiノードスペースを超える場合」とはどういう意味ですか?

ファイルシステムと、iノードを格納するために使用したデータ構造の種類、それらのデータ構造にある空き領域の量、および可変サイズか固定サイズかによって異なります。低速のシンボリックリンクとして保存されるようにフォールバックする前のシンボリックリンクのターゲットパスの最大長は、ファイルシステム実装の詳細です。

ちなみに、特定のファイルシステムが同じトリックを使用して短い通常のコンテンツを保存することを妨げるものは何もありません。 スペースとディスクアクセスを節約するためのファイル。

シンボリックリンクが速いか遅いかをチェックできるコマンドはありますか?

せいぜい、ファイルシステムのデバッグまたはダンプツール。そして、それはあなたが興味を持っているファイルシステムのタイプ(xfs、ext *、btrfsなど)に完全に依存します

シンボリックリンクにファイルコンテンツがある場合、シンボリックリンクのコンテンツを表示するコマンドは何ですか? (高速のシンボリックリンクにファイルコンテンツがなく、低速のシンボリックリンクにファイルコンテンツがある場合は、それを確認できます。)

readlink を使用して、シンボリックリンクのターゲットパス(コンテンツ)を取得できます。 、ただし ls -l <​​/ code> も機能します。


Linux
  1. スーパーブロック、iノード、Dentry、およびファイル?

  2. プロセス置換とパイプ?

  3. ファイルのアクセス許可と保存?

  1. リダイレクトとパイプ出力?

  2. vsFTPDのインストールと構成

  3. Linux でサポートおよび推奨されるファイル システム

  1. Linuxでファイルをシンボリックリンクするにはどうすればよいですか?

  2. スレッドとファイル記述子

  3. シンボリックリンクを通常のファイルに変換するには?