Lunix主機規劃與磁盤分區

1 Lunix的主機規劃

1.1 Lunix與硬件的搭配

在 Linux 系統中,每個裝置都被當成一個文件來對待,因此,每個硬件裝置都有一個對應的文件夾。舉例來說,IDE 驅動器接口的硬盤的文件名即爲/dev/sd[a-d],其中,括號內的字母爲a-d當中的任意一個,亦即有/dev/sda, /dev/sdb, /dev/sdc, 及 /dev/sdd 這四個文件的意思,且幾乎所有的硬件裝置文件都在/dev 這個目錄內。

以下爲常見裝置在Lunix當中的對應文檔名

裝置 裝置在 Linux 內的文件名
SCSI/SATA/USB 硬盤機 /dev/sd[a-p]
USB 快閃碟 /dev/sd[a-p] (與 SATA 相同)
VirtI/O 界面 /dev/vd[a-p] (用於虛擬機內)
軟盤驅動器 /dev/fd[0-7]
打印機 /dev/lp[0-2] (25 針打印機)           /dev/usb/lp[0-15] (USB 界面)
鼠標 /dev/input/mouse[0-15] (通用)    /dev/psaux (PS/2 界面)           /dev/mouse (當前鼠標)
CDROM/DVDROM /dev/ht0 (IDE 界面)     /dev/st0 (SATA/SCSI 界面)       /dev/tape (當前磁帶)
IDE 硬盤機 /dev/hd[a-d] (舊式系統纔有)

2 磁盤分區 

2.1 爲什麼要給磁盤分區 

1 數據的安全性

分區後各槽之間數據互不影響,如給C盤重裝系統,不影響D盤中的數據資料。

2 系統的效能考慮

縮小磁盤的讀取範圍。
 

2.2 如何分區

2.21 硬盤的組成

在分析如何給磁盤分區之前,我們在回顧下硬盤的組成 。

硬盤中一般會有多個盤片組成,每個盤片包含兩個面,每個盤面都對應地有一個讀/寫磁頭。受到硬盤整體體積和生產成本的限制,盤片數量都受到限制,一般都在5片以內。盤片的編號自下向上從0開始,如最下邊的盤片有0面和1面,再上一個盤片就編號爲2面和3面。

下圖顯示的是一個盤面,盤面中一圈圈灰色同心圓爲一條條磁道,從圓心向外畫直線,可以將磁道劃分爲若干個弧段,每個磁道上一個弧段被稱之爲一個扇區(圖踐綠色部分)。扇區是磁盤的最小組成單元,通常是512字節。(由於不斷提高磁盤的大小,部分廠商設定每個扇區的大小是4096字節)

 

2.22 分區

是否每個扇區都一樣重要呢?其實整顆磁盤的第一個扇區特別的重要,因爲他記錄了整顆磁盤的重要信息! 早期磁盤第一個扇區裏面含有的重要信息我們稱爲 MBR (Master Boot Record) 格式,但是由於近年來磁盤的容量不斷擴大,造成讀寫上的一些困擾, 甚至有些大於 2TB 以上的磁盤分區已經讓某些操作系統無法存取(Windows 2000/XP 32位不能支持 2TB 以上的網絡存貯硬盤,因爲這些硬盤是通過網絡間接存取的。)。因此後來又多了一個新的磁盤分區格式,稱爲 GPT (GUID partition table)! 

參考對照磁柱或扇區號碼的方式來記錄分區,相應信息記錄在分區表上,因此這兩種方式對應兩種不同格式的分區表, MSDOS(MBR) 與 GPT 磁盤分區表(partition table)。

MSDOS (MBR) 分區表格式與限制:

早期的 Linux 系統爲了兼容於 Windows 的磁盤,因此使用的是支持 Windows 的 MBR(Master Boot Record, 主要開機紀錄區) 的方式來處理開機管理程序與分區表!而開機管理程序紀錄區與分區表則通通放在磁盤的第一個扇區,這個扇區通常是 512bytes 的大小。

  • 主要啓動記錄區(Master Boot Record, MBR):可以安裝開機管理程序的地方,有 446 bytes

  • 分區表(partition table):記錄整顆硬盤分區的狀態,有 64 bytes

由於分區表就只有 64 bytes 而已,最多隻能容納四筆分區的記錄。64個字節(1BEH~1FDH)來描述分區,在這64字節中,描述一個分區的屬性需要16個字節。這四個分區的記錄被稱爲主要(Primary)或延伸(Extended)分區槽。PE!

GUID partition table, GPT 磁盤分區表:

因爲過去一個扇區大小就是 512bytes 而已,不過目前已經有 4K 的扇區設計出現!爲了兼容於所有的磁盤,因此在扇區的定義上面, 大多會使用所謂的邏輯區塊地址(Logical Block Address, LBA)來處理。GPT 將磁盤所有區塊以此 LBA(預設爲512bytes) 來規劃,而第一個 LBA 稱爲 LBA0 (從0 開始編號)。
       與 MBR 僅使用第一個 512bytes 區塊來紀錄不同, GPT 使用了 34 個 LBA 區塊來紀錄分區信息!同時與過去 MBR 僅有一的區塊不同, GPT 除了前面 34 個 LBA 之外,整個磁盤的最後 33 個 LBA 也拿來作爲另一個備份!

2.3 開機流程中的 BIOS 與 UEFI 開機檢測程序

