這年頭玩Ubuntu或Fedora都有這樣的感想:現在的Linux安裝真的比以前簡單很多,連磁碟分割都可以懶人化。但對於一套要長期穩定運作的Linux系統來說,分割系統會是相當重要的課題,而一直都會有Linux新手會問:/swap該割多少?/home為什麼要獨立分割?

Linux系統的檔案架構不同於Windows,在Windows下,你可以輕易的知道你的系統在C:\,光碟可能是D:\或E:\,這種用磁碟機當代號來管理的方式,對長年使用Windows系統的人來說毫無困難,一看就懂。磁碟分割的時候也依照這個要領,對每個分割區分配一個代號。就算是外接硬碟或光碟機,也會多佔一個磁碟機代號。下面會先簡單提到一些Linux檔案系統知識,若是覺得這部份有點老生常談,可以直接從下一頁的分割建議設置看起。

Linux沒有C:\,怎麼用?

Linux系統的檔案目錄不太一樣,並沒有所謂的磁碟機代號。分割的時候可能會遇到這樣的問題:系統要怎麼灌,為什麼有這些目錄要灌,灌了以後能幹嘛……等等。Linux因為是由根目錄延伸出去的目錄架構,所以並不會告訴你代號。裝置通常會有一個類似/dev/hda或/dev/sda的名稱,但不會是真正的檔案路徑。

▲裝置會有一個/dev開頭的名稱,但不等於檔案路徑。

新手重點,快速理解Linux目錄意義

在Linux系統下有一籮筐目錄,每個目錄其實都有他的用意,很多教學書都會強調Linux系統有哪些資料夾,這些玩意要做什麼的,一下子要全部弄懂很花時間,對初心者來說,至少要先認識幾個目錄,後面要分割硬碟時才好辦事。

1.「/」

所謂的根目錄,一切的起點,所有的目錄都從「根」開始,一個接一個的掛下去。意義跟Windows的C:\很像。所有的目錄一定都會掛在根目錄底下,所以一定會佔到一個分割區。

2.「/home」

所謂的家目錄,使用者的桌面資料、文件、音樂、個人設定檔等等,都會在這個資料夾。通常以帳號分別,例如筆者創了一個叫「amola」帳號,家目錄就會是「/home/amola」,如果筆者又多建了一個「aluba」帳號,家目錄就是「/home/aluba」,以此類推。

「/home」的作用幾乎跟Windows系統的「我的文件(My Documents)」一致,但「/home」底下還會有軟體設定檔,每一個帳戶登入的軟體設定都存在這裡,瀏覽器或P2P程式的預設下載目錄,也一定會在/home/個人帳號/這個範圍內。重要性跟「我的D槽」不相上下。

▲以Ubuntu為例,家目錄底下往往會有許多預設的分類資料夾。

▲若是在Nautilus檔案管理員底下按Ctrl+H,可以看到隱藏著的軟體設定檔。
這些設定檔關係到整個軟體的設定運作,重灌的時候,能不能還原這些設定很重要。 

3.「swap」

指的是置換空間,也是所謂的虛擬記憶體。關於這個空間的利用最有爭議,說法也有很多。也有人提供將swap分割區轉成實體檔案掛載的教學。不管怎樣,swap可以說是僅次於根目錄以下最重要的分割區,地位等同Windows系統的pagefile.sys。多了他乍看好像不一定有什麼效能優化,但少了他會很麻煩。

4.「/media」跟「/mnt」

其實這兩個資料夾的意思很像,都是「掛載」外部新增的硬體設備。較早的Linux系統僅出現「/mnt」這個資料夾,並設定為預設的掛載資料夾。如果使用者新買了顆硬碟,裝進電腦裡,Windows的做法會多給他一個英文字母做為磁碟機代號,Linux則會先處於「未掛載」的狀態,除非使用者另外下指令,或是透過修改設定檔的方式去主動掛載他,才能繼續利用。之所以會叫做「mnt」,一般認為是源於掛載(mount)的意思。

比較新而且更流行的系統,像是Ubuntu等等,在系統裡又多了一個「/media」,英文的解釋是「Mount point for removeable media(設給可移除媒體裝置的掛載點)」,舉例來說,今天買了一隻隨身碟,插入一台Linux電腦,系統會主動幫你將裝置掛載到「/media」這個目錄底下,檔案路徑的開頭也會是「/media/裝置名稱/xxx.ooo」之類的。若是在光碟機裡放一張DVD,光碟片的檔案也會被掛載到「/media/光碟片標籤/」這個地方。

▲光碟放入之後會看到系統主動幫忙掛載,指定的掛載點就是/media。

套用回Windows的思維,這些就是Windows系統「C:\以外的磁碟機代號」。以Ubuntu的設計來說,雖然系統裡/media與/mnt兩種資料夾都有,但是一律都自動或建議掛載到/media底下。這裡簡單整理一下,/mnt是比較傳統的Linux用法,/media則是近期新Linux發行版的用法,目的都差不多,是留給使用者「掛載」外部儲存媒體或設備用的。

(後面還有:分割的建議,Swap該不該移除?)

