鳥哥的linux私房菜讀書筆記3

第三章:主機規劃與磁盤分區

在linux系統中,每個設備都被當成一個文件來對待。例如IDE接口的硬盤的文件名即爲:/dev/hd[a-d],括號中的爲a-d中的任意一個,例如/dev/hda、….等四個文件,[]只是一種表達方式;打印機爲/dev/lp0,軟盤爲/dev/fd0;每個磁盤驅動器的磁盤分區不同時,其磁盤文件名還會改變;

主機通常提供兩個IDE接口,每個IDE接口又可以連接兩個IDE設備,所以一個主機最多可以連接四個IDE設備。兩個IDE設備通常稱爲IDE1,IDE2;每個IDE設備可以被分爲主設備master和從設備slave;IDE1的主從分別爲/dev/had、/dev/hdb。IDE2的主從分別爲/dev/hac、/dev/hdd,順序固定,只有一個IDE接口的硬盤,接在IDE2的master上,就是/dev/hac。

SATA接口是使用SCSI模塊來驅動,這些接口的磁盤設備名是/dev/sd[a-p],與IDE接口不同的是,SATA接口的磁盤沒有一定的順序,根據linux內核檢測到的磁盤的順序來定;

磁盤的組成:盤片、機械手臂、磁頭、主軸馬達等;數據的寫入其實是在盤片上面。盤片上又可以分出扇區與柱面兩種單位,其中扇區大小爲512kb。

扇區:大小固定爲512字節,舊式的記錄方式是半徑小的地方數據密度高,半徑大的地方數據密度低;新的解決方式爲,越往磁盤外面的地方就應該劃分越多的扇區。每個扇區的面積都一樣,容納的數據量也是一樣的;數據寫入的時候先寫滿最外道的磁道,接着再寫裏面的磁道,磁盤用久了讀寫越來越慢,是因爲同樣的時間,在外面可以掃過多個扇區的面積,讀取多個磁道的數據;而在裏面的磁道只能掃過一個扇區的面積,讀寫一個扇區的數據,所以這時候做磁盤整理或者格式化,使外面的磁道得到使用。

柱面:硬盤通常由重疊的一組盤片構成,每個盤面但都被劃分爲數目相等的磁道,並且從外面的0開始編號,具有相同編號的磁道形成一個柱面,稱之爲磁盤的柱面。柱面數與磁道數相同。每個盤面都有自己的磁頭,盤面數等於總的磁頭數。

磁盤的第一個扇區特別重要,它記錄了連個重要的信息:主引導分區MBR,可以安裝引導加載程序的地方,有446字節;分區表,記錄整塊硬盤分區的狀態,有64字節;MBR很重要,系統在開機時會主動去讀取這個區塊的內容,系統才知道程序放在那裏並且如何進行開機。

假設磁盤設備文件名爲/dev/hda時,將其分爲四個分區,四個分區的文件名爲p1:/dev/hda1、…等;

由於分區表只有64字節,最多隻能容納四個分區,被稱爲主分區或擴展分區。其實所謂的分區只是針對那個64字節的分區表進行設置而已;硬盤默認的分區表僅能寫如四組分區信息;這四組分區信息我們稱爲主或者擴展分區;分區的最小單位爲柱面;當系統要寫入磁盤時,一定會參考磁盤分區表,才能對某個分區進行數據的處理。

利用額外的扇區來記錄更多的分區信息:四個分區記錄區僅使用了兩個,P1是主分區、P2是擴展分區。擴展分區的目的是使用額外的扇區來記錄分區信息,擴展分區本身並不能被拿來格式化。然後我們可以通過擴展分區所指向的那個區塊繼續做分區的紀錄。擴展分區繼續切分出來的分區,就稱爲邏輯分區。主分區和擴展分區的名字爲p1:/dev/hda1、p1:/dev/hda2,擴展分區分的設備文件名爲:L1:/DEV/HDA5、L2:/DEV/HDA6、L3:/DEV/HDA7…;沒有hda3,hda4是因爲前面四個號碼都是保留給primary和extended使用的。

關於主分區、擴展分區和邏輯分區的特性我們做個簡單的定義:主分區與擴展分區最多可以有四個(硬盤的限制);擴展分區最多只能有一個(操作系統的限制);邏輯分區是由擴展分區持續切割出來的分區;能夠被格式化後作爲數據訪問的分區爲主分區與邏輯分區;擴展分區無法格式化;邏輯分區的數量依操作系統而不同,在linux系統中,IDE硬盤最多有59個邏輯分區(5到63號),SATA則有11個邏輯分區(5到15號);

硬盤的容量等於主分區容量加上擴展分區的容量;

擴展分區的容量等於各個邏輯分區的容量之和;

由於第一個扇區所記錄的分區表與MBR是這麼重要,幾乎只要讀取硬盤都會由這個扇區先讀起。因此,如果硬盤的第一個扇區屋裏壞掉了,那這個硬盤就沒什麼用了。因爲系統找不到分區表,就沒辦法繼續讀取柱面等。

