<!-- [if !supportLists]-->1.1 <!-- [endif]-->Linux 檔案系統結構介紹
Linux 作業系統有一些固定的目錄。各種Linux發行版的目錄結構雖然不會一模一樣,但是不會有很大差異。知道了這些目錄的作用,不僅對你進行磁碟分割規劃很有協助,而且會讓你以後的日常維護工作變得輕鬆。
Ubuntu檔案系統的主要目錄如表2.2所示。
表2.2 UbuntuLinux檔案系統的主要目錄
目 錄 |
英文全名 |
用 途 |
/ |
/ |
整個目錄結構的起始點,所有其它檔案和目錄都在它下面 |
/bin |
Binaries |
用來存放最常用的二進位命令 |
/boot |
Boot |
包含引導Linux的主要檔案,如grub和核心檔案等 |
/dev |
Devices |
所有裝置都在該目錄下,包括硬碟和顯示器等 |
/etc |
etc |
系統的所有設定檔都放在它下面 |
/home |
Home |
存放各使用者的主目錄($HOME)及其檔案和配置 |
/lib |
Libraries |
系統的庫檔案,有點像Windows的Program Files |
/lost+found |
lost+found |
存放系統異常時丟失的檔案(如突然宕機),以利於恢複 |
/media |
Media |
載入各種媒體,如光碟片、磁碟片等 |
/mnt |
Mount |
載入各種檔案系統 |
/opt |
Optionally |
用於存放安裝的“可選”程式 |
/proc |
Processes |
包含進程等資訊,是記憶體的映射,不是真實目錄 |
/root |
Root |
該目錄是root使用者的根目錄 |
/sbin |
System-only binaries |
存放系統專用的二進位命令 |
/sys |
System |
存放系統資訊 |
/tmp |
Temporary files |
存放臨時檔案 |
/usr |
User |
存放普通使用者的應用程式,庫檔案和文檔等 |
/var |
Variable files |
存放那些在時間、大小、內容上會經常變化的檔案 |
表2.2中各個目錄的用途,你應該很瞭解才行。只要瞭解了各個目錄的用途,你才能在硬碟分區時不至於犯下大的錯誤。
<!-- [if !supportLists]-->1.2 <!-- [endif]-->“分區”和“掛載點”
平時,我們在討論Linux的“分區”時,常常混淆“掛載點”和“分區”的概念。其實只要大家都能明白就可以,不必摳字眼。不過,作為Linux系統管理員,我們還是應該弄明白這兩個概念的差別。
我們平常所說的“/var分區”,實際上說的是“掛載在/var上的分區”,而“/var”只是一個掛載點。那麼什麼是“分區”呢?
在Linux中,“分區”是一個一個的裝置,放在/dev目錄下。如果說IDE硬碟,它們的名字應該是/dev/hda1、/dev/hda2等;如果說SATA或者SCSI硬碟,它們的名字則是/dev/sda1、/dev/sda2等。
<!-- [if !supportLists]-->1.3 <!-- [endif]-->硬碟分區的表示方法
那麼什麼是hda和sda呢?它們分別是Hard Driver Number A和SCSI Driver Number A的簡寫,也就是說,hd和sd指出了硬碟的介面類型,後面的a則是序號,表示第幾塊硬碟。第1塊IDE硬碟是hda,第2塊IDE硬碟是hdb,依此類推;第1塊SCSI硬碟用sda表示,那麼第2塊SCSI就是用sdb表示了,依此類推,往後則是sdc、sdd等。
實際上,sd表示的不僅僅是SCSI裝置。除了IDE裝置外,SCSI、SATA、USB、Firewire等介面的存放裝置都是以sd表示的。
現在你應該已經知道,/dev/sdb2指的是第2塊SCSI硬碟的第2個分區,而/dev/hda5指的是第1塊IDE硬碟的第5個分區。
表2.3 Linux硬碟分區表示方法
|
IDE介面硬碟 |
SCSI介面硬碟 |
整個硬碟的表示方法 |
/dev/hda /dev/hdb /dev/hdc …… |
/dev/sda /dev/sdb /dev/sdc …… |
硬碟分區的表示方法 |
/dev/hda1, /dev/hda2… /dev/hdb1, /dev/hdb2… /dev/hdc1, /dev/hdc2… |
/dev/sda1, /dev/sda2… /dev/sdb1, /dev/sdb2… /dev/sdc1, /dev/sdc2… |
舊版本的Linux核心中,所有IDE相關的驅動代碼,不僅過於複雜,而且問題多多。於是,Linux核心的開發人員們從Kernel 2.6.19開始,提供了基於libata的PATA驅動程式,使得IDE裝置可以像SCSI裝置那樣使用。
所以,我們現在所使用的Ubuntu中,無論你使用的是IDE硬碟還是SATA硬碟,你看到的裝置都是/dev/sdx而不是/dev/hdx。從此,/dev/hdx不複存在。
需要注意的是,在Linux中,硬碟分區還有另外一種表示方法,這種方法是在grub中使用的。grub起源於Grand Unified Bootloader,是一個通用的電腦引導器,支援多種作業系統的多重開機。在grub中,不管是什麼介面的存放裝置,統統用hdx來表示,其中x是數字,從0開始。比如,第1塊硬碟的第1個分區,表示為(hd0,0)。
<!-- [if !supportLists]-->1.4 <!-- [endif]-->Linux分區指南
使用任何Linux系統,都要有至少兩個分區:一個是根分區,用“/”表示;另一個是swap(交換)分區。所以,最簡單的分區方法就是:先建立swap分區,剩下的所有空間分配給根分區“/”。
swap分區的尺寸,最小應該和記憶體一樣大,最大一般不超過記憶體的兩倍大小。
swap分區就像Windows的虛擬記憶體分頁檔pagefile.sys,系統在需要時會把它當作虛擬記憶體來使用。比方說在運行大型程式時、在記憶體最佳化時,或者在系統休眠時。系統休眠時,把整個記憶體的資料寫入swap分區,這就是為什麼你的swap分區的大小至少應該和記憶體一樣大的原因。
此外,最好把/boot也單獨建立在一個分區上。因為這個目錄下的檔案比較重要,萬一分區損壞,系統可能無法啟動。如果單獨建立為一個分區,其它分區損壞就不會影響它,從而提高了系統的穩定性。一般情況下,/boot分區不需要太大,128MB就足夠了。
至於其它分區,就要看你的實際需求了。
比方說,如果你的伺服器會有很多使用者登入上來放檔案,那麼/home最好單獨分區,並給予足夠大的空間。
再比方說,如果你的伺服器是要放資料庫的,這個資料庫可能會變得很大,那麼/var最好單獨分區,並給予足夠大的空間。因為資料庫預設是放在/var下面的。
Web伺服器也是一樣,因為Web頁面預設是放在/var下面的。所以,如果你認為會有人上傳大量的檔案,那麼最好也要把/var單獨分區,並給予足夠大的空間。
提示:作為伺服器,Hiweed還建議把/tmp單獨作為一個分區。因為大部分應用程式都會向這個目錄寫入臨時檔案,雖然每次Ubuntu重新啟動時這個目錄會被清空,但是沒有人會動不動重新啟動伺服器。
<!-- [if !supportLists]-->1.5 <!-- [endif]-->Linux分區案例
Hiweed在幫朋友的公司做系統架構時,在公司內部做了一台程式開發伺服器,在機房裡還有Web伺服器和資料庫伺服器。
程式開發伺服器是給所以公司開發人員用的,他們要在“家目錄”中儲存大量的檔案。平時,他們的工作站在啟動時,是會自動將程式開發伺服器上自己的“家目錄”掛載到本地的。所以,這台伺服器的/home是用得最多的,而且需要比較大的空間。
此外,由於是程式開發伺服器,我們還需要一個做版本管理的原始碼倉庫,這個倉庫是放在/var下面的。雖然原始碼的檔案尺寸不會特別大,不需要特別大的空間,但是這些代碼非常重要,所以我們也要像保護/boot那樣保護它們。
所以,對於這台程式開發伺服器,我們的資料分割配置(伺服器硬碟共有80 GB[10 GB],記憶體為1 GB[512 MB]),請見表2.4。
表2.4 程式開發伺服器資料分割配置
檔案系統 |
掛 載 點 |
大 小 |
分區格式 |
/dev/sda1 |
/boot |
254 MB[254] |
ext2 |
/dev/sda2 |
/ |
10 GB[2] |
ext4 |
/dev/sda5 |
(無) |
2 GB[768] |
swap |
/dev/sda6 |
/var |
20.3 GB[2] |
ext4 |
/dev/sda7 |
/home |
46.8 GB[4.3] |
ext4 |
/dev/sda8 |
/tmp |
2 GB[768] |
ext4 |
以上資料分割配置只是一個參考,實際資料分割配置應該根據自己的實際情況而定。
<!-- [if !supportLists]-->1.6 <!-- [endif]-->/etc/fstab 介紹
Linux系統中的所有靜態檔案系統,全部描述在/etc/fstab這個檔案中。fstab是File System Table的簡寫,也就是“檔案系統表”。系統啟動時,正是通過fstab中的資訊掛載各個分區的。fstab的檔案系統條目有6個欄位,格式如表2.5所示。
表2.5 fstab格式
設 備 |
掛載點 |
格 式 |
掛載選項 |
是否備份 |
檢查順序 |
/dev/sdb2 |
/home |
Ext4 |
Defaults |
0 |
2 |
下面我們來介紹一下每個欄位的含義,如表2.6所示。
表2.6 fstab各欄位含義
字 段 |
描 述 |
裝置 |
存放裝置(分區)的名字或者UUID |
掛載點 |
要掛載到的目的檔案夾名稱。掛載後,從該檔案夾即可訪問裝置 |
格式 |
檔案系統的格式,如:ext4 |
.掛載選項 |
掛載的選項。和mount命令的選項相同,詳情可參考man mount |
是否備份 |
啟用/禁用dump備份 |