Linux磁盘分区以及多重引导简述
Linux磁盤分區(qū)以及多重引導(dǎo)簡(jiǎn)述
要了解Linux的磁盤分區(qū),首先看看各種硬件設(shè)備在Linux中的文件名字。
以舊有的Windows觀點(diǎn)來(lái)看,你可能會(huì)有一塊磁盤并且把它分區(qū)成C:,D:,E:盤。那個(gè)C,D,E就是分區(qū)。
但是你了解在Linux是怎么分區(qū)的嗎?
1
個(gè)人計(jì)算機(jī)常見(jiàn)的磁盤接口有兩種,分別是IDE與SATA接口。
我們稱可以連接到IDE接口的設(shè)備為IDE設(shè)備,不論是磁盤或者是光盤設(shè)備。
以IDE接口來(lái)說(shuō),由于一個(gè)IDE扁平電纜可以連接兩個(gè)IDE設(shè)備,通常主機(jī)又會(huì)提供兩個(gè)IDE接口,因此最多可以連接到四個(gè)IDE設(shè)備。
也就是說(shuō),如果你已經(jīng)有一個(gè)光盤設(shè)備了,那么最多就只能再接三塊IDE接口的磁盤。
這兩個(gè)IDE接口通常被稱為IDE1(primary)以及IDE2(secondary),而每條扁平電纜上面的IDE設(shè)備可以被區(qū)分為Master(主設(shè)備)與Slave(從設(shè)備)。
這四個(gè)IDE設(shè)備的文件名如下:
例:假設(shè)你的主機(jī)上僅有一塊IDE接口的磁盤,而這一塊磁盤接在IDE2的Master上面,請(qǐng)問(wèn)他在Linux操作系統(tǒng)里面的設(shè)備文件名是什么?
答:IDE2的Master設(shè)備文件名是/dev/hdc。
再以SATA接口來(lái)說(shuō),由于SATA、USB、SCSI等磁盤接口都是使用SCSI模塊來(lái)驅(qū)動(dòng)的,因此這些接口的磁盤設(shè)備文件名都是/dev/sd[a-p]的格式。
但是與IDE接口不同的是,SATA、USB接口的磁盤根本就沒(méi)有一定的順序,那如何決定它的設(shè)備文件名呢?
這個(gè)時(shí)候就得要根據(jù)Linux內(nèi)核檢測(cè)到磁盤的順序了。
例:如果你的PC上面有兩個(gè)SATA磁盤以及一個(gè)USB磁盤,而主板上面有六個(gè)SATA的插槽。
這兩個(gè)SATA磁盤分別安插在主板上的SATA1,SATA5插槽上,請(qǐng)問(wèn)這三個(gè)磁盤在Linux中的設(shè)備文件名是什么?
答:由于是使用檢測(cè)到的順序來(lái)決定設(shè)備文件名,并非與實(shí)際插槽代號(hào)有關(guān),所以設(shè)備文件名如下:
- SATA1插槽上的文件名:/dev/sda
- SATA2插槽上的文件名:/dev/sdb
- USB磁盤(開(kāi)機(jī)完成后才被系統(tǒng)識(shí)別):/dev/sdc
2
磁盤主要組成部件是:盤片,機(jī)械手臂,磁頭與主軸馬達(dá)。
盤片上面可以細(xì)分出扇區(qū)(Sector)與柱面(Cylinder)兩種單位,其中扇區(qū)為每個(gè)512B那么大。
是否每個(gè)扇區(qū)都一樣重要呢?
其實(shí)整個(gè)磁盤的第一個(gè)扇區(qū)特別重要,因?yàn)榇疟P的第一個(gè)分區(qū)記錄了關(guān)于磁盤的兩個(gè)重要信息:
主引導(dǎo)分區(qū)(Master Boot Record,MBR):可以安裝引導(dǎo)加載程序的地方,有446B。
分區(qū)表(partition table):記錄整塊硬盤分區(qū)的狀態(tài),有64B。
3
柱面是文件系統(tǒng)的最小單位,也就是分區(qū)的最小單位。
我們就是利用參考柱面號(hào)碼的方式來(lái)處理。
在分區(qū)表所在的64bytes容量中,總共分為四組記錄區(qū),每組記錄區(qū)記錄了該區(qū)段的起始與結(jié)束的柱面號(hào)碼。
若把硬盤以長(zhǎng)條形來(lái)看,然后把柱面以柱形圖來(lái)看,那么如下圖所示:
假設(shè)上面的硬盤設(shè)備文件名為/dev/hda時(shí),那么這四個(gè)分區(qū)在Linux系統(tǒng)中的設(shè)備文件名如下所示,
重點(diǎn)在于文件名后面會(huì)再接一個(gè)數(shù)字,這個(gè)數(shù)字與該分區(qū)所在的位置有關(guān)。
P1:/dev/hda1
P2:/dev/hda2
P3:/dev/hda3
P4:/dev/hda4上圖中我們假設(shè)硬盤只有400個(gè)柱面,共分區(qū)成為4個(gè)分區(qū),第四個(gè)分區(qū)所在為第301到400號(hào)柱面的范圍。
當(dāng)你的操作系統(tǒng)是Windows時(shí),那么第一個(gè)到第四個(gè)分區(qū)的代號(hào)應(yīng)該就是C、D、E、F。
當(dāng)你有數(shù)據(jù)要寫入F盤時(shí),你的數(shù)據(jù)會(huì)被寫入這塊磁盤的301~400號(hào)柱面之間。
由于分區(qū)表就只有64bytes而已,最多只能容納四個(gè)分區(qū),這四個(gè)分區(qū)被稱為主(Primary)或擴(kuò)展分區(qū)(Extended)分區(qū)。
我們有以下結(jié)論:
- 其實(shí)所謂的分區(qū)只是針對(duì)那個(gè)64bytes的分區(qū)表進(jìn)行設(shè)置而已。
- 硬盤默認(rèn)的分區(qū)表只能寫入四組分區(qū)信息,
- 這四組分區(qū)信息我們稱為主或擴(kuò)展分區(qū)。
- 分區(qū)的最小單位是cylinder。
數(shù)據(jù)的安全性。
每個(gè)分區(qū)的數(shù)據(jù)是分開(kāi)的。
當(dāng)需要把某個(gè)分區(qū)的數(shù)據(jù)重整時(shí),例如重新裝Windows的時(shí)候,可以把C盤中的其他重要數(shù)據(jù)移到其他分區(qū),比如把C盤的一些文件移動(dòng)到D盤,那么對(duì)C盤重裝系統(tǒng)也不會(huì)影響D盤。
系統(tǒng)的性能考慮。
由于分區(qū)把數(shù)據(jù)集中在某個(gè)柱面的區(qū)段,如上圖所示,當(dāng)中第一個(gè)分區(qū)位于柱面號(hào)碼1-100號(hào),
如此一來(lái)當(dāng)有數(shù)據(jù)要讀取該分區(qū)的時(shí)候,磁盤只會(huì)搜索前面1-100的柱面范圍,由于數(shù)據(jù)集中了,將有助于數(shù)據(jù)讀取的速度與性能。
4
我們?cè)谟?jì)算機(jī)概論里面提到了,沒(méi)有執(zhí)行軟件的硬件是沒(méi)用的,
為了計(jì)算機(jī)硬件系統(tǒng)的資源合理分配,因此有了操作系統(tǒng)這個(gè)系統(tǒng)軟件的產(chǎn)生。
由于操作系統(tǒng)會(huì)控制所有的硬件并且提供內(nèi)核功能,因此我們的計(jì)算機(jī)就能認(rèn)識(shí)硬盤內(nèi)的文件系統(tǒng),
并且進(jìn)一步讀取硬盤內(nèi)的軟件文件與執(zhí)行該軟件來(lái)完成各項(xiàng)軟件的執(zhí)行目的。
問(wèn)題是,操作系統(tǒng)也是軟件,那么我的計(jì)算機(jī)又是怎么認(rèn)識(shí)這個(gè)操作系統(tǒng)軟件并且執(zhí)行它的?
開(kāi)機(jī)的時(shí)候我的計(jì)算機(jī)還沒(méi)有任何軟件系統(tǒng),那他要如何讀取硬盤內(nèi)的操作系統(tǒng)文件?這就涉及到計(jì)算機(jī)的開(kāi)機(jī)程序。
CMOS是記錄各項(xiàng)硬件參數(shù)且嵌入在主板上的存儲(chǔ)器,BIOS則是一個(gè)寫入到主板上的一個(gè)韌體(韌體就是寫入到硬件上的一個(gè)軟件程序)。
這個(gè)BIOS就是在開(kāi)機(jī)的時(shí)候計(jì)算機(jī)會(huì)主動(dòng)執(zhí)行的第一個(gè)程序。
接下來(lái)BIOS會(huì)去分析計(jì)算機(jī)里面有哪些存儲(chǔ)設(shè)備,我們以硬盤為例,BIOS會(huì)依據(jù)用戶的設(shè)置去取的能開(kāi)機(jī)的硬盤,
并且到該硬盤里第一個(gè)扇區(qū)的MBR的位置。
MBR這個(gè)僅有446bytes的硬盤容量里會(huì)放置最基本的引導(dǎo)加載程序,此時(shí)BIOS就圓滿成功,而接下來(lái)就是MBR內(nèi)的引導(dǎo)加載程序的工作了。
這個(gè)引導(dǎo)加載程序的目的是在加載(load)內(nèi)核文件,由于引導(dǎo)加載程序是“操作系統(tǒng)在安裝的時(shí)候”所提供的,
所以它會(huì)識(shí)別硬盤內(nèi)的文件系統(tǒng)的格式,因此就能夠讀取內(nèi)核文件,然后接下來(lái)就是內(nèi)核文件的工作,引導(dǎo)加載程序也功成圓滿。
簡(jiǎn)單地說(shuō),整個(gè)開(kāi)機(jī)流程到操作系統(tǒng)之前的動(dòng)作應(yīng)該是這樣的:
BIOS:開(kāi)機(jī)主動(dòng)執(zhí)行的韌體,會(huì)認(rèn)識(shí)第一個(gè)可開(kāi)機(jī)的設(shè)備。
MBR:第一個(gè)可開(kāi)機(jī)設(shè)備的第一個(gè)扇區(qū)內(nèi)的主引導(dǎo)分區(qū)塊,內(nèi)包含引導(dǎo)加載程序。
引導(dǎo)加載程序(Boot Loader):一支可讀取內(nèi)核文件來(lái)執(zhí)行的軟件。
內(nèi)核文件:開(kāi)始操作系統(tǒng)的功能。
提供菜單:用戶可以選擇不同的開(kāi)機(jī)選項(xiàng),這也是多重引導(dǎo)的重要功能。
載入內(nèi)核文件:直接指向可開(kāi)機(jī)的程序區(qū)段來(lái)開(kāi)始操作系統(tǒng)。
轉(zhuǎn)交給其他Loader:將引導(dǎo)加載功能轉(zhuǎn)交給其他Loader負(fù)責(zé)。
現(xiàn)在想想,如果你的磁盤被分成兩個(gè)分區(qū),那么每個(gè)分區(qū)的文件名是什么?
在了解這個(gè)問(wèn)題前,我們先了解一下磁盤的組成,因?yàn)榇疟P的分區(qū)與它物理的組成很有關(guān)系。
MBR是很重要的。當(dāng)系統(tǒng)在開(kāi)機(jī)的時(shí)候會(huì)主動(dòng)去讀取這個(gè)區(qū)塊的內(nèi)容,這樣系統(tǒng)才會(huì)知道你的程序放在哪里且該如何進(jìn)行開(kāi)機(jī)。
如果安裝多重引導(dǎo)的系統(tǒng),MBR這個(gè)區(qū)塊的管理就非常重要了。
分區(qū)表是什么呢?其實(shí)你剛才拿到的整塊硬盤就像是一根原木,你必須在這根原木上切割出你想要的區(qū)段,這個(gè)區(qū)段在能夠再制作成你想要的家具。
如果沒(méi)有進(jìn)行切割,那么原木就不能被有效地使用。
同樣道理,你必須對(duì)硬盤進(jìn)行分區(qū),這樣硬盤才能夠被你使用。
當(dāng)系統(tǒng)要寫入磁盤時(shí),一定會(huì)參考磁盤分區(qū)表,才能針對(duì)某個(gè)分區(qū)進(jìn)行數(shù)據(jù)的處理。
考慮一下,為什么要分區(qū)啊?
雖然分區(qū)表只有四組數(shù)據(jù)的空間,但是不代表我一塊硬盤上最多只能分區(qū)出四個(gè)分區(qū)。
在Windows/Linux系統(tǒng)中,可以通過(guò)擴(kuò)展分區(qū),把一塊硬盤分區(qū)成十個(gè)以上的分區(qū)。
擴(kuò)展分區(qū)的想法是,既然第一個(gè)扇區(qū)所在的分區(qū)表只能記錄四條數(shù)據(jù),那我可否利用額外的扇區(qū)來(lái)記錄更多的分區(qū)信息?
如下圖所示:
從上圖我們知道硬盤的四個(gè)分區(qū)記錄僅僅使用到2個(gè),P1是主分區(qū),P2是擴(kuò)展分區(qū)。
請(qǐng)注意,擴(kuò)展分區(qū)的目的是使用額外的扇區(qū)來(lái)記錄分區(qū)信息,擴(kuò)展分區(qū)本身并不能被拿來(lái)格式化。
然后我們可以通過(guò)擴(kuò)展分區(qū)所指向的那個(gè)區(qū)塊繼續(xù)做分區(qū)的記錄。
上圖右下方那個(gè)區(qū)塊繼續(xù)分區(qū)出五個(gè)分區(qū),這五個(gè)由擴(kuò)展分區(qū)繼續(xù)切出來(lái)的分區(qū),就被稱為邏輯分區(qū)(logical partition)。
上圖中表示的分區(qū)在Linux中的設(shè)備文件名如下:
P1:/dev/hda1
P2:/dev/hda2
L1:/dev/hda5
L2:/dev/hda6
L3:/dev/hda7
L4:/dev/hda8
L5:/dev/hda9
仔細(xì)看看,發(fā)現(xiàn)設(shè)備文件名沒(méi)有/dev/hda3和/dev/hda4,為什么呢?
因?yàn)榍八膫€(gè)都是保留的,所以邏輯分區(qū)的設(shè)備名稱一定是從5開(kāi)始。
關(guān)于主分區(qū),擴(kuò)展分區(qū)與邏輯分區(qū)的特性我們做個(gè)簡(jiǎn)單的定義。
1. 主分區(qū)與擴(kuò)展分區(qū)最多可以有四個(gè)(硬盤本身的限制)。 2. 擴(kuò)展分區(qū)最多只能有一個(gè)(操作系統(tǒng)的限制)。 3. 邏輯分區(qū)是由擴(kuò)展分區(qū)繼續(xù)切割出來(lái)的分區(qū)。 4. 能夠被格式化后作為數(shù)據(jù)訪問(wèn)的分區(qū)為主分區(qū)與邏輯分區(qū)。擴(kuò)展分區(qū)無(wú)法格式化。 5. 邏輯分區(qū)的個(gè)數(shù)上限與操作系統(tǒng)有關(guān)。在Linux中,IDE硬盤最多有59個(gè)邏輯分區(qū)(5-63),SATA硬盤則有11個(gè)邏輯分區(qū)(5-15)。分區(qū)是個(gè)以柱面為單位的“連續(xù)”磁盤空間,且擴(kuò)展分區(qū)又是個(gè)類似獨(dú)立的磁盤空間。
由于第一個(gè)扇區(qū)所記錄的分區(qū)表與MBR是這么重要,幾乎只要讀取硬盤都會(huì)先由這個(gè)扇區(qū)先讀取。
所以,如果一個(gè)硬盤的第一個(gè)扇區(qū)物理上壞掉,那個(gè)個(gè)硬盤也就沒(méi)什么用了。
例:如果我想把一塊大硬盤“暫時(shí)”分成四個(gè)分區(qū),同時(shí)還有其他的剩余容量可以讓我在未來(lái)的時(shí)候進(jìn)行規(guī)劃,我能不能分區(qū)出四個(gè)主分區(qū)?
如果不行,那么該怎么辦?
答:由于主分區(qū)和擴(kuò)展分區(qū)雖多只能有四個(gè),其中擴(kuò)展分區(qū)最多只能有一個(gè),這個(gè)題目想要分區(qū)出四個(gè)分區(qū)且還要預(yù)留剩余空間,所以P+P+P+P是不合適的。
因?yàn)槿绻褂玫剿膫€(gè)主分區(qū),即使硬盤還有剩余容量,因?yàn)闊o(wú)法繼續(xù)分區(qū),所以剩余容量就會(huì)被浪費(fèi)掉了。
假設(shè)你想要把所有的四條記錄都花光,可以P+P+P+E比較合適。
所以可以用的四個(gè)分區(qū)有三個(gè)主分區(qū)和一個(gè)邏輯分區(qū),剩余的容量在擴(kuò)展分區(qū)里面。
如果你要分區(qū)超過(guò)四個(gè),一定要有擴(kuò)展分區(qū),而且必須把所有剩下的空間都分配給擴(kuò)展分區(qū),然后再以擴(kuò)展分區(qū)來(lái)規(guī)劃擴(kuò)展分區(qū)的空間。
另外,考慮到磁盤的連續(xù)性,一般建議把擴(kuò)展分區(qū)的柱面號(hào)碼分配在最后面的柱面內(nèi)。
例:我能不能僅分出一個(gè)主分區(qū)和一個(gè)擴(kuò)展分區(qū)?
答:當(dāng)然可以。這是早起Windows操作系統(tǒng)慣用的手法。
例:假如我的PC有兩塊SATA硬盤,我想在第二塊硬盤分出6個(gè)可用的分區(qū)(可以被格式化來(lái)訪問(wèn)數(shù)據(jù)之用),
那么每個(gè)分區(qū)在Linux系統(tǒng)下的設(shè)備文件名為什么?分區(qū)類型是什么?
答:由于P+E最多只能四個(gè),其中E最多只能一個(gè)。
現(xiàn)在題目要求六個(gè)可用的分區(qū),所以不可能分出四個(gè)P。
one: 將前四號(hào)全部用完(P+P+P+E)。
實(shí)際可用的是:
/dev/sdb1,/dev/sdb2,/dev/sdb3,/dev/sdb5,/dev/sdb6,/dev/sdb7
/dev/sdb4這個(gè)擴(kuò)展分區(qū)本身僅是提供給邏輯分區(qū)創(chuàng)建使用。
two:使用前四號(hào)中的部分(P+E)。
注意到了嗎?
因?yàn)?-4是保留給主或擴(kuò)展分區(qū)的,因此第一個(gè)邏輯分區(qū)一定是由5號(hào)開(kāi)始,
所以/dev/sdb3,/dev/sdb4就會(huì)被保留下來(lái)沒(méi)有用到。
由上面的說(shuō)明我們知道,BIOS和MBR都是硬件本身會(huì)支持的功能,至于BootLoader是操作系統(tǒng)安裝在MBR上的一套軟件。
由于MBR僅僅有446bytes,因此這個(gè)引導(dǎo)加載程序是十分小而完美的。
這個(gè)Boot Loader提供的功能有:
上述第三點(diǎn)說(shuō)明,你的計(jì)算機(jī)系統(tǒng)里面可能具有兩個(gè)以上的引導(dǎo)加載程序。
有可能嗎?我們的硬盤不是只有一個(gè)MBR嗎?
完全有可能,因?yàn)橐龑?dǎo)加載程序除了可以安裝在MBR之外,還可以安裝在每個(gè)分區(qū)的引導(dǎo)扇區(qū)(boot sector)。
分區(qū)還有個(gè)別的啟動(dòng)扇區(qū),這個(gè)特色才能造就“多重引導(dǎo)”的功能。
我們舉一個(gè)例子來(lái)說(shuō),假設(shè)你的個(gè)人計(jì)算機(jī)只有一塊硬盤,里面分成四個(gè)分區(qū),其中第一、二分區(qū)分別安裝了Windows和Linux,
你要如何在開(kāi)機(jī)的時(shí)候選擇用Windows還是Linux開(kāi)機(jī)呢?
假設(shè)MBR內(nèi)安裝的是可同時(shí)識(shí)別Windows、Linux操作系統(tǒng)的引導(dǎo)加載程序,那么整個(gè)流程如圖所示:
在上圖中我們可以發(fā)現(xiàn),MBR的引導(dǎo)加載程序提供兩個(gè)菜單,
菜單一(M1)可以直接加載Windows的內(nèi)核文件來(lái)開(kāi)機(jī),
菜單二(M2)則是將引導(dǎo)加載工作交給第二個(gè)分區(qū)的啟動(dòng)扇區(qū)(boot sector)。
當(dāng)用戶在開(kāi)機(jī)的時(shí)候選擇菜單二時(shí),那么整個(gè)引導(dǎo)加載工作就會(huì)交給第二分區(qū)的引導(dǎo)加載程序了。
當(dāng)?shù)诙€(gè)引導(dǎo)加載程序啟動(dòng)后,該引導(dǎo)加載程序內(nèi)僅有一個(gè)開(kāi)機(jī)菜單,因此就能夠使用Linux的內(nèi)核文件來(lái)開(kāi)機(jī)。
這就是多重引導(dǎo)的工作情況。
我們將上圖做個(gè)總結(jié):
1) 每個(gè)分區(qū)都有自己的啟動(dòng)扇區(qū)(boot sector)。
2) 圖中的系統(tǒng)分區(qū)為第一及第二分區(qū)。
3) 實(shí)際可開(kāi)機(jī)的內(nèi)核文件是放置到各分區(qū)的。
4) Loader只會(huì)認(rèn)識(shí)自己的系統(tǒng)分區(qū)內(nèi)的可開(kāi)機(jī)內(nèi)核文件以及其他loader而已。
5) Loader可以直接指向或者是間接把管理權(quán)轉(zhuǎn)交給另一個(gè)管理程序。
現(xiàn)在想想,為什么別人說(shuō):如果要安裝多重引導(dǎo),最好先安裝Windows在安裝Linux。
1)
Linux在安裝的時(shí)候你可以選擇將引導(dǎo)加載程序安裝在MBR或個(gè)別分區(qū)的啟動(dòng)扇區(qū),而且Linux的loader可以手動(dòng)設(shè)置菜單,
所以你可以在Linux的boot loader里面加入Windows開(kāi)機(jī)的選項(xiàng)。
2)
Windows在安裝的時(shí)候,它的安裝程序會(huì)主動(dòng)覆蓋MBR以及自己所在分區(qū)的啟動(dòng)扇區(qū),你沒(méi)有選擇的機(jī)會(huì),
而且他沒(méi)有讓我們自己選擇菜單的功能。
所以,如果先裝Linux在安裝Windows的話,那MBR的引導(dǎo)加載程序就只會(huì)有Windows的選項(xiàng),
而不會(huì)有Linux的選項(xiàng)(因?yàn)樵驹贛BR內(nèi)的Linux的引導(dǎo)加載程序就會(huì)被覆蓋掉)。
那需要重新安裝一次Linux嗎?
當(dāng)然不需要,你只需要用各種方法來(lái)處理MBR的內(nèi)容即可,比如spfdisk軟件或者Linux的救援模式來(lái)挽救MBR即可。
資料來(lái)源:
1.《鳥哥的私房菜》
注:部分內(nèi)容有本人刪改。
總結(jié)
以上是生活随笔為你收集整理的Linux磁盘分区以及多重引导简述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 腾讯视频云签到(2022-5-29更新)
- 下一篇: 红帽linux端口关闭,科学网—RHEL