該分割了,從哪裡割起?

若不是用在架站,做為初期的新手練習,最需要分割的就是「/」跟「swap」兩個獨立分割區。以Ubuntu為例,預設的自動分割模式,就是直接分配整顆磁碟給根目錄,然後在末端的磁區建立容量接近實體記憶體的swap分割區。

以筆者個人桌機灌Ubuntu的習慣,至少會割出「/」、「/home」、「/swap」三個分區利用。「/」大約分10~15GB,「/swap」分到實體記憶體的兩倍空間,若是2GB記憶體,/swap就會分到4GB。剩下的空間就全分配給「/home」之用。這樣做的好處在於,若有一天不幸需要重灌系統時,/home裡面的資料跟設定可以保留下來,只需要Format根目錄就可以快速恢復系統,這樣的概念也類似一般Windows分割時,建議C:\分割區小一點,並獨立出系統區與資料區,重灌時只需要洗掉C:\的意思一樣。

  • 根目錄一定會存在。經驗上,Ubuntu剛灌好時吃掉5GB多一點,新手使用抓10~15GB就能安定使用
  • 除非資料不重要,不打算深入使用,否則強烈建議把/home分割出來。越大越好。
  • Swap跟「休眠」功能有關,Swap空間大於實體記憶體時,休眠功能才能啟動。
  • Swap不建議完全移除,也不一定要死守「需為實體記憶體1.5倍」之類的公式

▲Ubuntu的安裝光碟若讓軟體自行分配,會強迫分出一區專門給swap的特區。

▲雖然安裝光碟很便利,但自己長期玩下來的感想,分割區勤勞一點自己做會更好。

Swap到底該不該移除?

置換空間既然都有個名字叫「虛擬記憶體」,對於現在記憶體容量飆上單條4GB的時代,一定會有人在想,記憶體都大到用不完了,還要一個虛擬記憶體擺在那邊吃硬碟空間幹麼,刪掉不好嗎?

有系統調校經驗的使用者或許會很耳熟,這些問題似乎跟Windows系統上的問題相似。系統如果有4G記憶體,pagefile.sys沒吃個2GB也不會罷手。Swap原理上跟pagefile.sys相近,如果說,記憶體大到系統用不完,置換空間不是都在記憶體耗盡的時候拿來「支援」嗎,沒設也沒差吧?

筆者自己的電腦是Windows/Ubuntu雙重開機,都曾試過把pagefile.sys/Swap移除,以效率來說,並沒有明顯的成長,但Windows的部份變得相當不穩,Ubuntu方面則會有X Server突然無回應,要用Ctrl+Alt+Backspace重啟的問題。後來乖乖設定回去,問題就減少很多。實測上雖然很難抓到確定是分頁檔/置換空間移除的關鍵原因,但是關閉之後的系統確實變得相當棘手。就筆者的看法,這個功能可以調整檔案或分割區大小,不一定要設定到非常大。要是記憶體插到4GB以上,但工作量不大的機器,swap設在1GB也無妨,但是非常不建議設為0(完全移除)。需要配合系統的使用情形做最適化的調整。

▲一大半的檔案系統看不懂沒關係,至少Swap的建立是一大重點。

(後面還有:更專業的應用,需要更細的配置)

專業應用需多用心

剛剛講的是初心者用途,但更需要謹慎的專業用途,分配的方式會更細。Linux本身是個擁有很大可能性的作業系統,主觀來說,沒有絕對正確的解法,只有最適合各種狀況的方法。例如筆者以Ubuntu做為Linux主力操作系統,個人的做法是割出「/」、「/home」、「Swap」,後來擴充的硬碟用Nautilus檔案管理員自動掛載在「/media」分割區,但架站要用的時候,割法又不同了。

舉例來說,坊間的教材多半會提到。Samba分享給同網段下的用戶時,會大量利用到「/home」的目錄,FTP服務也通常會利用/home來建立使用者資料夾,因此「/home」需要獨立分割,還要越大越好。郵件伺服器跟Apache網頁伺服器都會在「/var」這個目錄下存取,對於「/var」這個目錄來說,就會需要較大的獨立分割區。更謹慎的使用者,會將/usr、/tmp、/boot都獨立掛載。

  • /var通常是伺服器程式存取用戶檔案的地方,也可以透過修改軟體設定的方式轉存到/home
  • /usr一般而言與「C:\Windows」、「C:\Program Files」是相同地位的資料夾,存放系統所需的程式以及軟體安裝的位置。
  • /boot則是開機管理程式的掛載點,新手應用上幾乎不需要另外設定分割區。
  • /tmp是系統暫存檔存放處,若是需要上線提供大量使用者存取的機器,這個掛載點最好獨立切出來。

▲分割之前的硬碟一片乾淨。如何去預分配自己需要的磁區也是一項課題。

▲其實不管怎麼掛載,怎麼分割,目錄樹仍舊會維持原來的結構。
這也是Unix系統繼承而來的一項特色。

▲雖然分割後也可以另外重新掛載,但是安裝前就先規劃好,會讓事後的管理省力不少。