Linux硬碟掛載與磁碟分割槽基礎(二)(物理卷、卷組、邏輯卷)

没有星星的夏季發表於2024-12-07

  上篇介紹了分割槽,都是建立在硬碟的基礎之上,但是問題出現了,硬碟的空間是固定的,一般的,無論我們的電腦還是伺服器,都可以容納多塊硬碟,甚至還可以使用USB等介面接入額外的儲存,這樣,如果都是用單個硬碟的分割槽來管理,比如擴容,非常不方便,有沒有辦法把多個硬碟視為一個整理,當做一塊硬碟來管理分割槽呢?這就是本篇說下物理卷、卷組、邏輯卷,也就是LVM(邏輯卷管理)。

  現簡單說說基本概念:

  物理卷(Physical Volume):從理解上說,無論是硬碟還是分割槽等,都是儲存的容器,但是他們不是一類,所以我們需要一個統一,這就是物理卷,所以當你看到物理卷這個概念的時候,你可以把它就理解成儲存空間即可,至於是什麼不重要。

  卷組(Volume Group):有了多個物理卷,我們將他們組合成一個整體,它就是卷組,我們可以把卷組視為一塊邏輯上的硬碟。

  邏輯卷(Logical Volume):有了卷組這個邏輯硬碟,就可以對它進行分割槽掛載使用了,這個分割槽就是邏輯卷。

  所以,LVM的過程是這樣的:對每個硬碟或者分割槽建立物理卷,多個物理卷組成卷組,對卷組進行分割槽就有了邏輯卷,將邏輯卷格式化掛載使用。

  用圖來說明:

  Linux硬碟掛載與磁碟分割槽基礎(二)(物理卷、卷組、邏輯卷)

  下面我們開始演示:

  首先,我們這裡有兩塊硬碟:/dev/sdb/dev/sdc

  Linux硬碟掛載與磁碟分割槽基礎(二)(物理卷、卷組、邏輯卷)

  可以看到,他們都是10G,如果但使用硬碟的分割槽,我們無法建立一個15G空間的分割槽系統,但是使用邏輯卷卻可以,下面我們一步步演示。

  建立物理卷

  為了得到15G的空間,我們可以對兩塊硬碟直接建立物理卷,但是方便演示,我們這邊這麼做:  

    1、對/dev/sdb直接建立物理卷,也就是10G
    2、對/dev/sdc建立一個5G的分割槽/dev/sdc1,然後將分割槽做成物理卷,也就是5G
    3、對於/dev/sdb剩餘空間,我們建立分割槽/dev/sdc2,後續可以用來擴容

  對/dev/sdb直接建立物理卷,執行命令:sudo pvcreate /dev/sdb

  Linux硬碟掛載與磁碟分割槽基礎(二)(物理卷、卷組、邏輯卷)

  對/dev/sdc建立兩個5G的分割槽,這裡我直接使用fdisk來建立(建立過程參考上一篇),執行:sudo fdisk /dev/sdc

  Linux硬碟掛載與磁碟分割槽基礎(二)(物理卷、卷組、邏輯卷)

  注:我這裡採用的是fdisk來分割槽,如果採用parted來分割槽,這個備註可以跳過:  

    使用fdisk建立了分割槽,建議將分割槽型別改成Linux LVM,雖然不修改也沒問題,但是可以方便後續管理,否則哪天接手的同學沒注意,對分割槽進行了一些危險操作就尷尬了。
    修改分割槽型別操作過程如下圖:

  Linux硬碟掛載與磁碟分割槽基礎(二)(物理卷、卷組、邏輯卷)

  注:分割槽建立好了,可能需要重啟,或者使用sudo partprobe更新分割槽表

  接著執行下面兩個命令建立物理卷:  

    sudo pvcreate /dev/sdc1
    sudo pvcreate /dev/sdc2

  然後我們可以採用pvscan(列出所有的物理卷)或者pvdisplay(列印所有物理卷的基本資訊)來檢視:

  Linux硬碟掛載與磁碟分割槽基礎(二)(物理卷、卷組、邏輯卷)

  建立卷組

  我們對/dev/sdb/dev/sdc1建立卷組,後續將/dev/sdc2加入卷組進行擴容。

  首先,我們介紹一個概念:

  物理擴充套件(Physical Extend,PE):我們將多個物理卷拼在一起,但是他們的大小不一樣,所以我們需要有一個統一,就是定義一個基本單元,然後每個物理卷按照這個基本單元來劃分有多個,最終決定這個物理卷的大小,而這個基本單元就是PE,預設4M,比如一個101M的分割槽,可以劃分25個PE,那麼也就是說可用的空間就是100M了。PE是卷組儲存資料的最小單元。注意,PE大小在卷組建立時指定,一定卷組建立,PE大小將不可改變。

  我們執行下面的命令建立卷組:  

    # 如果不指定PE,那麼直接執行,vg-test是卷組名稱,/dev/sdb和/dev/sdc1是物理卷名
    sudo vgcreate test-vg /dev/sdb /dev/sdc1
    # 如果要指定PE,可以使用-s引數,例如:
    sudo vgcreate -s 8M test-vg /dev/sdb /dev/sdc1

  建立完成,我們可以使用sudo vgscan列出所有的卷組

  Linux硬碟掛載與磁碟分割槽基礎(二)(物理卷、卷組、邏輯卷)

  或者透過sudo vgdisplay test-vg來檢視卷組資訊

  Linux硬碟掛載與磁碟分割槽基礎(二)(物理卷、卷組、邏輯卷)

  建立邏輯卷

  首先,這裡也有個概念:

  邏輯擴充(Logical Extend,LE):它類似於卷組的PE,只不過它是邏輯卷分配的最小單元,在同一卷組中,它決定於卷組的PE,且每個LE與卷組中的一個PE對應,大小相同。

  有了卷組,我們可以建立邏輯卷:

    # 透過指定PE個數來建立,使用-l引數指定PE個數,推薦使用這個方式
    sudo lvcreate -l 3838 -n test-vg-test-lv test-vg
    # 透過指定大小來建立,使用-L引數指定邏輯卷的大小,單位為:kKmMgGtT
    sudo lvcreate -L 15G -n test-vg-test-lv test-vg

  上面兩種方式推薦採用指定PE個數的方式,因為更直觀,只需換算一下就好了,採用其它方式指定最終也是轉換為PE個數的方式。

  建立之後,我們可以採用sudo lvscan檢視

  Linux硬碟掛載與磁碟分割槽基礎(二)(物理卷、卷組、邏輯卷)

  或者使用sudo lvdisplay /dev/test-vg/test-vg-test-lv直接列印邏輯卷的基本資訊,注意邏輯卷的名稱:

  Linux硬碟掛載與磁碟分割槽基礎(二)(物理卷、卷組、邏輯卷)

  掛載

  到這裡,邏輯卷就建立完成了,我們現在可以掛載使用  

    # 建立掛載目錄
    sudo mkdir /mnt/test
    # 格式化
    sudo mkfs.xfs /dev/test-vg/test-vg-test-lv
    # 掛載
    sudo mount /dev/test-vg/test-vg-test-lv /mnt/test

  Linux硬碟掛載與磁碟分割槽基礎(二)(物理卷、卷組、邏輯卷)

  接下來就可以正常使用了,我們可以透過df -h命令檢視掛載情況

  Linux硬碟掛載與磁碟分割槽基礎(二)(物理卷、卷組、邏輯卷)

  還可以透過sudo lsblk命令檢視硬碟分割槽的使用情況

  Linux硬碟掛載與磁碟分割槽基礎(二)(物理卷、卷組、邏輯卷)

  擴容

  到這裡,我們已經透過將兩個10G大小的硬碟,建立出來了15G的檔案系統,接著我們繼續看看擴容。

  首先,我們還有個/dev/sdc2分割槽沒有使用,前面我們已經對它建立物理卷,接下來我們把它加入到卷組:sudo vgextend test-vg /dev/sdc2

  Linux硬碟掛載與磁碟分割槽基礎(二)(物理卷、卷組、邏輯卷)

  可以看到,空間增加了5G,接著我們可以把這個5G的空間加到我們已經建立的邏輯卷中去。  

    # 可以使用-l指定PE個數的方式,使用+號,表示增加容量,不使用表示擴容後的大小
    sudo lvextend -l +1279 /dev/test-vg/test-vg-test-lv
    # 也可以使用-L指定邏輯卷的大小,使用+號,表示增加容量,不使用表示擴容後的大小
    sudo lvextend -l +5G /dev/test-vg/test-vg-test-lv

  Linux硬碟掛載與磁碟分割槽基礎(二)(物理卷、卷組、邏輯卷)

  同分割槽一樣,我們現在只是擴容了邏輯卷,想讓它可以可用,我們需要調整分割槽大小,注意,切記格式化,否則資料將會丟失:  

    # 如果是ext4,使用resize2fs命令,後面引數是分割槽
    sudo resize2fs /dev/test-vg/test-vg-test-lv
    # 如果是xfs,使用xfs_growfs命令,後面引數是掛載點
    sudo xfs_growfs /dev/test-vg/test-vg-test-lv

  Linux硬碟掛載與磁碟分割槽基礎(二)(物理卷、卷組、邏輯卷)

  基本命令

  到這裡,物理卷、卷組、邏輯卷相關基礎就說完了,這裡總結一下命令,每個命令有很多引數,需要自行去嘗試:

物理卷 卷組 邏輯卷 說明
pvcreate vgcreate lvcreate 建立物理卷、卷組、邏輯卷
pvdisplay vgdisplay lvdisplay 列印物理卷、卷組、邏輯卷的基本資訊
pvremove vgremove lvremove 刪除物理卷、卷組、邏輯卷
pvscan vgscan lvscan 掃描物理卷、卷組、邏輯卷(只有名稱等資訊)
vgextend lvextend 給卷組、邏輯卷擴容

  總結

  分割槽相關的基礎就說到這裡吧,這裡是入門,比較淺顯的,深入裡面還有很多細節,總之,系統安裝前,一定要做好磁碟分割槽的規劃,否則後續很麻煩。

相關文章