LVM邏輯卷

    LVM(Logical Volume Manager,邏輯卷管理器):是linux對磁盤分區進行管理的一種機制,至於作用就不再概述了。

    首先了解一下DM把,全稱爲Device Mapper,想沒想到我們經常用的/dev/mapper?就是它了。它跟MD一樣,有一個核心的模塊和衆多的子模塊組成,子模塊提供了各種特性和功能。如下圖:

                       wKioL1QAPJXSP5xQAAD4bmSFUz8988.jpg

       DM提供了設備的映射機制,能夠將多個物理的設備映射爲一個邏輯設備,感覺DM要比MD的功能強大的多了,做LVM2都是使用DM機制的。

      DM提供的功能大體有:將多個磁盤可用的空間虛擬爲一塊磁盤,鏡像,快照,多路徑等等。。

     

      首先我們先了解一下LVM的結構:

 

                 wKiom1QAPfigNYb-AAD5kxEm3lo213.jpg

           它主要由三個類型:PV VG和LV

    --PV(Physical volume,物理卷):由塊設備組成,物理卷可以是一個磁盤的某一分區,也可以是整塊磁盤或RAID磁盤(硬RAID,這樣效果更叼了),也可以是通過ISCSI共享出來的塊設備等等,創建LVM的第一步,就是要將這種類型的設備創建爲物理卷。

   --VG(Volume Group,卷組):各個物理卷組和在一起,一個類似擴展分區的容器,物理卷可以自由的加入VG,也可以在VG中移除,也就是說,我們的VG可以動態的擴大或縮小。

  --LV(Logical Volume,邏輯卷):這就相當於邏輯分區了,經過格式化後,我們可以將LV掛載到目錄下使用,LV是可以自由的擴大和縮小的。

    OK,我們已經大體瞭解了一個LVM是怎麼構成的了,等等,還有一個叫做PE和LE的東西。

  --PE(physical extent,物理塊):是LVM最小的尋址單元,可進行配置大小,默認爲4MB,我們怎麼抽象的理解PE呢?我們在創建卷組的時候,會指定PE的大小,然後會把我們組成VG的PV劃分成N多個PE,也就是說,我們的VG是由衆多的PE組成的,而LE,是與PE大小的一樣的,只是站在LV的角度把它看成了LE了。在LVM1中會限制VG的PE個數爲65534個,也就是VG最大容量爲256G左右,但是LVM2已經去掉了這種限制,所以我們可以隨心所欲的用了~

      

           終於到了我們該怎麼創建的時候了,說一下各個階段使用的命令吧,這些命令都是常用的,現實環境下肯定比這個多,我目前也只知道這麼多(吼吼,目前還是水軍一份子):

           PV階段:

                pvcreate----創建pv,用法:pvcreate /dev/xxx

                pvremove--刪除PV,  用法:格式同上,不是命令同上

                pvscan-重新掃描PV,

                pvs或pvdisplay--查看PV

                pvmove--(移動PV上的數據,如果你想移除一個PV,但還要保留PV上的數據,就需要用到這個命令了)

         Ps:pvmove格式:pvmove  /dev/xx(要移除的Pv) /dev/xx(把數據移動到此設備,這個設備必須是和要移除的Pv屬於一個卷組)

          

          VG階段:

                    vgcreate_--創建vg,   用法 vgcreate -s 16M vgname /dev/xx

                vgremove--刪除VG

                vgextend--擴展VG,加PV  用法:vgextend vgname /dev/xx/xx

                vgreduce--縮小VG,移除PV 用法:vgreduce vgname /dev/xx/xx

                vgs或vgdisplay--查看VG

                vgscan--重新掃描vg

                vgrename--重命名vg

          PS:創建vg時 -s可以指定PE大小,單位可以是k,m,g,或更多,自行man吧。

 

          LV階段:

                lvcreate--創建lv  用法:lvcreate -n lvname -l|L 100|50M /dev/xxx

                lvremove--刪除lv

                lvextend--擴容lv

                lvreduce--縮小lv

                lvresize--既可縮小又可擴容

                lvs或lvdisplay--查看lv

                lvscan--重新掃描lv       

          PS:創建LV時候,小l指分配PE的個數,大L指分配的空間大小,通常爲PE大小的倍數,如果不是倍數,空間會多出一個PE大小範圍內的容量。其它的參數下面在介紹。

      Ok,那我們來動手實驗一下吧:

      需求:首先我要把sdb,sdc,sdd三塊盤創建爲一個PE大小爲16M,名字叫做testvg,並創建一個10G大的,名字叫做testlv的Lv,並格式化爲ext3格式,並掛載到/test。


 1.創建Pv

              wKiom1QAhBbBhaD2AACBfzdMdMY459.jpg

   我們可以查看一下Pv,可以看到,沒創建Vg前,Pe的大小是沒有的。

               wKioL1QAhV-iwyHNAACnYA07q-w483.jpg

 2.創建Vg

              wKioL1QAhXvQa4M9AABczfcdUvI626.jpg

   vg我就不查看了,信息挺多,自行查看把,這裏看一下創建vg後的Pe大小。

        wKiom1QAhJ7CC2NBAACgnbIvzdY610.jpg

 3.創建Lv並格式化掛載

        wKiom1QAhLywMoovAABWSjU-V40514.jpg

        格式化的圖就略過了,我們看到雖然我們是指定lv路徑掛載,但是實際是/dev/mapper下的設備掛載到了/test目錄。

         wKiom1QAhQ7wD34sAAE3smWdyx0866.jpg       我們看一下,發現/dev/testvg/下的設備竟然是鏈接!而真實的設備在mapper下面。哼哼,知道dm的強大了吧。

        wKiom1QAhhnApY2nAABtIxlNXkA815.jpg

    行了,簡單的就瞭解這些了吧,下面說一下LVM的擴大和縮小,擴大和縮小並不影響數據本身,但前提要按流程走哦。首先我們先了解下結構和什麼是物理邊界和邏輯邊界,如下圖:

                wKioL1QAiYnAyMLrAABfo4v-KmQ852.jpg

    我們知道,我們的文件系統是建立在分區之上的,而分區就相當於物理邊界,文件系統就 相當於邏輯邊界,而你數據存儲的存儲大小,就取決於物理邊界和邏輯邊界,如果我們把這種抽象的概念轉移到我們的LVM之上,我們就會發現,Lv就相當於物理邊界,而文件系統的就相當於邏輯邊界。如果站在Vg的角度來看,我們的Lv也是邏輯邊界,而Vg本身是物理邊界,Ok,別弄亂了,只是站的角度不同而已。

    那麼,我們擴展的時候是先擴展邏輯邊界還是物理邊界呢?

          很顯然,是先擴展物理邊界啦,邏輯肯定不能大於物理的了,

    那麼,我們縮小的時候,是先縮小物理,還是先縮小邏輯呢?

         也很顯然,是先縮小邏輯了,你先縮小物理邊界了,那邏輯豈不是大於物理了?

        讓我們來擴展把,擴展如下:

     1.先確認好要擴展的lv,並確保vg有足夠的Pe用於分配。

     2.擴展Lv(物理):有+號是在原有的大小上+5G空間,沒有+號,則代表擴展到5G,一定要注意哦

            wKioL1QAjdegNGCVAACO7G_c3BI050.jpg

      擴展後我們df看一下大小,你會發現,文件系統並沒有擴展,那我們的空間去哪了?

   wKioL1QAjhHxN9mqAAEbaBArSu8832.jpg

       其實空間已經擴展了,我們剛纔擴展的是Lv的物理大小

       wKiom1QAjXTh4OQjAAECcAo09NU644.jpg

     3.  Ok,我們繼續擴展Lv在文件系統中的大小(邏輯)。

       Ps:resize2fs格式:resize2fs  lv路徑   15G(擴展至多大)或使用-P,擴展到最大(物理範圍內)。

