一、傳統的磁盤管理
其實在Linux操作系統中,磁盤管理機制和windows上的差不多,絕大多數都是使用MBR(MasterBootRecorder)都是通過先對一個硬盤進行分區,然后再將該分區進行文件系統的格式化,在Linux系統中如果要使用該分區就將其掛載上去即可,windows的話其實底層也就是自動將所有的分區掛載好,然后我們就可以對該分區進行使用了。
但是這種傳統的磁盤管理經常會帶來很多的問題,比如說當我們使用的一個分區,其空間大小已經不再夠用了,這個時候我們沒有辦法通過拉伸分區來進行分區擴充,當然目前也有其他第三方的磁盤管理軟件可以進行磁盤的分區空間劃分,但是這樣會給我們的文件系統造成很大的傷害,有時會導致文件系統崩潰等問題。
對于傳統的磁盤管理如果說我們碰到當分區大小不足的時候,我們只能通過增加新的硬盤,然后在新的硬盤上創建分區,對分區進行格式化以后,然后將之前分區的所有東西都拷貝到新的分區里面才行。但是新增加的硬盤是作為獨立的文件系統存在的,原有的文件系統并沒有得到任何的擴充,上層應用只能訪問到一個文件系統。這樣的方式對個人的電腦來說可能還能接受,但是如果對于生產環境下的服務器來說,這是不可接受的。
因為如果要把一個分區的內容都拷貝到另一個分區上去,勢必要首先卸載掉之前的那個分區,然后*對整個分區進行拷貝,如果服務器上運行著一個重要的服務,比如說WWW或者FTP,其要求是7*24小時運行正常的,那么卸載掉分區這是不可想象的,同時如果該分區保存的內容非常非常的多,那么在對分區進行轉移時時間可能會耗費很久,所以,這個時候我們就會受到傳統磁盤管理的限制,因為其不能夠進行動態的磁盤管理。因此,為了解決這個問題,LVM技術就誕生了?。?!
二、LVM的磁盤管理
正是因為傳統的磁盤管理不能對我們的磁盤空間進行動態的管理,因此就誕生出了LVM這個技術,那么LVM到底是什么呢?它又是怎么對磁盤進行管理的呢?
LVM(LogicalvolumeManager)是邏輯卷管理的簡稱。它是Linux環境下對磁盤分區進行管理的一種機制?,F在不僅僅是Linux系統上可以使用LVM這種磁盤管理機制,對于其它的類UNIX操作系統,以及windows操作系統都有類似與LVM這種磁盤管理軟件。
LVM的工作原理其實很簡單,它就是通過將底層的物理硬盤抽象的封裝起來,然后以邏輯卷的方式呈現給上層應用。在傳統的磁盤管理機制中,我們的上層應用是直接訪問文件系統,從而對底層的物理硬盤進行讀取,而在LVM中,其通過對底層的硬盤進行封裝,當我們對底層的物理硬盤進行操作時,其不再是針對于分區進行操作,而是通過一個叫做邏輯卷的東西來對其進行底層的磁盤管理操作。比如說我增加一個物理硬盤,這個時候上層的服務是感覺不到的,因為呈現給上次服務的是以邏輯卷的方式。
LVM最大的特點就是可以對磁盤進行動態管理。因為邏輯卷的大小是可以動態調整的,而且不會丟失現有的數據。我們如果新增加了硬盤,其也不會改變現有上層的邏輯卷。作為一個動態磁盤管理機制,邏輯卷技術大大提高了磁盤管理的靈活性?。。?/p>
三、LVM的原理
要想理解好LVM的原理,我們必須首先要掌握4個基本的邏輯卷概念。
①PE(Physical Extend)物理拓展
②PV(Physical Volume)物理卷
③VG(Volume Group)卷組
④LV(Logical Volume)邏輯卷
我們知道在使用LVM對磁盤進行動態管理以后,我們是以邏輯卷的方式呈現給上層的服務的。所以我們所有的操作目的,其實就是去創建一個LV(LogicalVolume),邏輯卷就是用來取代我們之前的分區,我們通過對邏輯卷進行格式化,然后進行掛載操作就可以使用了。那么LVM的工作原理是什么呢?所謂無圖無真相,咱們下面通過圖來對邏輯卷的原理進行解釋??!
1.將我們的物理硬盤格式化成PV(Physical Volume)
我們看到,這里有兩塊硬盤,一塊是sda,另一塊是sdb,在LVM磁盤管理里,我首先要將這兩塊硬盤格式化為我們的PV(PhysicalVolume),也就是我們的物理卷,其實格式化物理卷的過程中LVM是將底層的硬盤劃分為了一個一個的PE(PhysicalExtend),我們的LVM磁盤管理中PE的默認大小是4M大小,其實PE就是我們邏輯卷管理的最基本單位。比如說我有一個400M的硬盤,那么在將其格式化成PV的時候,其實際就是將這塊物理硬盤劃分成了100個的PE,因為PE默認的大小就是4M。這個就是我們的第一步操作。
2.創建一個VG(Volume Group)
在將硬盤格式化成PV以后,我們第二步操作就是創建一個卷組,也就是VG(VolumeGroup),卷組在這里我們可以將其抽象化成一個空間池,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(LogicalVolume),所以第三步操作就是基于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空余空間的大小就行了??!
-
Linux
+關注
關注
87文章
11123瀏覽量
207919 -
LVM
+關注
關注
0文章
9瀏覽量
6418
原文標題:Linux系統LVM邏輯卷工作原理
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論