LVM
服務器
LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,它是Linux環境下對磁盤分區進行管理的一種機制,它由Heinz Mauelshagen在Linux 2.4內核上實現,目前最新版本爲:穩定版1.0.5,開發版 1.1.0-rc2,以及LVM2開發版。ide
目錄工具
1,概述佈局
2,前言spa
3,基本術語操作系統
4,總結orm
5,優勢blog
6,相關概念內存
7,LVM的管理工具
開發
8,工做方式
概述:
LVM是邏輯盤卷管理(Logical Volume Manager)的簡稱,它是Linux環境下對磁盤分區進行管理的一種機制,LVM是創建在硬盤和分區之上的一個邏輯層,來提升磁盤分LVM區管理的靈活性。前面談到,LVM是在磁盤分區和文件系統之間添加的一個邏輯層,來爲文件系統屏蔽下層磁盤分區佈局,提供一個抽象的盤卷,在盤捲上創建文件系統。物理卷(physical volume)物理卷就是指硬盤分區或從邏輯上與磁盤分區具備一樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。
Linux用戶安裝Linux操做系統時遇到的一個最多見的難以決定的問題就是如何正確地給評估各分區大小,以分配合適的硬盤空間。而遇到出現 某個分區空間耗盡時,解決的方法一般是使用符號連接,或者使用調整分區大小的工具(好比PatitionMagic等),但這都只是暫時解決辦法,沒有根本解決問題。隨着Linux的邏輯盤卷管理功能的出現,這些問題都迎刃而解,用戶在無需停機的狀況下方便地調整各個分區大小。
前言:
每一個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一般用於裝備大量磁盤的系統,但它一樣適於僅有1、兩塊硬盤的小系統。
小系統使用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/