計算機是如何讀取硬盤內的操作系統文件的呢?當然是依靠開機程序。基本上,目前的主機系統在加載硬件驅動方面的程序,主要有早期的 BIOS 與新的 UEFI 兩種機制。

2.31 BIOS 搭配 MBR/GPT 的開機流程

在計算器概論裏面我們有談到那個可愛的 BIOS 與 CMOS 兩個東西, CMOS 是記錄各項硬件參數且嵌入在主板上面的儲存器,BIOS 則是一個寫入到主板上的一個韌體(再次說明, 韌體就是寫入到硬件上的一個軟件程序)。這個 BIOS 就是在開機的時候,計算機系統會主動執行的第一個程序了!

接下來 BIOS 會去分析計算機裏面有哪些儲存設備,我們以硬盤爲例,BIOS 會依據使用者的設定去取得能夠開機的硬盤,並且到該硬盤裏面去讀取第一個扇區的 MBR 位置。MBR 這個僅有 446 bytes的硬盤容量裏面會放置最基本的開機管理程序, 此時 BIOS 就功成圓滿,而接下來就是 MBR 內的開機管理程序的工作了。

這個開機管理程序的目的是在加載(load)核心文件, 由於開機管理程序是操作系統在安裝的時候所提供的,所以他會認識硬盤內的文件系統格式,因此就能夠讀取核心文件。

簡而言之:

1 . BIOS:開機主動執行的韌體,會認識第一個可開機的裝置;

2. MBR:第一個可開機裝置的第一個扇區內的主要啓動記錄區塊,內含開機管理程序;

3. 開機管理程序(boot loader):一支可讀取核心文件來執行的軟件; 

4. 核心文件:開始操作系統的功能... 

BIOS 與 MBR 都是硬件本身會支持的功能,至於 Boot loader 則是操作系統安裝在 MBR 上面的一套軟件了。由於 MBR 僅有 446 bytes 而已,因此這個開機管理程序是非常小而美的。 這個 boot loader 的主要任務有底下這些項目:

1. 提供選單:用戶可以選擇不同的開機項目,這也是多重引導的重要功能!

2. 載入核心文件:直接指向可開機的程序區段來開始操作系統;

3. 轉交其他 loader:將開機管理功能轉交給其他 loader 負責。

2.32 UEFI BIOS 搭配 GPT 開機的流程 

我們現在知道 GPT 可以提供到 64bit 的尋址,然後也能夠使用較大的區塊來處理開機管理程序。但是 BIOS 需要要透過 GPT 提供兼容模式才能夠讀寫這個磁盤裝置~而且 BIOS 僅爲 16 位的程序,在與現階段新的操作系統接軌方面有點弱掉了! 爲了解決這個問題,因此就有了 UEFI (Unified Extensible Firmware Interface) 這個統一可延伸韌體界面的產生。

UEFI 主要是想要取代 BIOS 這個韌體界面,因此我們也稱 UEFI 爲 UEFI BIOS 就是了。UEFI 使用 C 程序語言,比起使用彙編語言的傳統 BIOS 要更容易開發!也因爲使用 C 語言來撰寫,因此如果開發者夠厲害,甚至可以在 UEFI 開機階段就讓該系統瞭解 TCP/IP 而直接上網! 根本不需要進入操作系統!這讓小型系統的開發充滿各式各樣的可能性!

2.33 傳統 BIOS 與 UEFI 的差異

比較項目 傳統 BIOS UEFI
使用程序語言 彙編語言 C 語言
硬件資源控制 使用中斷 (IRQ) 管理
不可變的內存存取
不可變的輸入/輸出存取
使用驅動程序與協議
處理器運作環境 16 位 CPU 保護模式
擴充方式 透過 IRQ 連結 直接加載驅動程序
第三方廠商支持 較差  較差 較佳且可支持多平臺
圖形化能力 較差 較佳
內建簡化操作系統前環境 不支持 支持

2.4 Linux 安裝模式下,磁盤分區的選擇

Linux 內的所有數據都是以文件的形態來呈現的,整個 Linux 系統最重要的地方就是在於目錄樹架構。 所謂的目錄樹架構(directory tree)就是以根目錄爲主,然後向下呈現分支狀的目錄結構的一種文件架構。

但是我們的文件數據其實是放置在磁盤分區槽當中的,現在的問題是『如何結合目錄樹的架構與磁盤內的數據』呢? 這個時候就需要到『掛載(mount)』。

2.41 文件系統與目錄樹的關係(掛載)

所謂的『掛載』就是利用一個目錄當成進入點,將磁盤分區槽的數據放置在該目錄下; 也就是說,進入該目錄就可以讀取該分區槽的意思。這個動作我們稱爲『掛載』,那個進入點的目錄我們稱爲『掛載點』。 由於整個 Linux 系統最重要的是根目錄,因此根目錄一定需要掛載到某個分區槽的。 至於其他的目錄則可依用戶自己的需求來給予掛載到不同的分區槽。我們以下圖來作爲一個說明:

上圖中假設我的硬盤分爲兩槽,partition 1 是掛載到根目錄,至於 partition 2 則是掛載到/home 這個目錄。 這也就是說,當我的數據放置在/home 內的各次目錄時,數據是放置到 partition 2 的,如果不是放在/home 底下的目錄, 那麼數據就會被放置到 partition 1 了! 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章