天天看點

Linux下實作LVM

lvm(邏輯磁盤管理)

LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,它由Heinz Mauelshagen在Linux 2.4核心上實作。LVM将一個或多個硬碟的分區在邏輯上集合,相當于一個大硬碟來使用,當硬碟的空間不夠使用的時候,可以繼續将其它的硬碟的分區加入其中,這樣可以實作磁盤空間的動态管理,相對于普通的磁盤分區有很大的靈活性。  

與傳統的磁盤與分區相比,LVM為計算機提供了更高層次的磁盤存儲。它使系統管理者可以更友善的為應用與使用者配置設定存儲空間。在LVM管理下的存儲卷可以按需要随時改變大小與移除(可能需對檔案系統工具進行更新)。LVM也允許按使用者組對存儲卷進行管理,允許管理者用更直覺的名稱(如"sales'、 'development')代替實體磁盤名(如'sda'、'sdb')來辨別存儲卷。 

如圖所示LVM模型:

<a href="http://blog.51cto.com/attachment/201308/180507805.jpg" target="_blank"></a>

由四個磁盤分區可以組成一個很大的空間,然後在這些空間上劃分一些邏輯分區,當一個邏輯分區的空間不夠用的時候,可以從剩餘空間上劃分一些空間給空間不夠用的分區使用。

前面談到,LVM是在磁盤分區和檔案系統之間添加的一個邏輯層,來為檔案系統屏蔽下層磁盤分區布局,提供一個抽象的盤卷,在盤卷上建立檔案系統。首先我們讨論以下幾個LVM術語:

實體存儲媒體(The physical media):這裡指系統的儲存設備:硬碟,如:/dev/hda1、/dev/sda等等,是存儲系統最低層的存儲單元。

實體卷(physical volume):實體卷就是指硬碟分區或從邏輯上與磁盤分區具有同樣功能的裝置(如RAID),是LVM的基本存儲邏輯塊,但和基本的實體存儲媒體(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。

卷組(Volume Group):LVM卷組類似于非LVM系統中的實體硬碟,其由實體卷組成。可以在卷組上建立一個或多個“LVM分區”(邏輯卷),LVM卷組由一個或多個實體卷組成。

邏輯卷(logical volume):LVM的邏輯卷類似于非LVM系統中的硬碟分區,在邏輯卷之上可以建立檔案系統(比如/home或者/usr等)。

PE(physical extent):每一個實體卷被劃分為稱為PE(Physical Extents)的基本單元,具有唯一編号的PE是可以被LVM尋址的最小單元。PE的大小是可配置的,預設為4MB。

LE(logical extent):邏輯卷也被劃分為被稱為LE(Logical Extents) 的可被尋址的基本機關。在同一個卷組中,LE的大小和PE是相同的,并且一一對應。

簡單來說就是:

PV:是實體的磁盤分區

VG:LVM中的實體的磁盤分區,也就是PV,必須加入VG,可以将VG了解為一個倉庫或者是幾個大的硬碟。

LV:也就是從VG中劃分的邏輯分區

如下圖所示PV、VG、LV三者關系: 

<a href="http://blog.51cto.com/attachment/201308/180522726.jpg" target="_blank"></a>

首先确定系統中是否安裝了lvm工具:

[root@www root]# rpm –qa|grep lvm

lvm-1.0.3-4

如果指令結果輸入類似于上例,那麼說明系統已經安裝了LVM管理工具;如果指令沒有輸出則說明沒有安裝LVM管理工具,則需要從網絡下載下傳或者從CD光牒裝LVM rpm工具包。

實驗的結構圖說明

<a href="http://blog.51cto.com/attachment/201308/180540895.png" target="_blank"></a>

要建立一個LVM系統,一般需要經過以下步驟:

1、 建立lvm分區 

進入要進入要劃分lvm的磁盤

<a href="http://blog.51cto.com/attachment/201308/180547911.png" target="_blank"></a>

<a href="http://blog.51cto.com/attachment/201308/180554286.png" target="_blank"></a>

<a href="http://blog.51cto.com/attachment/201308/180605879.png" target="_blank"></a>

<a href="http://blog.51cto.com/attachment/201308/180614323.png" target="_blank"></a>

建立分區完成後要對其進行格式化才能使用

使系統重新讀取分區表,如果不成功,則要重新開機系統

partx -a /dev/sda   

格式化為ext3類型的檔案系統

mk2fs -t ext3 /dev/sda5

(對sda盤上的所有分區要已知的要求格式化,不會影響正在使用的分區上的内容)

産所有的分區情況,我們看到共建立了3個lvm分區(大小分别為1G 2G 3G)

<a href="http://blog.51cto.com/attachment/201308/180628185.png" target="_blank"></a>

2.建立實體卷

格式化完成後建立實體卷 {硬碟  分區}  pv

對于建立實體卷可以同時對多個分區進行格式化,隻需要把分區用花括号括起來

<a href="http://blog.51cto.com/attachment/201308/180636286.png" target="_blank"></a>

3.建立卷組(及卷組所使用的分區)

在這我們先使用兩個分區

<a href="http://blog.51cto.com/attachment/201308/180645935.png" target="_blank"></a>

4.建立邏輯區,并制定大小

<a href="http://blog.51cto.com/attachment/201308/180654691.png" target="_blank"></a>

對建立邏輯卷進行格式化,說明該卷的檔案系統類型

<a href="http://blog.51cto.com/attachment/201308/180704231.png" target="_blank"></a>

對lv分區進行挂載,然後就可以使用

<a href="http://blog.51cto.com/attachment/201308/180710446.png" target="_blank"></a>

lvm中可能遇到的問題

(a)有的時候我們還會遇到這種情況,就是随着我們的使用,我們發現之前建立的邏輯卷不夠使用了

這時候我們隻要擴大可以vg分區

指定向vg區中添加新的pv分區

<a href="http://blog.51cto.com/attachment/201308/180731347.png" target="_blank"></a>

在新的卷組大小改變後,我們需要對lv重新格式化,把大小改變,重要的是不會損壞使用的lvm上的資料

在增大lvm的時候,先使用lvresize指明大小,在用resize2fs格式化大小

<a href="http://blog.51cto.com/attachment/201308/180739765.png" target="_blank"></a>

<a href="http://blog.51cto.com/attachment/201308/180746185.png" target="_blank"></a>

然後mount挂載就能繼續使用了

(b)有的時候我們的邏輯卷需要幾個,但是磁盤空間已經使用完了,而lvm有大有小,大的lvm有很多剩餘空間,那麼我們可以把空間大的lvm減少空間給其他的lvm使用。

在減小lvm大小的時候,使用的指令和增大的相反,先使用resize2fs指令,後進行lvsize

是以,首先解除安裝lvm

<a href="http://blog.51cto.com/attachment/201308/182011389.png" target="_blank"></a>

重新格式化lvm

因為是減小,在resize2fs是要在該指令行最後指明減小到多大的空間

<a href="http://blog.51cto.com/attachment/201308/180820419.png" target="_blank"></a>

指明減小後的大小,對其lvresize,産看lvm的大小時就變成我們想要的結果

<a href="http://blog.51cto.com/attachment/201308/180909116.png" target="_blank"></a>

<a href="http://blog.51cto.com/attachment/201308/180945719.png" target="_blank"></a>

如果要在系統啟動的時候啟動LVM,最好是将testlv寫入fstable 檔案中,如下所示: 

<a href="http://blog.51cto.com/attachment/201308/181001132.png" target="_blank"></a>

使用Vim編輯器,打開/etc/fstab,在最後一行添加如圖中所示,其中/dev/testvg/testlv指定需要挂載的分區LVM,/mnt/lvm指定要挂載的目錄(挂載點),ext3分區檔案系統格式,其它使用預設即可

删除lvm架構

有時候我們對于建立的邏輯分區不想使用了但是它又占用了我們的磁盤,是以我們需要把它解除安裝掉。解除安裝的時候按照從上到下的解除安裝方式:即先解除安裝lvm,在删除卷組,最後删除實體卷。

解除安裝lvm邏輯卷:先把我們挂載的正在使用的lvm解除安裝,停止使用

<a href="http://blog.51cto.com/attachment/201308/181006149.png" target="_blank"></a>

删除卷組

<a href="http://blog.51cto.com/attachment/201308/181012953.png" target="_blank"></a>

删除實體卷

<a href="http://blog.51cto.com/attachment/201308/181020160.png" target="_blank"></a>

做完後,我們隻需要重新對磁盤上的分區進行删除劃分,即可達到其他的用途!

——--———————————————————————————————————

建立lvm使用到的指令 

           3.邏輯分區   lv

               lvcreate   lvdisplay   lvresize   resize2fs lvscan

           2.卷組 {存儲池}   vg

              vgcreate   vgextend   vgreduce   vgscan   vgdisplay  

           1.實體卷 {硬碟  分區}  pv

            pvcreate  pvdisplay   pvscan   pvremove

            建立 lv

            1.pvcreate

            2.cgcreate   名稱     目錄卷

            3.lvcreate   -L  大小     -n  名稱   卷組名稱

            4.格式化

            5.挂載 

            擴充lv  {線上}

            1.vgextend   卷組   實體卷

            2.lvresize   -L  大小  +增加大小   lv路徑名稱

            3.resize2fs     lv路徑名稱

           減小   {離線}

           1,解除安裝

           2.e2fsck  -f  lv路徑名稱

           3.resize2fs   lv路徑名稱     大小 

           4.lvresize -L   大小    lv路徑名稱

           5.挂載

          删除整個架構

          1.解除安裝邏輯卷 

          2.删除邏輯卷   lvremove   lv路徑名稱

          3.删除卷組     vgremove      卷組名稱

          4.删除實體卷  pvremove        實體磁盤或者分區

    本文轉自Tar0 51CTO部落格,原文連結:http://blog.51cto.com/tar0cissp/1263132,如需轉載請自行聯系原作者

繼續閱讀