2010-12-11 70 views
5

有人知道嗎?最好與Linux實施?支持目錄硬鏈接的文件系統

或者,是否有人知道將其添加到任何開源實現中需要付出多少努力? (我的意思是:也許這足以改變if語句,也許我必須小心翼翼地執行整個fs實現來添加測試;你有沒有這個概念?)。

感謝....

+0

出於好奇:你爲什麼需要這個? – 2010-12-11 10:57:44

+0

想象一個嵌入式系統,其資源限制太多,無法承受dbms。數據一致性 – ribamar 2010-12-11 12:47:38

回答

2

技術上沒有什麼阻止你打開/ dev/sda上用十六進制編輯器,並創建一個。但是,如果你這樣做,系統中的其他任何東西都會崩潰。

我能找到的最好的解釋是從jta這句話:

用戶添加的硬鏈接到目錄 是被禁止的,因爲他們打破 文件系統的 向無環圖結構(這是一個ASSERT Unixiana,大約),因爲他們 混淆了地獄的 文件樹步行者(一學期Multicians 將認識的視線,但Unix的 愛好者大概可以計算出沒有 問題太。

+0

這個答案沒有準確的回答,但是這個問題可能在內核中,而不是在fs實現中(我懷疑在linux中沒有處理目錄硬鏈接的fs實現,不是內核「禁止」它)。但是,如果改變內核實現以防止「如果你這樣做,系統中的其他任何東西就會崩潰」,它會變得簡單還是太複雜? – ribamar 2010-12-11 12:44:10

+2

馬丁是正確的。這不僅僅是內核不喜歡它,用戶空間工具也假定文件系統是一個定向的非形式圖。內核強制執行限制。 – mark4o 2010-12-11 18:24:45

+1

單獨存在目錄硬連接不會破壞DAG屬性 - 只有在創建循環時纔會出現問題。 – caf 2010-12-12 12:49:00

4

HFS +允許OSX 10.5中的目錄硬鏈接。只有TimeMachine可以從OSX 10.6開始創建它們,而HFS +會進行一些合理的檢查,以確定它們沒有引入週期。但是,Linux will not read them。除了文件系統之外,這可以在VFS層執行。即使沒有周期,一些用戶空間工具依賴於沒有目錄硬鏈接(例如,GNU查找優化可以跳過許多目錄;它可以用-noleaf禁用)。