Mac OS X 用雙硬碟時,用第二塊硬碟「掛載」一個目錄和創建這個目錄的「符號鏈接」從效果上看有什麼區別?

現有兩塊硬碟,OS X 安裝在小的 SSD 上,希望把它的部分目錄(個人文件夾內的「音樂」、「下載」、「Dropbox」等)放到大的 HDD 上。

看到有人直接把非系統盤掛載到某個目錄上 [1](似乎這樣只能影響一個目錄?),有人用符號鏈接。

這些方式對應用程序來說都一樣透明嗎?

[1]《Mac OS X 下與 SSD 相關的優化》http://blog.jjgod.org/2010/04/17/macosx-ssd-tweaks/


  1. 所有設備都會在 /dev/ 下面有個「文件」,可以將其視為該設備的「原始形態」。一塊新硬碟插到匯流排上之後,如果能被系統辨認出來,就會在 /dev/ 下面出現。
  2. OS X系統會默認將硬碟掛於 /Volumes 下,也就是說,做一個這樣的「映射」:

    /dev/disk1s2 ------ &> /Volumes/Somedisk
  3. 而這並不是你想要的。所以你有兩個方案:
    1. 改變這個映射。這需要改 fstab 文件。

      改 fstab (File System TABle)可以告訴系統說這塊(以及所有其他會長期連接到文件系統的實體或虛擬)硬碟你想掛在哪裡,也就是「映射到什麼路徑上」。以 jjgod 的這句

      /dev/disk1s2 /Users/jjgod/Downloads hfs rw

      為例,就是「請將 /dev/disk1s2 這個文件,以 hfs 系統、可讀可寫的方式映射為 /Users/jjgod/Downloads 目錄」的意思。
    2. 不改變這個映射,而是建立許多符號鏈接。

      比如 ln -s /Volumes/foo ~/Download 就是說,在 ~/ 目錄(你的用戶目錄)下建立一個名叫 Downloads 的快捷方式,一旦有程序訪問它,就讀取 /Volumes/foo 里的內容。
  4. 兩者在效果上區別不大,不過改 fstab 顯然要 hardcore 一點。


按照你的需求來看,只能使用符號鏈接了。你要掛幾個目錄,單獨為每個目錄建分區的話,空間使用上肯定沒有一個分區那麼靈活。

掛載是透明的,符號鏈接不是。符號鏈接直接暴露了實現細節。好在大部分 OS X 的應用都支持符號鏈接,所以使用沒有什麼問題。

我也是 SSD + HDD,什麼都沒有做。直接把不常用的放在 HDD,建個快捷方式過去。iTunes、iPhoto 都支持多個 Library。我把兩個都放在了 HDD 上。

其實最好的還是 Intel 新出的 Smart Response Technology [1] 技術,將 SSD 作為 HDD 的緩衝。系統通過分析訪問模式自動決定將哪些常用的文件放在 SSD。這樣除開一點點開銷,可以同時得到 SSD 的速度和 HDD 的容量,而且整個過程對用戶透明。不知道蘋果猴年馬月能夠支持這個……

[1]: http://www.anandtech.com/show/4329/intel-z68-chipset-smart-response-technology-ssd-caching-review/2


SSD與傳統硬碟混合方案的目的是為了均衡速度和容量。

由於掛載的方式是將一個文件系統掛在一個inode上,所以一個分區只能掛一次。一個硬碟如果多分區其間的容量很難平衡(而且無法動態調整)。

MacOS X的個人數據都在home下,不過對性能要求高的部分又分散在home的子文件夾下,比如iPhoto的Index文件你希望放在SSD上,但Originals的圖片你希望存在傳統硬碟上。又比如iTunes的music文件和Mobile applications你希望存在傳統硬碟上,但是索引文件你會傾向於放在SSD上。在~/Library/Application Support下面也是這樣,你肯訂不希望郵件cache吃掉很多寶貴的SSD空間。

所以,由於混合方案(小SSD)的特點,我們對目錄細分的粒度要求更細,目前唯一可行的方案就是符號鏈接了。

當然,如果你可以接受單一Home掛載的粗粒度分開的話,你可以考慮使用MacOS X的「Home遷移」的能力,不需要修改掛載點而是直接遷移你的Home到傳統硬碟,這種方案簡便好用。

最後補充一下,使用符號鏈接不影響做Time Machine。而且複雜的link方案可以通過自動化腳本管理(可以配合版本控制,這樣不會忘記你創建過的任何符號鏈接),重裝系統會比較簡單。


1、Mac OS 的文件系統是單根的,也就是無論你有多少硬碟有多少分區,必須掛載到某一個目錄下才可以訪問那個分區。

2、假設你把新硬碟分了1個區,把這個分區掛到/harddisk2下,那麼要想把你的多個目錄放在這個下面,那隻能用符號連接。

3、如果不想用軟連接,只能分多個區,每個區掛到一個目錄下。這肯定不現實,所以還是方案2。

4、符號鏈接對應用絕大多數情況是透明的,幾乎碰不到有問題的應用。


只是提供一個可行性。

bindfs可以在Mac下獲得與linux下mount --bind類似的效果,也就是說一個硬碟上的目錄可以mount到很多地方


掛載目錄只能對分區進行,符號鏈接可以對文件夾使用


用切身經歷告訴你,如果你用的是Mac mini 2014低配版的話,用USB3.0外掛SSD硬碟裝系統跟原版機械硬碟基本是走路跟自行車的對比


OS X支持將個人文件夾移到其它位置。比如我的個人文件夾就在/Volumes/Users/wsy下面,而同時/Users/wsy文件夾仍然存在,我沒有給它重定向,而是放在那不管了。


這兩種方法對於應用程序來說並無區別。

但是對於可操作性和開機過程來說,對於fstab掛載的方法,似乎掛載不成功時會影響OSX的開機速度;顯然軟鏈接不會有這個問題。


推薦閱讀:

這個玩具該怎麼做出來?
i生活 | 教你在家搞定5款超高人氣飲品!
我想把一根樹枝自己加工成手鏈,應該怎麼做?
貓草以及貓草DIY教程
為什麼 SATA 要單獨供電,而不像 USB 供電和數據一條線?

TAG:macOS | DIY | 文件系統 |