轉載:http://www.cnblogs.com/xiaoluo501395377/archive/2013/05/22/3093405.html html
這篇隨筆將詳細講解Linux磁盤管理機制中的LVM邏輯卷的基本概念以及LVM的工做原理!!!windows
1、傳統的磁盤管理服務器
其實在Linux操做系統中,咱們的磁盤管理機制和windows上的差很少,絕大多數都是使用MBR(Master Boot Recorder)都是經過先對一個硬盤進行分區,而後再將該分區進行文件系統的格式化,在Linux系統中若是要使用該分區就將其掛載上去便可,windows的話其實底層也就是自動將全部的分區掛載好,而後咱們就能夠對該分區進行使用了。spa
可是這種傳統的磁盤管理常常會帶來不少的問題,好比說當咱們使用的一個分區,其空間大小已經再也不夠用了,這個時候咱們沒有辦法經過拉伸分區來進行分區擴充,固然目前也有其餘第三方的磁盤管理軟件能夠進行磁盤的分區空間劃分,可是這樣會給咱們的文件系統形成很大的傷害,有時會致使文件系統崩潰等問題。對於傳統的磁盤管理若是說咱們碰到當分區大小不足的時候,咱們只能經過增長新的硬盤,而後在新的硬盤上建立分區,對分區進行格式化之後,而後將以前分區的全部東西都拷貝到新的分區裏面才行。可是新增長的硬盤是做爲獨立的文件系統存在的,原有的文件系統並無獲得任何的擴充,上層應用只能訪問到一個文件系統。這樣的方式對我的的電腦來講可能還能接受,可是若是對於生產環境下的服務器來講,這是不可接受的。由於若是要把一個分區的內容都拷貝到另外一個分區上去,勢必要首先卸載掉以前的那個分區,而後*對整個分區進行拷貝,若是服務器上運行着一個重要的服務,好比說WWW或者FTP,其要求是 7*24 小時運行正常的,那麼卸載掉分區這是不可想象的,同時若是該分區保存的內容很是很是的多,那麼在對分區進行轉移時時間可能會耗費好久,因此,這個時候咱們就會受到傳統磁盤管理的限制,由於其不可以進行動態的磁盤管理。所以,爲了解決這個問題,LVM技術就誕生了!!!操作系統
2、LVM的磁盤管理orm
正是由於傳統的磁盤管理不能對咱們的磁盤空間進行動態的管理,所以就誕生出了LVM這個技術,那麼LVM究竟是什麼呢?它又是怎麼對磁盤進行管理的呢?htm
LVM(Logical volume Manager)是邏輯卷管理的簡稱。它是Linux環境下對磁盤分區進行管理的一種機制。如今不只僅是Linux系統上可使用LVM這種磁盤管理機制,對於其它的類UNIX操做系統,以及windows操做系統都有相似與LVM這種磁盤管理軟件。blog
LVM的工做原理其實很簡單,它就是經過將底層的物理硬盤抽象的封裝起來,而後以邏輯卷的方式呈現給上層應用。在傳統的磁盤管理機制中,咱們的上層應用是直接訪問文件系統,從而對底層的物理硬盤進行讀取,而在LVM中,其經過對底層的硬盤進行封裝,當咱們對底層的物理硬盤進行操做時,其再也不是針對於分區進行操做,而是經過一個叫作邏輯卷的東西來對其進行底層的磁盤管理操做。好比說我增長一個物理硬盤,這個時候上層的服務是感受不到的,由於呈現給上次服務的是以邏輯卷的方式。圖片
LVM最大的特色就是能夠對磁盤進行動態管理。由於邏輯卷的大小是能夠動態調整的,並且不會丟失現有的數據。咱們若是新增長了硬盤,其也不會改變現有上層的邏輯卷。做爲一個動態磁盤管理機制,邏輯卷技術大大提升了磁盤管理的靈活性!!!get
3、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空餘空間的大小就好了!!