CMOS是記錄各項硬件參數並嵌入到主板上面的存儲器,BIOS是一個寫入到主板上面的一個軟件程序,是開機運行的第一個程序。接下來BIOS會去分析計算機裏面有哪些存儲設備,我們以硬盤爲例,BIOS會依據用戶的設置去取得能夠開機的硬盤,並且到該硬盤裏面讀取第一個扇區裏面的MBR位置。MBR這個僅有446字節的容量裏裝的是最基本的引導加載程序,此時BIOS功成身退,接下來是MBR內部的引導加載程序的工作了;引導加載程序的目的是加載內核文件,由於引導加載程序是操作系統安裝時提供的,所以它會識別硬盤內的文件系統格式,因此就能夠讀取內核文件,接下來就是內核文件的工作了,引導加載文件也完成了,之後就是操作系統的任務了;

簡單說開機流程如下:BIOS,開機主動執行的程序,會認識第一個可開機的設備;MVR,第一個可開機設備的第一個扇區內的主引導分區塊,內包含引導加載程序;引導加載程序loader,一支可讀取內核文件來執行的軟件;內核文件,開始操作系統的功能。

BIOS和MBR是硬件本身會支持的功能,而引導加載程序是操作系統安裝在MBR上面的一套軟件罷了。

引導加載程序的主要任務有:提供菜單,用戶可以選擇不同的開機選項,這也是多重引導的重要功能;載入內核文件,直接指向可開機的程序區段來開始操作系統;轉交其他的loader:將引導加載功能轉交給其他loader負責。第三點實現多系統的安裝,用戶選擇某個分區上的引導加載程序來進行開機。

目錄樹結構:整個目錄樹結構最重要的就是那個根目錄,這個根目錄的表示方法爲一條斜線“/”,所有文件都與目錄樹有關;所有文件都是由根目錄衍生而來的,而次目錄之下還能夠有其他的數據存在。整個linux系統使用的是目錄樹結構,但是我們的文件數據其實是放置在磁盤分區當中的,通過掛載的方式將目錄樹的架構與磁盤內的數據結合起來;

文件系統與目錄樹的關係(掛載):利用一個目錄當成進入點,將磁盤分區的數據放置在該目錄下;也就是說,通過進入該目錄就可以讀取該分區的意思。這個操作叫做掛載,那個進入點的目錄我們稱爲掛載點。由於整個linux系統最重要的是根目錄,因此根目錄一定要掛在在某個分區上,置於其他目錄可以根據用戶的需求掛載到不同的分區。

掛載:在windows系統中,掛在通常是值給磁盤分區分配一個盤符。第三方軟件,如磁盤分區管理軟件、虛擬磁盤軟件等,通常也附帶掛在功能。

在linux系統中,掛在是指將一個設備掛接到一個已存在的目錄上。我們要訪問存儲設備上面的文件,必須將文件所在分區掛在到一個已存在的目錄上,然後通過訪問這個目錄來訪問存儲設備。掛在是一個非常重要的功能,使用非常頻繁。將一個設備(通常是一個存儲設備)掛接到一個已存在的目錄上,這個目錄可以不爲空,但是掛載後這個目錄下以前的內容將不可用。Linux將所有設備都視爲文件,他將整個計算機的資源都整合成一個大的文件目錄。我們要訪問存儲設備中的文件,必須將文件所在的分區掛載到一個已存在的目錄上,然後通過訪問這個目錄來訪問存儲設備。

Swap分區:當物理內存不夠用時,把內存的一部分空間釋放出來以供當前運行的程序使用。那些被釋放的空間可能來自一些很長時間沒有什麼操作的程序,這些被釋放的空間被臨時保存在swap分區中,等到那些程序要運行時,再從swap分區中恢復保存的數據到內存中。

重點回顧:

新添計算機硬件配置時,需要考慮的角度有遊戲機/工作機的考慮,性價比的考慮、支持度的考慮;

舊的硬件配置可能由於保存的問題或者電子元件老化的問題,導致計算機系統非常容易在運行過程中出現不明的死機情況;

在linux系統中,每個設備都有一個設備名,被當成一個文件來對待;

磁盤的設備名主要分爲IDE接口的/dev/hd[a-d]及SATA/SCSI/USB接口的/dev/sd[a-p]兩種;

磁盤的第一個扇區主要記錄了兩個重要的信息,分別是:主引導分區,可以安裝引導加載程序的地方,有446字節;分區表,記錄整個硬盤分區的狀態,有64字節。

磁盤的主分區與擴展分區最多可以有四個,邏輯分區的設備文件名號碼一定由5號開始;

開機的流程是:BIOS->MVR->bootloader->內核文件;

Boot loader的功能主要有提供菜單、加載內核、轉交控制權給其他loader;

Boot loader可以安裝的地點有兩個,分別是MBR與boot sector;

Linux操作系統的文件使用目錄樹系統,與磁盤對應需要有掛載的操作才行。

適合新手的簡單分區:建議只要有/及swap兩個分區即可。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章