磁碟分割槽以及Linux目錄掛載詳解

阿豪聊乾貨發表於2017-04-08

一、背景

    一直以來,對於磁碟的分割槽以及Linux目錄掛載的概念都不是很清晰,現在趁著春暖花開週末在家沒事就研究了下它們,現在來分享我的理解。

二、概念詳解

  1.磁碟分割槽

      磁碟分割槽是把物理的磁碟空間按照自己的要求分成N個不同大小的區域,以便OS更好更高效的進行檔案儲存管理。像我們經常使用的Windows系統中的C、D、E、F盤...等碟符實際就是一個個的磁碟分割槽。分割槽與作業系統沒有任何關係,因為我們對磁碟分割槽可以在安裝作業系統之前進行。

      磁碟分割槽型別:主分割槽、擴充套件分割槽(N個邏輯分割槽的集合)。

      硬碟組成:硬碟主引導扇區+主分割槽+擴充套件分割槽

  2.硬碟主要組成部分:磁頭、磁碟面、磁軌、扇區、柱面

     

  3. 硬碟主引導扇區

    以機械硬碟為例,其中硬碟主引導扇區位於硬碟的 0磁頭0柱面1扇區(也就是所謂的Boot Sector),它又分為:硬碟主開機記錄(MBR) + 硬碟分割槽表(DPT),共512個位元組,其中MBR446位元組、分割槽表64位元組以及2位元組的結束標誌。

  4. 硬碟主開機記錄(MBR)

     位於磁碟最前邊的一段引導(Loader)程式碼。它負責磁碟作業系統(DOS)對磁碟進行讀寫時分割槽合法性的判別、分割槽引導資訊的定位,它由磁碟作業系統(DOS)在對硬碟進行初始化時產生的。

  5.作業系統啟動過程簡述

    電腦開機時,作業系統通過BIOS(BIOS實際是一個基礎輸入輸出系統,主要用於和計算機硬體打交道)程式把Boot Sector讀入記憶體,然後執行其中的MBR,這個時候BIOS是把啟動交給MBR控制, MBR在4個分割槽表中搜尋標緻為活動的分割槽,找到以後把活動分割槽的第一扇區讀入記憶體,然後開始執行它,以此來執行特定系統的啟動程式(LILO、GRUB、NT Loader),此時是作業系統的載入程式來控制系統的啟動。接著作業系統進行一系列的初始化工作,最後把系統交給系統核心進行管理,就完成了開機啟動的過程。

  6.主分割槽、擴充套件分割槽、邏輯分割槽 

     作業系統必須安裝在主分割槽上,因為MBR中記錄著主分割槽資訊,系統啟動的時候會到主分割槽來查詢作業系統引導檔案,否則系統將無法啟動。因為磁碟分割槽表一共64個位元組,並且每個主分割槽的分割槽資訊佔16個位元組,所以一個磁碟最多能有4個主分割槽。那麼問題來了,我們想要更多的分割槽怎麼辦呢?這個時候擴充套件分割槽的作用就來了,把最後一個主分割槽作為擴充套件分割槽,再在這個分割槽下分割出多個邏輯分割槽,擴充套件分割槽實際上是一個類似容器的東西。擴充套件分割槽並不是一個真實存在的分割槽,它只是記憶體管理連結串列中的一個指標,指示出哪一塊區域是擴充套件分割槽。又因為這些擴充套件分割槽內的分割槽實際上都是在一個分割槽內,只是邏輯上分開,所以叫做邏輯分割槽。但這對於使用者來說看起來系統中有很多分割槽。

  7.linux磁碟命名方式

     IDE硬碟--->hda、hdb、hdc、hdd 

     SATA硬碟--->sda、sdb、sdc、sdd

  8. linux分割槽命名方式

     IDE硬碟--->hda(1-n)...hdb(1-n)...hdd(1-n)

     SATA硬碟--->sda(1-n)...sdb(1-n)...sdd(1-n)

     注:其中最後一位數字,主分割槽是1到4,而邏輯分割槽是5以上的數字。

  9.Linux檔案系統結構

     Linux和Windows系統的檔案系統不同,它是樹形結構的檔案系統,其中/是系統的根目錄,其他所有目錄都是它的子節點,一般該目錄下掛載的是一個主分割槽。而且無論什麼裝置對於linux系統來說都是一個檔案 。而且在linux系統中,我們看不到碟符的概念,就連分割槽的概念都被淡化了,分割槽在linux系統中也和其他裝置一樣被當成了檔案對待。那麼也就是說,我們要想對一個磁碟分割槽進行操作,必須通過檔案進行。

  10.linux掛載

     掛載就是把檔案目錄和分割槽連線起來,與windows下碟符和分割槽進行對映的關係一樣,不同的是windows是把分割槽對映到一個碟符,而linux是把一個分割槽對映到一個目錄。掛載完成以後,我們在linux系統中對掛載的目錄的任何操作都是對對應的磁碟分割槽的操作,例如檔案儲存當然也是儲存到對應的磁碟分割槽上。 其中/根目錄必須掛載在主分割槽上,否則啟動系統的時候會由於找不到啟動檔案而啟動失敗。

  11.相關常用命令

    df -Th 檢視當前系統的分割槽情況

    fdisk -l 檢視當前系統分割槽資訊詳情

    mount 掛載分割槽

    unmount 解除安裝分割槽

  12.Linux分割槽掛載點介紹

  /boot  啟動分割槽,一般設定100M-200M,boot目錄包含了作業系統的核心和在啟動系統過程中所要用到的檔案

  /     根分割槽,所有未指定掛載點的目錄都會放到這個掛載點下

  /home 使用者目錄,一般每個使用者100M左右,特殊用途,比如放大檔案也可再加上G。分割槽大小取決於使用者多少。對於多使用者使用的電腦,建議把/home獨立出來,而且還可以很好地控制普通使用者許可權等,比如對使用者或者使用者組實行磁碟配額限制、使用者許可權訪問等.

  /tmp   臨時檔案目錄,一般設定1-5G,方便載入ISO映象檔案使用,對於多使用者系統或者網路伺服器來也有獨立掛載的必要。臨時檔案目錄,也是最常出現問題的目錄之一.

  /usr  系統資源,一般設定要3-15G,大部分的使用者安裝的軟體程式都在這裡。就像是Windows目錄和Program Files目錄。很多Linux家族系統有時還會把/usr/local單獨作為掛載點使用。

  /var  可變資料目錄,包含系統執行時要改變的資料。通常這些資料所在的目錄的大小是要經常變化的,系統日誌記錄也在/var/log下。一般多使用者系統或者網路伺服器要建立這個分割槽,設立這個分割槽,對系統日誌的維護很有幫助。一般設定2-3G大小,也可以把硬碟餘下空間全部分為var.

  /srv  系統服務目錄,用來存放service服務啟動所需的檔案資料目錄,不常改變。

  /opt  附加應用程式目錄,存放可選的安裝檔案,個人一般把自己下載的軟體資料存在裡面,比如Office、QQ等等.

  swap  交換分割槽,一般為記憶體2倍,最大指定2G即可

  /bin  二進位制可執行目錄,存放二進位制可執行程式,裡面的程式可以直接通過命令列呼叫,而不需要進入程式所在的資料夾

  /sbin  系統管理員命令存放目錄,存放標準系統管理員檔案

  /dev  存放裝置檔案,驅動檔案等

三、總結

     通過以上的描述,我們就很容的弄明白了磁碟分割槽以及Linux目錄掛載的概念,而且還了解到了一些別的概念比如 硬碟主引導扇區、硬碟主開機記錄(MBR)、作業系統啟動過程等等,通過這樣一點一點的基積累,我相信我們會離大神越來越近的。加油!

相關文章