2010-12-11 4 views
5

誰か知っていますか? freshmeat_linux/Linux]の実装でpreferrably?ディレクトリハードリンクをサポートするファイルシステム

また、誰かがオープンソースの実装でそれを追加するにはどれだけの労力が必要なのでしょうか? (つまり、if文を変更すれば十分かもしれませんが、fs実装全体でテストを追加する必要がありますか?その考えはありますか?)バイナリエディタやものを作成して開口部は/ dev/sdaにからあなたを保持していない

+0

好奇心ではありません:なぜこれが必要ですか? –

+0

は、DBMSを買う余裕がないリソースの制限が大きすぎる組み込みシステムを考えています。データの一貫性 – ribamar

答えて

2

技術的には何も

感謝...。しかし、あなたのシステム内の他のものは、あなたが壊れてしまった場合、崩壊します彼らがASSERTある ファイルシステムの 非循環有向グラフ構造を(破るためのディレクトリ へ

ユーザーが追加のハードリンクが禁止されています。私は見つけることができる

最良の説明がjtaから、この引用であります Unixiana、おおよそ)、そして、彼らは ファイルツリー・ウォーカー(用語Multicians が一目で認識しますが、Unixの オタクはおそらく 問題なく、あまりにも把握することができますの地獄を混乱させる ので、 。

+0

この答えは正確には答えませんが、問題はカーネル内ではなく、fs実装ではないという意味で役立ちます(Linuxではdirハードリンクを処理するfs実装がないことは疑いがありましたが、カーネルがそれを禁止しているわけではない)。しかし、カーネルの実装を変更して「システム内の他のすべてが崩壊する」ことを防ぐためには、シンプルで複雑すぎるでしょうか? – ribamar

+2

マーティンは正しいです。それが好きではないカーネルだけでなく、ユーザスペースツールもファイルシステムが有向グラフであると仮定します。カーネルは制限を強制します。 – mark4o

+1

ディレクトリハードリンクの存在だけではDAGプロパティが破損することはありません。サイクルを作成した場合にのみ、これが問題になります。 – caf

4

HFS +では、OSX 10.5のディレクトリハードリンクが可能です。 OSX 10.6以来、TimeMachineだけがTimeMachineを作成することができ、HFS +はサイクルを導入しないという健全性のチェックをいくつか行います。

ただし、Linux will not read them。ファイルシステム以外にも、これはVFSレイヤーで実行することができます。サイクルがなくても、いくつかのユーザ空間ツールは、ディレクトリのハードリンクを持たないことに依存しています(たとえば、GNU findの最適化により、多くのディレクトリをスキップできます; -noleafで無効にすることができます)。

関連する問題