wKioL1QAjs2xyiUZAAIyId4hOMk412.jpg      

       下面我們開始縮小Lv,縮小有風險,縮小需謹慎。

     1.首先我們要卸載掛載目錄(目前文件系統類型必須卸載,否則後果自負)

     2.計算縮小容量,確認縮小後的空間能承載原有數據。

     3.卸載並進行磁盤的一致性檢查

                wKioL1QAkafDzkpbAAE-nDPfobs193.jpg

     4.縮小文件系統大小 縮小至2G 也就是減少了13G(邏輯)                  wKiom1QAkMzy9m-eAAC6uyHR5-k043.jpg


      5.縮小Lv到2G(物理)

      wKioL1QAkl3hmFL2AADtz4UfShU216.jpg

    6.掛載查看大小,你也可以掛載前在進行一致性檢測

       wKiom1QAkXfCh7C0AAEBKKSpheQ663.jpg        

      Ok,擴大縮小也說完了,在說說快照吧,下面只講操作,至於原理,在寫一篇吧,會在文章最小面附上鍊接,因爲這篇已經寫的好長了~

     快照---保存系統某一個的狀態(也可以理解爲保存某一狀態的數據)。

   首先要聲明的是:

     *快照卷必須和創建快照的Lv在同一個卷組。

     *快照卷的生存週期爲整個數據的時長:也就是說數據的增長量不能超出分配快照卷的大小,否則,快照卷損毀。


      1.先查看原有目錄下的文件:

        wKiom1QAlNShLxITAAA6AowOKg0805.jpg


      2.創建快照:

         wKiom1QAlH6CXYjiAACLn8pYCks754.jpg      

      3.把快照卷掛載並查看文件,你發現,它保留了我們創建快照那一刻的數據。  

            wKioL1QAlmCSreRhAAAse2vfuKw734.jpg

    Ps:lvcreate,-s 爲指定爲快照卷 -p指定權限有r和w,快照卷最好爲只讀了,防止操作不當刪除數據,另外快照也可以用來最數據備份,這些在另一篇在說~

       







  


   

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章