首頁 > 軟體

Linux系統入門學習:硬碟分割區的陷阱及應對

2020-06-16 18:07:20

  之所以想到寫這篇,是因為本人在折騰Linux系統的過程中,有多次掉入硬碟分割區的陷阱的經歷。最近幾天,再一次掉入坑中,折騰了兩天才從坑中爬出來。經過多方查詢資料,終於弄明白了硬碟分割區的一些概念。下面將其記錄下來,以警示來者。

  說起我自己掉坑的經歷,無不與WinXP和Linux的激烈碰撞有關。多年前,我就開始在一台電腦上同時安裝WinXP和Linux,只要遵守先安裝WinXP再安裝Linux的順序,就不會出問題,Linux的安裝程式會自動識別多系統,安裝完成後可順利啟動多系統。有一天,我覺得單用Linux就夠了,於是就格了整個硬碟安裝了Linux。又有一天,我覺得還是要用WinXP,於是就重新安裝WinXP(不要對我說虛擬機器,多年前我的電腦還只有256M記憶體,虛擬機器根本跑不動),結果發現,WinXP的安裝程式沒辦法對硬碟進行分割區了。這個坑是由Linux中的LVM引起的,WinXP識別不了LVM分割區,那個時代的WinPE、DOS工具箱中的所有工具都沒辦法識別LVM,而那時我對Linux的了解又只停留在只會在安裝系統的時候分割區,根本不知道Linux系統中還有fdisk、parted這樣的工具,所以折騰了許久才從坑裡面爬出來。多年後的現在,我又一次掉入了坑中。我工作時用的電腦是WinXP系統(天朝國情,你懂的),為了乾點私活,我又裝了個Ubuntu上去了,這兩個系統一直相安無事。直到有一天,我把Ubuntu系統又折騰掛了,於是重灌,因為在分割區的時候不小心選擇了預設的“清除整個盤並安裝Ubuntu”,然後硬碟就被整個格掉了,WinXP就沒有了。我當時想,這多大點兒事,我再裝個WinXP不就完了嗎。但是問題來了,無論我怎麼安裝,WinXP系統就是啟動不了。後來才整明白,這個坑是硬碟採用了GPT分割區引起的。那為什麼我讓Ubuntu自動分割區它就分成了GPT分割區呢?這也怪這台惠普的工作用機比較奇葩,它即支援legacy BIOS,也支援EFI,當原來WinXP存在時,它用的當然是MBR分割區(msdos分割區),所以安裝Ubuntu時就是使用的MBR分割區,而後來Ubuntu自動分割區時,它看到主機板支援EFI,就自動把硬碟整成GPT分割區了。我也是折騰了幾天才明白這個道理,最後終於在Ubuntu LiveCD的parted程式的幫助下,使用一個mklabel msdos命令把硬碟從GPT分割區更改為MBR分割區,然後再按順序安裝WinXP和Ubuntu,才算是從坑裡面爬出來。

  對於那些長期管理大型電腦房和大儲存容量的伺服器的朋友,對於硬碟分割區,他們肯定是早就做好了功課。不會像我這樣,直到碰到問題才會去學習相關的知識。對於硬碟分割區的這些知識,我總結如下(只是簡單總結,具體內容請大家自行搜素):

  1、傳統的BIOS只支援從MBR分割區的硬碟啟動。MBR分割區的分割區表儲存在硬碟的第一個磁區,而且只有64位元組,所以最多只能有四個表項。也就是說,我們只能把硬碟分為4主分割區,或者分成小於等於3個主分割區再加一個擴充套件分割區。擴充套件分割區又可以分為多個邏輯分割區。MBR分割區的優點就是簡單,大家都用,所以大家都懂的嘛,很多作業系統都可以從MBR分割區的硬碟啟動。缺點就是MBR分割區不能識別大於2T的硬碟空間,也不能有大於2T的分割區;

  2、GPT分割區的硬碟可以解決以上MBR分割區的所有缺點,它沒有4個主分割區的限制,想分幾個主分割區就可以分幾個主分割區,它可以識別大於2T的硬碟空間,每個分割區的大小也可以超過2T。但是它的缺點是需要作業系統支援。比如只有WinXP 64位元、Win Vista、Win 7和Win 8和比較新的Linux發行版支援GPT分割區的硬碟。而且,如果沒有EFI的支援的話,以上系統也只能將GPT分割區的硬碟當成資料盤,不能從GPT分割區的硬碟啟動;

  3、要從GPT分割區的硬碟啟動,則主機板使用EFI、硬碟使用GPT分割區、作業系統支援GPT和EFI這三個條件缺一不可。目前比較新的64位元Linux系統和Win8系統都是支援EFI的,所以都是需要從GPT分割區的硬碟啟動的。現在的電腦主機板已經逐漸拋棄legacy BIOS,而只支援EFI了。(像我的工作機這樣的過渡產品將越來越少。)目前很多預裝Win8的筆電的主機板幾乎都只支援EFI了。所以,學習GPT和EFI的相關知識勢在必行;

  4、以上分割區策略都是固定分割區。硬碟分割區一旦完成,則分割區的大小不可改變,如果要改變分割區的大小的話,只有重新分割區。而且由於沒有辦法把多個硬碟分到一個區,所以再怎麼分,每個分割區的大小都有限。所以我們需要一種動態分割區的東西。LVM就是這樣一個東東,它叫邏輯卷管理。使用LVM的機制是這樣的:首先把硬碟分割區或者整塊硬碟標記為一個物理卷(PV),然後再建立一個捲組(VG),把一個或多個物理捲加入捲組,最後對卷組進行分割區,每一個分割區稱為一個邏輯卷(LV)。LVM的優點就是可以隨時向捲組中新增物理捲擴充套件卷組的大小,以可以動態調整邏輯卷的大小。這在伺服器中尤其有用,比如說有一個原本有100個使用者的伺服器,其/home目錄下就會有100個使用者的主目錄,如果給他們每人分配20G的空間的話,就會佔滿一個2T的硬碟,如果這時再來100個使用者怎麼辦?如果使用LVM就可以順利解決這個問題,我們可以再加一個3T的硬碟,然後把這個硬碟加入捲組就可以擴大卷組的大小,然後再調整/home所在的邏輯卷的大小即可。LVM既可以搭配MBR使用,也可以搭配GPT使用。

  下面通過Ubuntu 14.04安裝過程中自動分割區的策略來驗證以上知識點。首先,對於只支援legacy BIOS的電腦,安裝Ubuntu時分割區選項如下:

  這時,不選擇啟動LVM的選項。安裝完作業系統後,使用parted程式檢視硬碟分割區,通過檢視/etc/fstab檔案來了解哪個分割區對應哪個檔案系統,如下圖:

  通過上面圖片中parted程式中的print命令的輸出可以看出,硬碟的分割區表型別為msdos,也就是MBR分割區。硬碟分為一個主分割區sda1和一個擴充套件分割區sda2,主分割區sda1占20.4G,擴充套件分割區sda2只有1072M,擴充套件分割區中只有一個邏輯分割區sda5。通過/etc/fstab可以看出主分割區sda1掛載到根目錄,邏輯分割區sda5為交換空間。

  上面的分割區方案是最簡單最常用的一種。下面來看看啟用LVM是什麼效果。在選擇分割區方案的介面選擇開啟LVM的選項,如下圖:

  安裝完作業系統後,還是通過parted程式和/etc/fstab來檢視硬碟的分割區及使用情況,如下圖:

  從圖中可以看出,分割區表的型別還是msdos。硬碟還是只分了一個主分割區sda1和一個擴充套件分割區sda2,但是主分割區sda1只有255M,擴充套件分割區sda2倒是有21.2G,同樣擴充套件分割區只分為一個邏輯分割區sda5,邏輯分割區sda5占用擴充套件分割區中全部的21.2G空間,而且sda5的標誌是lvm,說明該分割區被標記為一個物理卷(PV),它肯定是被加入到了一個捲組(VG)中。通過/etc/fstab檔案可以看出,主分割區sda1掛載到/boot,而根目錄和交換空間掛載的是兩個邏輯卷(LV)。

  通過LVM命令可以檢視系統中卷組、物理卷和邏輯卷的資訊,如下圖:

  通過pvs和pvdisplay命令,可以看到系統中只有一個物理卷,那就是/dev/sda5,該物理捲加入到了卷組ubuntu-vg之中。通過vgs和vgdisplay命令可以看到系統中只有一個捲組,那就是ubuntu-vg,該卷組被分為兩個邏輯卷。

更多詳情見請繼續閱讀下一頁的精彩內容http://www.linuxidc.com/Linux/2015-02/113945p2.htm


IT145.com E-mail:sddin#qq.com