歡迎光臨
每天分享高質量文章

Linux系統LVM邏輯捲工作原理

一、傳統的磁盤管理

其實在Linux操作系統中,磁盤管理機制和windows上的差不多,絕大多數都是使用MBR(Master Boot Recorder)都是通過先對一個硬碟進行分割槽,然後再將該分割槽進行檔案系統的格式化,在Linux系統中如果要使用該分割槽就將其掛載上去即可,windows的話其實底層也就是自動將所有的分割槽掛載好,然後我們就可以對該分割槽進行使用了。

但是這種傳統的磁盤管理經常會帶來很多的問題,比如說當我們使用的一個分割槽,其空間大小已經不再夠用了,這個時候我們沒有辦法通過拉伸分割槽來進行分割槽擴充,當然目前也有其他第三方的磁盤管理軟體可以進行磁盤的分割槽空間劃分,但是這樣會給我們的檔案系統造成很大的傷害,有時會導致檔案系統崩潰等問題。

對於傳統的磁盤管理如果說我們碰到當分割槽大小不足的時候,我們只能通過增加新的硬碟,然後在新的硬碟上創建分割槽,對分割槽進行格式化以後,然後將之前分割槽的所有東西都拷貝到新的分割槽裡面才行。但是新增加的硬碟是作為獨立的檔案系統存在的,原有的檔案系統並沒有得到任何的擴充,上層應用只能訪問到一個檔案系統。這樣的方式對個人的電腦來說可能還能接受,但是如果對於生產環境下的服務器來說,這是不可接受的。

因為如果要把一個分割槽的內容都拷貝到另一個分割槽上去,勢必要首先卸載掉之前的那個分割槽,然後*對整個分割槽進行拷貝,如果服務器上運行著一個重要的服務,比如說WWW或者FTP,其要求是 7*24 小時運行正常的,那麼卸載掉分割槽這是不可想象的,同時如果該分割槽儲存的內容非常非常的多,那麼在對分割槽進行轉移時時間可能會耗費很久,所以,這個時候我們就會受到傳統磁盤管理的限制,因為其不能夠進行動態的磁盤管理。因此,為瞭解決這個問題,LVM技術就誕生了!!!

 

二、LVM的磁盤管理

正是因為傳統的磁盤管理不能對我們的磁盤空間進行動態的管理,因此就誕生出了LVM這個技術,那麼LVM到底是什麼呢?它又是怎麼對磁盤進行管理的呢?

LVM(Logical volume Manager)是邏輯捲管理的簡稱。它是Linux環境下對磁盤分割槽進行管理的一種機制。現在不僅僅是Linux系統上可以使用LVM這種磁盤管理機制,對於其它的類UNIX操作系統,以及windows操作系統都有類似與LVM這種磁盤管理軟體。

LVM的工作原理其實很簡單,它就是通過將底層的物理硬碟抽象的封裝起來,然後以邏輯捲的方式呈現給上層應用。在傳統的磁盤管理機制中,我們的上層應用是直接訪問檔案系統,從而對底層的物理硬碟進行讀取,而在LVM中,其通過對底層的硬碟進行封裝,當我們對底層的物理硬碟進行操作時,其不再是針對於分割槽進行操作,而是通過一個叫做邏輯捲的東西來對其進行底層的磁盤管理操作。比如說我增加一個物理硬碟,這個時候上層的服務是感覺不到的,因為呈現給上次服務的是以邏輯捲的方式。

LVM最大的特點就是可以對磁盤進行動態管理。因為邏輯捲的大小是可以動態調整的,而且不會丟失現有的資料。我們如果新增加了硬碟,其也不會改變現有上層的邏輯捲。作為一個動態磁盤管理機制,邏輯捲技術大大提高了磁盤管理的靈活性!!!

 

三、LVM的原理

要想理解好LVM的原理,我們必須首先要掌握4個基本的邏輯捲概念。

①PE  (Physical Extend)  物理拓展

②PV  (Physical Volume)  物理捲

③VG  (Volume Group)  捲組

④LV  (Logical Volume)  邏輯捲

我們知道在使用LVM對磁盤進行動態管理以後,我們是以邏輯捲的方式呈現給上層的服務的。所以我們所有的操作目的,其實就是去創建一個LV(Logical Volume),邏輯捲就是用來取代我們之前的分割槽,我們通過對邏輯捲進行格式化,然後進行掛載操作就可以使用了。那麼LVM的工作原理是什麼呢?所謂無圖無真相,咱們下麵通過圖來對邏輯捲的原理進行解釋!!

1.將我們的物理硬碟格式化成PV(Physical Volume)

