linux——學習筆記(鳥哥的私房菜)——基礎文件——第二章之主機規劃與磁盤分區

第二章           主機規劃與磁盤分區

2.1 Linux與硬件的搭配

    2.1.1 認識計算機的硬件配備

         1.打遊戲:因爲現在一般的三維(3D)計算機遊戲所需要的3D光影運算太多了,所以顯示適配器與CPU資源都會被耗用的非常多! 當然就需要比較高級的配備囉,尤其是在顯示適配器、CPU(例如Intel的 I5, I7 系列的) 及主板芯片組方面的功能

            2.效能比,性價比

           3.支持度:並非所有的產品都會支持特定的操作系統,這牽涉到硬件開發商是否有意願提供適當的驅動程序之故。 因此,當我們想要購買或者是升級某些計算機組件時,應該要特別注意該硬件是否有針對您的操作系統提供適當的驅動程序

    2.1.2 選擇與Linux搭配的主機配備

            1.        Red Hat的硬件支持:https://hardware.redhat.com/?pagename=hcl

                       Open SuSE的硬件支持:http://en.opensuse.org/Hardware?LANG=en_UK

                       Linux對筆記本電腦的支持:http://www.linux-laptop.net/

                       Linux對打印機的支持:http://www.openprinting.org/

                       Linux硬件支持的中文HowTo:http://www.linux.org.tw/CLDP/HOWTO/hardware.html#hardware

   2.1.3 各硬件裝置在Linux中的檔名

         『在Linux系統中,每個裝置都被當成一個檔案來對待』 舉例來說,SATA接口的硬盤的文件名即爲/dev/sd[a-d],其中, 括號內的字母爲a-d當中的任意一個,亦即有/dev/sda, /dev/sdb, /dev/sdc, 及 /dev/sdd這四個檔案的意思

           這種中括號 [ ] 型式的表示法在後面的章節當中會使用得很頻繁,請特別留意
         另外先提出來強調一下,在Linux這個系統當中,幾乎所有的硬件裝置檔案都在/dev這個目錄內, 所以你會看到/ dev/sda, /dev/sr0等等的檔名喔   

            更多Linux核心支持的硬件裝置與檔名,可以參考如下網頁:https://www.kernel.org/doc/Documentation/devices.txt       

   2.1.4 使用虛擬機學習  

              Virtualbox 官網 (https://www.virtualbox.org)

               Virtualbox 官網教學 (https://www.virtualbox.org/manual/ch01.html)

     Fedora 教學 http://docs.fedoraproject.org/en-US/Fedora/13/html/Virtualization_Guide/ part-Virtualization-   Virtualization_Reference_Guide.html

2.2 磁盤分區               

     2.2.1 磁盤連接的方式與裝置檔名的關係

             1. 本身:SATA接口的硬盤的文件名即爲/dev/sd[a-d]        虛擬機:/dev/vd[a-p]

              早期磁盤第一個扇區裏面含有的重要信息我們稱爲MBR (Master Boot Record) 格式

             由於近年來磁盤的容量不斷擴大,造成讀寫上的一些困擾, 甚至有些大於 2TB 以上的磁盤分區已經讓某些操作系統無法存取。 因此後來又多了一個新的磁盤分區格式,稱爲 GPT (GUID partition table)! 這兩種分割格式與限制不太相同啦

     2.2.2 MSDOS(MBR) 與 GPT 磁盤分區表(partition table)

            分割表其實目前有兩種格式喔

           1.MSDOS (MBR) 分割表格式與限制         

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

  • 主要啓動記錄區(Master Boot Record, MBR):可以安裝開機管理程序的地方,有446 bytes
  • 分割表(partition table):記錄整顆硬盤分割的狀態,有64 bytes

         由於分割表所在區塊僅有64 bytes容量,因此最多僅能有四組記錄區,每組記錄區記錄了該區段的啓始與結束的磁柱號碼。 若將硬盤以長條形來看,然後將磁柱以柱形圖來看,那麼那64 bytes的記錄區段有點像底下的圖標:

磁碟分割表的作用示意圖

        假設上面的硬盤裝置檔名爲/dev/sda時,那麼這四個分割槽在Linux系統中的裝置檔名如下所示, 重點在於檔名後面會再接一個數字,這個數字與該分割槽所在的位置有關喔!

             P1:/dev/sda1           P2:/dev/sda2            P3:/dev/sda3            P4:/dev/sda4

            分割表就只有64 bytes而已,最多隻能容納四筆分割的記錄

                  其實所謂的『分割』只是針對那個64 bytes的分割表進行設定而已!

                  硬盤默認的分割表僅能寫入四組分割信息

                  這四組分割信息我們稱爲主要(Primary)或延伸(Extended)分割槽

                  分割槽的最小單位『通常』爲磁柱(cylinder)

                  當系統要寫入磁盤時,一定會參考磁盤分區表,才能針對某個分割槽進行數據的處理

           爲啥要分割啊?          

  1.           數據的安全性:
                    因爲每個分割槽的數據是分開的! 所以,當你需要將某個分割槽的數據重整時,例如你要將計算機中Windows的C槽重新安裝一次系統時, 可以將其他重要數據移動到其他分割槽,例如將郵件、桌面數據移動到D槽去,那麼C槽重灌系統並不會影響到D槽! 所以善用分割槽,可以讓妳的數據更安全。
     
  2.           系統的效能考慮:
                   由於分割槽將數據集中在某個磁柱的區段,例如上圖當中第一個分割槽位於磁柱號碼1~100號,如此一來當有數據要讀取自該分割槽時, 磁盤只會搜尋前面1~100的磁柱範圍,由於數據集中了, 將有助於數據讀取的速度與效能! 所以說,分割是很重要的!

     既然第一個扇區所在的分割表只能記錄四筆數據, 那我可否利用額外的扇區來記錄更多的分割信息?  可以的

           https://en.wikipedia.org/wiki/Extended_boot_record

 

磁碟分割表的作用示意圖

          如上圖右下方那個區塊有繼續分割出五個分割槽, 這五個由延伸分割繼續切出來的分割槽,就被稱爲邏輯分割槽(logical partition)。 同時注意一下,由於邏輯分割槽是由延伸分割繼續分割出來的,所以他可以使用的磁柱範圍就是延伸分割所設定的範圍喔! 也就是圖中的101~400啦!

               同樣的,上述的分割槽在Linux系統中的裝置檔名分別如下:

  • P1:/dev/sda1
  • P2:/dev/sda2
  • L1:/dev/sda5
  • L2:/dev/sda6
  • L3:/dev/sda7
  • L4:/dev/sda8
  • L5:/dev/sda9

            仔細看看,怎麼裝置檔名沒有/dev/sda3與/dev/sda4呢? 因爲前面四個號碼都是保留給Primary或Extended用的嘛! 所以邏輯分割槽的裝置名稱號碼就由5號開始了! 這在 MBR 方式的分割表中是個很重要的特性,不能忘記喔!

    MBR 主要分割、延伸分割與邏輯分割的特性我們作個簡單的定義囉:

  • 主要分割與延伸分割最多可以有四筆(硬盤的限制)
  • 延伸分割最多只能有一個(操作系統的限制)
  • 邏輯分割是由延伸分割持續切割出來的分割槽;
  • 能夠被格式化後,作爲數據存取的分割槽爲主要分割與邏輯分割。 延伸分割無法格式化;
  • 邏輯分割的數量依操作系統而不同,在Linux系統中SATA硬盤已經可以突破63個以上的分割限制;

            事實上,分割是個很麻煩的東西,因爲他是以磁柱爲單位的『連續』磁盤空間, 且延伸分割又是個類似獨立的磁盤空間,所以在分割的時候得要特別注意。 我們舉底下的例子來解釋一下好了:

          例題:在Windows操作系統當中,如果你想要將D與E槽整合成爲一個新的分割槽,而如果有兩種分割的情況如下圖所示, 圖中的特殊顏色區塊爲D與E槽的示意,請問這兩種方式是否均可將D與E整合成爲一個新的分割槽?

磁碟空間整合示意圖

 

  • 上圖可以整合:因爲上圖的D與E同屬於延伸分割內的邏輯分割,因此只要將兩個分割槽刪除,然後再重新建立一個新的分割槽, 就能夠在不影響其他分割槽的情況下,將兩個分割槽的容量整合成爲一個。
     
  • 下圖不可整合:因爲D與E分屬主分割與邏輯分割,兩者不能夠整合在一起。 除非將延伸分割破壞掉後再重新分割。 但如此一來會影響到所有的邏輯分割槽,要注意的是:如果延伸分割被破壞,所有邏輯分割將會被刪除。 因爲邏輯分割的信息都記錄在延伸分割裏面嘛!

      MBR 分割表除了上述的主分割、延伸分割、邏輯分割需要注意之外,由於每組分割表僅有 16bytes 而已,因此可紀錄的信息真的是相當有限的! 所以,在過去 MBR 分割表的限制中經常可以發現如下的問題:

         2.GUID partition table, GPT 磁碟分割表

           MBR 僅使用第一個 512bytes 區塊來紀錄不同, GPT 使用了 34 個 LBA 區塊來紀錄分割信息! 同時與過去 MBR 僅有一的區塊,被幹掉就死光光的情況不同, GPT 除了前面 34 個 LBA 之外,整個磁盤的最後 33 個 LBA 也拿來作爲另一個備份! 這樣或許會比較安全些吧      

 

             現在 GPT 分割默認可以提供多達 128 筆紀錄,而在 Linux 本身的核心裝置紀錄中,針對單一磁盤來說,雖然過去最多隻能到達 15 個分割槽,不過由於 Linux kernel 透過 udev 等方式的處理,現在 Linux 也已經沒有這 個限制在了! 此外,GPT 分割已經沒有所謂的主、延伸、邏輯分割的概念,既然每筆紀錄都可以獨立存在, 當然每個都可以視爲是主分割! 每一個分割都可以拿來格式化使用喔

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

  • 操作系統無法抓取到 2.2T 以上的磁盤容量!
  • MBR 僅有一個區塊,若被破壞後,經常無法或很難救援。
  • MBR 內的存放開機管理程序的區塊僅 446bytes,無法容納較多的程序代碼
  • LBA0 (MBR 兼容區塊)

    與 MBR 模式相似的,這個兼容區塊也分爲兩個部份,一個就是跟之前 446 bytes 相似的區塊,儲存了第一階段的開機管理程序! 而在原本的分割表的紀錄區內,這個兼容模式僅放入一個特殊標誌的分割,用來表示此磁盤爲 GPT 格式之意。 而不懂 GPT 分割表的磁盤管理程序, 就不會認識這顆磁盤,除非用戶有特別要求要處理這顆磁盤,否則該管理軟件不能修改此分割信息,進一步保護了此磁盤喔!

  • LBA1 (GPT 表頭紀錄)

    這個部份紀錄了分割表本身的位置與大小,同時紀錄了備份用的 GPT 分割 (就是前面談到的在最後 34 個 LBA 區塊) 放置的位置, 同時放置了分割表的檢驗機制碼 (CRC32),操作系統可以根據這個檢驗碼來判斷 GPT 是否正確。 若有錯誤,還可以透過這個紀錄區來取得備份的 GPT(磁盤最後的那個備份區塊) 來恢復 GPT 的正常運作!

  • LBA2-33 (實際紀錄分割信息處)

    從 LBA2 區塊開始,每個 LBA 都可以紀錄 4 筆分割紀錄,所以在默認的情況下,總共可以有 4*32 = 128 筆分割紀錄喔! 因爲每個 LBA 有 512bytes,因此每筆紀錄用到 128 bytes 的空間,除了每筆紀錄所需要的標識符與相關的紀錄之外,GPT 在每筆紀錄中分別提供了 64bits 來記載開始/結束的扇區號碼,因此,GPT 分割表對於單一分割槽來說, 他的最大容量限制就會在『 264 * 512bytes = 263 * 1Kbytes = 233*TB = 8 ZB 』,要注意 1ZB = 230TB 啦! 你說有沒有夠大了?

         1.BIOS 搭配 MBR/GPT 的開機流程   

             這個BIOS就是在開機的時候,計算機系統會主動執行的第一個程序了!

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

           這個開機管理程序的目的是在加載(load)核心檔案, 由於開機管理程序是操作系統在安裝的時候所提供的,所以他會認識硬盤內的文件系統格式,因此就能夠讀取核心檔案, 然後接下來就是核心檔案的工作, 開機管理程序與 BIOS 也功成圓滿,將之後的工作就交給大家所知道的操作系統啦

             簡單的說,整個開機流程到操作系統之前的動作應該是這樣的:

  1. BIOS:開機主動執行的韌體,會認識第一個可開機的裝置;
  2. MBR:第一個可開機裝置的第一個扇區內的主要啓動記錄區塊,內含開機管理程序;
  3. 開機管理程序(boot loader):一支可讀取核心檔案來執行的軟件;
  4. 核心檔案:開始操作系統的功能...

         2.UEFI BIOS 搭配 GPT 開機的流程

           由於 UEFI 已經克服了 BIOS 的 1024 磁柱的問題,因此你的開機管理程序與核心可以放置在磁盤開始的前 2TB 位置內即可! 加上之前提到的 BIOS boot 以及 UEFI 支持的分割槽,基本上你的 /boot 目錄幾乎都是 /dev/sda3 之後的號碼了! 這樣開機還是沒有問題的! 所以要注意喔! 與以前熟悉的分割狀況已經不同, /boot 不再是 /dev/sda1 囉! 很有趣吧! 

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

      2.2.4 Linux安裝模式下,磁盤分區的選擇(極重要)

             1.目錄樹結構:

                 Linux內的所有數據都是以檔案的形態來呈現的,所以囉,整個Linux系統最重要的地方就是在於目錄樹架構。 所謂的目錄樹架構(directory tree)就是以根目錄爲主,然後向下呈現分支狀的目錄結構的一種檔案架構。 所以,整個目錄樹架構最重要的就是那個根目錄(root directory),這個根目錄的表示方法爲一條斜線『/』, 所有的檔案都與目錄樹有關

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

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

2.3 安裝Linux前的規劃

      2.3.1 選擇適當的distribution

      2.3.2 主機的服務規劃與硬件的關係

      2.3.3 主機硬盤的主要規劃

      2.3.4 鳥哥的兩個實際案例

 

 

 

 

 

 

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