LVM
LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,它是Linux環境下對磁盤分區進行管理的一種機制,它由Heinz Mauelshagen在Linux 2.4核心上實作,目前最新版本為:穩定版1.0.5,開發版 1.1.0-rc2,以及LVM2開發版。
目錄
1,概述
2,前言
3,基本術語
4,總結
5,優點
6,相關概念
7,LVM的管理工具
8,工作方式
概述:
LVM是邏輯盤卷管理(Logical Volume Manager)的簡稱,它是Linux環境下對磁盤分區進行管理的一種機制,LVM是建立在硬碟和分區之上的一個邏輯層,來提高磁盤分LVM區管理的靈活性。前面談到,LVM是在磁盤分區和檔案系統之間添加的一個邏輯層,來為檔案系統屏蔽下層磁盤分區布局,提供一個抽象的盤卷,在盤卷上建立檔案系統。實體卷(physical volume)實體卷就是指硬碟分區或從邏輯上與磁盤分區具有同樣功能的裝置(如RAID),是LVM的基本存儲邏輯塊,但和基本的實體存儲媒體(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。
Linux使用者安裝Linux作業系統時遇到的一個最常見的難以決定的問題就是如何正确地給評估各分區大小,以配置設定合适的硬碟空間。而遇到出現 某個分區空間耗盡時,解決的方法通常是使用符号連結,或者使用調整分區大小的工具(比如PatitionMagic等),但這都隻是暫時解決辦法,沒有根本解決問題。随着Linux的邏輯盤卷管理功能的出現,這些問題都迎刃而解,使用者在無需停機的情況下友善地調整各個分區大小。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInBnauADM1EEN3cVeadzTHFUQThHWqpXbQNkNPFDTvl2S39CXyYzLclzMvwFMw00LcJDMzZWe39CXt92Yu8GdjFTNuMzcvw1LcpDc0RHaiojIsJye.jpg)
前言:
每個Linux使用者在安裝Linux時都會遇到這樣的困境:在為系統分區時,如何精确評估和配置設定各個硬碟分區的容量,因為系統管理者不但要考慮到目前某個分區需要的容量,還要預見該分區以後可能需要的容量的最大值。因為如果估 計不準确,當遇到某個分區不夠用時管理者可能甚至要備份整個系統、清除硬碟、重新對硬碟分區,然後恢複資料到新分區。
雖然現在有 很多動态調整磁盤的工具可以使用,例如PartationMagic等等,但是它并不能完全解決問題,因為某個分區可能會再次被耗盡;另外一個方面這需要 重新開機系統才能實作,對于很多關鍵的伺服器,停機是不可接受的,而且對于添加新硬碟,希望一個能跨越多個硬碟驅動器的檔案系統時,分區調整程式就不能解 決問題。
是以完美的解決方法應該是在零停機前提下可以自如對檔案系統的大小進行調整,可以友善實作檔案系統跨越不同磁盤和分區。幸運的是Linux提供的邏輯盤卷管理(LVM,LogicalVolumeManager)機制就是一個完美的解決方案。
LVM是邏輯盤卷管理(LogicalVolumeManager)的簡稱,它是Linux環境下對磁盤分區進行管理的一種機制,LVM是建立在硬碟和 分區之上的一個邏輯層,來提高磁盤分區管理的靈活性。通過LVM系統管理者可以輕松管理磁盤分區,如:将若幹個磁盤分區連接配接為一個整塊的卷組 (volumegroup),形成一個存儲池。管理者可以在卷組上随意建立邏輯卷組(logicalvolumes),并進一步在邏輯卷組上建立檔案系 統。管理者通過LVM可以友善的調整存儲卷組的大小,并且可以對磁盤存儲按照組的方式進行命名、管理和配置設定,例如按照使用用途進行定義:“development”和“sales”,而不是使用實體磁盤名“sda”和“sdb”。而且當系統添加了新的磁盤,通過LVM管理者就不必将磁盤的 檔案移動到新的磁盤上以充分利用新的存儲空間,而是直接擴充檔案系統跨越磁盤即可。
基本術語:
前面談到,LVM是在磁盤分區和檔案系統之間添加的一個邏輯層,來為檔案系統屏蔽下層磁盤分區布局,提供一個抽象的盤卷,在盤卷上建立檔案系統。首先我們讨論以下幾個LVM術語:
*實體存儲媒體(The physical media)
這裡指系統的儲存設備:硬碟,是存儲系統最低層的存儲單元。
*實體卷(physical volume,PV)
實體卷就是指硬碟分區或從邏輯上與磁盤分區具有同樣功能的裝置(如RAID),是LVM的基本存儲邏輯塊,但和基本的實體存儲媒體(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。
*卷組(Volume Group,VG)
LVM卷組類似于非LVM系統中的實體硬碟,其由實體卷組成。可以在卷組上建立一個或多個“LVM分區”(邏輯卷),LVM卷組由一個或多個實體卷組成。
*邏輯卷(logical volume,LV)
LVM的邏輯卷類似于非LVM系統中的硬碟分區,在邏輯卷之上可以建立檔案系統(比如/home或者/usr等)。
*PE(physical extent,PE)
每一個實體卷被劃分為稱為PE(PhysicalExtents)的基本單元,具有唯一編号的PE是可以被LVM尋址的最小單元。PE的大小是可配置的,預設為4MB。
*LE(logical extent,LE)
邏輯卷也被劃分為被稱為LE(LogicalExtents)的可被尋址的基本機關。在同一個卷組中,LE的大小和PE是相同的,并且一一對應。
首先可以看到,實體卷(PV)被由大小等同的基本單元PE組成。
一個卷組由一個或多個實體卷組成。
從上圖可以看到,PE和LE有着一一對應的關系。邏輯卷建立在卷組上。邏輯卷就相當于非LVM系統的磁盤分區,可以在其上建立檔案系統。
下圖是磁盤分區、卷組、邏輯卷和檔案系統之間的邏輯關系的示意圖:
和非LVM系統将包含分區資訊的中繼資料儲存在位于分區的起始位置的分區表中一樣,邏輯卷以及卷組相關的中繼資料也是儲存在位于實體卷起始處的VGDA(卷組描述符區域)中。VGDA包括以下内容:PV描述符、VG描述符、LV描述符、和一些PE描述符。
系統啟動LVM時激活VG,并将VGDA加載至記憶體,來識别LV的實際實體存儲位置。當系統進行I/O操作時,就會根據VGDA建立的映射機制來通路實際的實體位置。
總結 :
根據上面的讨論可以看到,LVM具有很好的可伸縮性,使用起來非常友善。可以友善地對卷組、邏輯卷的大小進行調整,更進一步調整檔案系統的大小。
優點:
M通常用于裝備大量磁盤的系統,但它同樣适于僅有一、兩塊硬碟的小系統。
小系統使用LVM的益處
傳統的檔案系統是基于分區的,一個檔案系統對應一個分區。這種方式比較直覺,但不易改變:
1.不同的分區相對獨立,無互相聯系,各分區空間很易利用不平衡,空間不能充分利用;
2.當一個檔案系統/分區已滿時,無法對其擴充,隻能采用重新分區/建立檔案系統,非常麻煩;或把分區中的資料移到另一個更大的分區中;或采用符号連接配接的方式使用其它分區的空間。
3.如果要把硬碟上的多個分區合并在一起使用,隻能采用再分區的方式,這個過程需要資料的備份與恢複。當采用LVM時,情況有所不同:
1.硬碟的多個分區由LVM統一為卷組管理,可以友善的加入或移走分區以擴大或減小卷組的可用容量,充分利用硬碟空間;
2.檔案系統建立在邏輯卷上,而邏輯卷可根據需要改變大小(在卷組容量範圍内)以滿足要求;
3.檔案系統建立在LVM上,可以跨分區,友善使用;
大系統使用LVM的益處
在使用很多硬碟的大系統中,使用LVM主要是友善管理、增加了系統的擴充性。
在一個有很多不同容量硬碟的大型系統中,對不同的使用者的空間配置設定是一個技巧性的工作,要在使用者需求與實際可用空間中尋求平衡。
使用者/使用者組的空間建立在LVM上,可以随時按要求增大,或根據使用情況對各邏輯卷進行調整。當系統空間不足而加入新的硬碟時,不必把使用者的資料從原硬碟遷移到新硬碟,而隻須把新的分區加入卷組并擴充邏輯卷即可。同樣,使用LVM可以在不停服務的情況下。把使用者資料從舊硬碟轉移到新硬碟空間中去。
相關概念:
實體卷
實體卷是指硬碟分區或者從邏輯上看起來和硬碟分區類似的裝置(比如RAID裝置)。
邏輯卷
一個或者多個實體卷組成一個邏輯卷。對于LVM而言,邏輯卷類似于非LVM系統中的硬碟分區。邏輯卷可以包含一個檔案系統(比如/home或者/usr)。
卷組
一個或者多個邏輯卷組成一個卷組。對于LVM而言,卷組類似于非LVM系統中的實體硬碟。卷組把多個邏輯卷組合在一起,形成一個可管理的單元。
實體塊physical extent (PE)
實體卷按大小相等的“塊”為機關存儲,塊的大小與卷組中邏輯卷塊的大小相同。
邏輯塊logical extent (LE)
邏輯卷按“塊”為機關存儲,在一卷組中的所有邏輯卷的塊大小是相同的。
工作方式:
下面來看一看LVM到底是怎樣工作的。每一個實體卷都被分成幾個基本單元,即所謂的PE(Physical Extents)。PE的大小是可變的,但是必須和其所屬卷組的實體卷相同。在每一個實體卷裡,每一個PE都有一個唯一的編号。PE是一個實體存儲裡可以被LVM尋址的最小單元。
每一個邏輯卷也被分成一些可被尋址的基本機關,即所謂的LE(Logical Extents)。在同一個卷組中,LE的大小和PE是相同的,很顯然,LE的大小對于一個卷組中的所有邏輯卷來說都是相同的。
在一個實體卷中,每一個PE都有一個唯一的編号,但是對于邏輯卷這并不一定是必需的。這是因為當這些PEID号不能使用時,邏輯卷可以由一些實體卷組成。是以,LE ID号是用于識别LE以及與之相關的特定PE的。每一次存儲區域被尋址通路或者LE的ID被使用,都會把資料寫在實體儲存設備之上。
你可能會覺得奇怪,有關邏輯卷和邏輯卷組的所有中繼資料都存到哪兒去了。類似的在非LVM系統中,有關分區的資料是存儲在分區表中,而分區表被存儲在了每一個實體卷的起始位置。VGDA(卷組描述符區域)功能就好象是LVM的分區表,它存儲在每一個實體卷的起始處。
VGDA由以下資訊組成:
◆ 一個PV描述符
◆ 一個VG描述符
◆ LV描述符
◆ 一些PE描述符
當系統啟動LV時,VG被激活,并且VGDA被加載至記憶體。VGDA幫助識别LV的實際存儲位置。當系統想要通路儲存設備時,由VGDA建立起來的映射機制就用于通路實際的實體位置來執行I/O操作。
LVM的管理工具:
功能管理實體卷管理卷組管理邏輯卷
Scan 掃描 pvscan vgscan lvscan
Create 建立 pvcreate vgcreate lvcreate
Display 顯示 pvdisplay vgdisplay lvdisplay
Remove 删除 pvremove vgremove lvremove
Extend 擴充 vgextend lvextend
Reduce 減少 vgreduce lvreduce
----圖形管理工具:
[root@localhost ~]# system-config-lvm
注釋:如果沒有這個指令的話我們可以把相關的軟體包裝上,我們可以用“rpm”的方式或者是“yum”的方式安裝。我是用“yum”的方式安裝的。那個是包會産生這個軟體包那。看下面:
[root@localhost ~]# rpm -qf /usr/sbin/system-config-lvm
system-config-lvm-1.1.5-13.el5
[root@localhost ~]# yum -y install system-config-lvm
主要指令的文法:
- pvcreate裝置名...
- vgcreate卷組名 實體卷...
- vgcreate-s pe大小 卷組名 實體卷...
- lvcreate-L 大小 -n 邏輯卷名 卷組名
- lvcreate-l pe個數 -n 邏輯卷名 卷組名
- lvextend-L +大小 /dev/卷組名/邏輯卷名
實作方法:
注釋:"/dev/sdb7"這個分區是我新分的分區。大家在做的時候可以按照自己分的區來做。
建立實體卷的指令是 pvcreate
[root@localhost ~]# pvcreate /dev/sdb7
Writing physical volume data to disk "/dev/sdb7"
Physical volume "/dev/sdb7" successfully created
以上指令将“/dev/sdb7”初始化成實體卷,使用實體卷顯示指令“pvdisplay”檢視實體卷情況如下:
[root@localhost ~]# pvdisplay
"/dev/sdb7" is a new physical volume of "9.32 GB"
--- NEW Physical volume ---
PV Name /dev/sdb7
VG Name
PV Size 9.32 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID WSaYsw-z57t-36HY-rIQ7-P8u3-e2Gg-DD7I1c
建立卷組VG(Volume Groups)
卷組(Volume Group)簡稱VG,它是一個或者多個實體卷的組合。卷組将多個實體卷組合在一起,形成一個可管理的單元,它類似于非LVM系統中的實體硬碟。
建立卷組的指令為vgcreate,下面利用它建立了一個名為“vg_long”的卷組,該卷組包含“/dev/sdb7”這個實體卷。
[root@localhost ~]# vgcreate vg_long /dev/sdb7
Volume group "vg_long" successfully created
使用卷組檢視指令vgdisplay顯示卷組情況:
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name vg_long
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 9.32 GB
PE Size 4.00 MB
Total PE 2386
Alloc PE / Size 0 / 0
Free PE / Size 2386 / 9.32 GB
VG UUID MOp7Ex-6ymH-3jvz-jxRd-sMKl-5G14-MvF2E1
建立邏輯卷LV(Logical Volumes)
邏輯卷(Logical Volumes)簡稱LV,是在卷組中劃分的一個邏輯區域,類似于非LVM系統中的硬碟分區。
建立邏輯卷的指令為"lv_long",通過下面的指令,我們在卷組"vg_long"上建立了一個名字為"lv_long"的邏輯卷,大小為10GB,其裝置入口為"/dev/vg_long/lv_long"。
[root@localhost ~]# lvcreate -L 8G -n lv_long vg_long
Logical volume "lv_long" created
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Name /dev/vg_long/lv_long
VG Name vg_long
LV UUID T0chYK-VKde-QwEQ-fHfn-wh0j-UUa8-gdNEOf
LV Write Access read/write
LV Status available
# open 0
LV Size 8.00 GB
Current LE 2048
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
也可以使用“-l”參數,通過指定PE數來設定邏輯分區大小。
建立檔案系統:
在邏輯卷上建立ext3檔案系統:
[root@localhost ~]# mkfs.ext3 /dev/vg_long/lv_long
建立了檔案系統以後,就可以加載并使用了:
我們把我們建立的“邏輯卷”挂載到“/mnt”這個目錄。這個目錄就是用來挂載一些分區的。
[root@localhost ~]# mount /dev/vg_long/lv_long /mnt/