我們看到,這裡有兩塊硬碟,一塊是sda,另一塊是sdb,在LVM磁盤管理里,我首先要將這兩塊硬碟格式化為我們的PV(Physical Volume),也就是我們的物理捲,其實格式化物理捲的過程中LVM是將底層的硬碟劃分為了一個一個的PE(Physical Extend),我們的LVM磁盤管理中PE的預設大小是4M大小,其實PE就是我們邏輯捲管理的最基本單位。比如說我有一個400M的硬碟,那麼在將其格式化成PV的時候,其實際就是將這塊物理硬碟劃分成了100個的PE,因為PE預設的大小就是4M。這個就是我們的第一步操作。

2.創建一個VG(Volume Group)

在將硬碟格式化成PV以後,我們第二步操作就是創建一個捲組,也就是VG(Volume Group),捲組在這裡我們可以將其抽象化成一個空間池,VG的作用就是用來裝PE的,我們可以把一個或者多個PV加到VG當中,因為在第一步操作時就已經將該硬碟劃分成了多個PE,所以將多個PV加到VG裡面後,VG裡面就存放了許許多多來自不同PV中的PE,我們通過上面的圖片就可以看到,我們格式化了兩塊硬碟,每個硬碟分別格式化成了3個PE,然後將兩塊硬碟的PE都加到了我們的VG當中,那麼我們的VG當中就包含了6個PE,這6個PE就是兩個硬碟的PE之和。通常創建一個捲組的時候我們會為其取一個名字,也就是該VG的名字。

3.基於VG創建我們最後要使用的LV(Logical Volume)

【註意】PV以及VG創建好以後我們是不能夠直接使用的,因為PV、VG是我們邏輯捲底層的東西,我們其實最後使用的是在VG基礎上創建的LV(Logical Volume),所以第三步操作就是基於VG來創建我們最終要使用的LV。

當我們創建好我們的VG以後,這個時候我們創建LV其實就是從VG中拿出我們指定數量的PE,還是拿上圖來說,我們看到我們此時的VG裡面已經擁有了6個PE,這時候我們創建了我們的第一個邏輯捲,它的大小是4個PE的大小,也就是16M(因為一個PE的預設大小是4M),而這4個PE有三個是來自於第一塊硬碟,而另外一個PE則是來自第二塊硬碟。當我們創建第二個邏輯捲時,它的大小就最多只有兩個PE的大小了,因為其中的4個PE已經分配給了我們的第一個邏輯捲。

所以創建邏輯捲其實就是我們從VG中拿出我們指定數量的PE,VG中的PE可以來自不同的PV,我們可以創建的邏輯捲的大小取決於VG當中PE存在的數量,並且我們創建的邏輯捲其大小一定是PE的整數倍(即邏輯捲的大小一定要是4M的整數倍)。

4.將我們創建好的LV進行檔案系統的格式化,然後掛載使用

在創建好LV以後,這個時候我們就能夠對其進行檔案系統的格式化了,我們最終使用的就是我們剛創建好的LV,其就相當於傳統的檔案管理的分割槽,我們首先要對其進行檔案系統的格式化操作,然後通過mount命令對其進行掛載,這個時候我們就能夠像使用平常的分割槽一樣來使用我們的邏輯捲了。

我們在創建好LV以後,我們會在 /dev 目錄下看到我們的LV信息,例如 /dev/vgname/lvname, 我們每創建一個VG,其會在/dev目錄下創建一個以該VG名字命名的檔案夾,在該VG的基礎上創建好LV以後,我們會在這個VG目錄下多出一個以LV名字命名的邏輯捲。

下麵我們來對整個LVM的工作原理進行一個總結:

(1)物理磁盤被格式化為PV,空間被劃分為一個個的PE

(2)不同的PV加入到同一個VG中,不同PV的PE全部進入到了VG的PE池內

(3)LV基於PE創建,大小為PE的整數倍,組成LV的PE可能來自不同的物理磁盤

(4)LV現在就直接可以格式化後掛載使用了

(5)LV的擴充縮減實際上就是增加或減少組成該LV的PE數量,其過程不會丟失原始資料

我們看到,我們這裡如果要對LV進行擴充,直接加進來一塊sdc硬碟,然後將其格式化成PE,然後將該PV加入到了VG當中,這個時候我們就可以通過增加LV中PE的數量來動態的對LV進行擴充了,只要我們的LV的大小不要超過我們VG空餘空間的大小就行了!!

轉自xiaoluo501395377的博客

http://www.cnblogs.com/xiaoluo501395377/archive/2013/05/22/3093405.html

    已同步到看一看
    赞(0)

    分享創造快樂