LVM邏輯卷管理

一、簡述

什么是邏輯卷?LVM(Logical Volume Manager)利用Linux內核device-mapper實現存儲系統的虛擬化。通過LVM,把底層存儲硬件抽象化成存儲邏輯塊,再將這些邏輯塊集合構成存儲池,從存儲池空間劃分分區,可以簡單地擴大或縮小分區,而不用擔心硬盤沒有足夠的連續空間。

使用邏輯卷分區有什么用?使用邏輯卷分區重點在于可以彈性地調整文件系統的容量。在實際環境中我們經常會遇一個文件系統空間不足,想要擴展卻又十分麻煩,一開始劃分空間偏大,想要縮減也是同樣不方便。而LVM可以很好地解決這些問題。

邏輯卷的缺點:由于LVM的原理,導致一個文件數據可能分布在多個硬件設備上,這些設備中只要有一個損壞,數據便有丟失。而且存儲效率上也有所下降。通常LVM結合RAID使用,提升讀寫效能或數據可靠性。

二、LVM原理

    首先理解四個邏輯卷基本概念:

    1、PV(Physical Volume)物理卷:LVM的基本存儲邏輯塊,可以在上面建立卷組的媒介,可以是硬盤分區,也可以是硬盤本身或者回環文件(loopback file)。物理卷包括一個特殊的header,其余部分被切割為一塊塊物理區域(physical extents)。

    2、VG(Volume Group)卷組:一個或多個物理卷組成卷組,即構成一個存儲池??梢栽诰斫M上創建“LVM分區”(邏輯卷)

    3、LV(Logical Volume)邏輯卷:由若干物理區域組成的虛擬分區,類似于硬盤分區

    4PE(Physical Extent)物理區域:硬盤可供指派給邏輯卷的最小單位。

    5、LE(Logical Extent)邏輯區域:物理區域被指派給邏輯卷后變為邏輯區域,組成邏輯卷的最小單位。

lvm.jpg

簡答來講,我們先將塊設備初始化為PV,將若干個PV劃分為一個VG卷組并命名,卷組被創建時,將PV劃分為若干個PE,默認PE大小為4M,即這些PE構成了卷組,最后我們從卷組中拿出若干個PE組成邏輯卷并命名,相當于劃分出一塊硬盤分區,邏輯卷創建后就可以正常使用它了,比如進行格式化操作,然后掛載到目錄樹上。

三、LVM創建演示

以下操作環境為Centos6.8

準備工作:我劃分了三個分區/dev/sdb{1,2,3},并設置分區類型為 Linux LVM

blob.png

PV初始化

[root@centos6 mapper]$ pvcreate /dev/sdb{1,2,3}
  Physical volume "/dev/sdb1" successfully created
  Physical volume "/dev/sdb2" successfully created
  Physical volume "/dev/sdb3" successfully created

簡單查看創建PV信息

[root@centos6 mapper]$ pvs
  PV         VG   Fmt  Attr PSize PFree
  /dev/sdb1       lvm2 ---- 5.00g 5.00g
  /dev/sdb2       lvm2 ---- 5.00g 5.00g
  /dev/sdb3       lvm2 ---- 5.00g 5.00g

詳細查看PV信息

[root@centos6 mapper]$ pvdisplay
  "/dev/sdb1" is a new physical volume of "5.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               5.00 GiB
  Allocatable           NO
  PE Size               0               #在未被加入卷組前,未劃分PE
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               jxLEiT-LOXv-9zqY-Vui2-QRNN-AkN4-vcZehm
   
  "/dev/sdb2" is a new physical volume of "5.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb2
  VG Name               
  PV Size               5.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               vHa18C-QW5D-8lB1-2dRX-jxOF-OcCF-aFBDSb
   
  "/dev/sdb3" is a new physical volume of "5.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb3
  VG Name               
  PV Size               5.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               NtfNOu-NRYs-CRv8-TcyI-HXbg-Nidr-89Kiwf

VG:創建一個名為jat的卷組

[root@centos6 mapper]$ vgcreate jat /dev/sdb{1,2}
  Volume group "jat" successfully created

查看VG信息

[root@centos6 mapper]# vgs
  VG   #PV #LV #SN Attr   VSize VFree
  jat    2   0   0 wz--n- 9.99g 9.99g
[root@centos6 mapper]# vgdisplay
  --- Volume group ---
  VG Name               jat
  System ID             
  Format                lvm2
  Metadata Areas        2
  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                2
  Act PV                2
  VG Size               9.99 GiB            #卷組容量為兩個PV容量總
  PE Size               4.00 MiB            #默認PE大小為4M
  Total PE              2558                #PE的總數
  Alloc PE / Size       0 / 0               #PE分配的情況
  Free  PE / Size       2558 / 9.99 GiB
  VG UUID               bwm8dx-QYgR-H0cO-xbCe-AvGe-zvDL-qfNIlp

再來看下PV信息

[root@centos6 mapper]$ pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               jat
  PV Size               5.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB       #相關PE的信息已更新
  Total PE              1279
  Free PE               1279
  Allocated PE          0
  PV UUID               jxLEiT-LOXv-9zqY-Vui2-QRNN-AkN4-vcZehm

創建LV

[root@centos6 mapper]$ lvcreate -L 2G -n pap1 jat
  Logical volume "pap1" created.
[root@centos6 mapper]$ lvcreate -L 4G -n pap2 jat
  Logical volume "pap2" created.

查看LV

[root@centos6 mapper]# lvs
  LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  pap1 jat  -wi-a----- 2.00g                                                    
  pap2 jat  -wi-a----- 4.00g                                                    
[root@centos6 mapper]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/jat/pap1        #邏輯卷設備地址
  LV Name                pap1
  VG Name                jat
  LV UUID                heIpsn-nhPS-BH91-CDrU-6pi0-LFyR-MZBeRs
  LV Write Access        read/write
  LV Creation host, time centos6.localdomain, 2016-09-02 20:26:27 +0800
  LV Status              available            #新創建的LV默認激活可用
  # open                 0
  LV Size                2.00 GiB
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

引用LV設備有多個路徑

形式1:/dev/mapper/VG_NAME-LV_NAME

形式2:/dev/VG_NAME/LV_NAME

以上都是軟連接指向實際設備文件/dev/dm-N

blob.png

格式化邏輯卷pap1,掛載

mkfs.ext4 /dev/jat/pap1
mount /dev/jat/pap1 /mnt/pap1

使用df命令查看,邏輯卷pap1可用容量

blob.png

嘗試向邏輯卷掛載點拷貝一些數據,完全正常,至此邏輯卷創建成功。

blob.png

四、擴展VG,LV

擴展VG

[root@centos6 ~]$ vgextend jat /dev/sdb3        #給卷組jat新加一個PV
  Volume group "jat" successfully extended
[root@centos6 ~]# vgs                           #查看VG容量已增加了5G
  VG   #PV #LV #SN Attr   VSize  VFree
  jat    3   2   0 wz--n- 14.99g 8.99g

在線擴展LV

命令工具:lvextend

-l|–extents [+]LogicalExtentsNumber[%{VG|LV|PVS|FREE|ORIGIN}]

    此選項可以指定邏輯卷新的LE數量,或增加的數量,也可指定百分比形式擴展

-L|–size [+]LogicalVolumeSize[bBsSkKmMgGtTpPeE]}

    此選項指定大小來擴展

lvextend -l +100%FREE /dev/jat/pap1     #將jat卷組的所有剩余PE分配給pap1
lvextend -L 5G /dev/jat/pap1            #將pap1擴展至5G大小
lvextend -L +1G /dev/jat/pap1           #增加1G的容量

擴展前,vgdisplay 查看卷組使用情況,原始pap1容量

blob.png

blob.png

開始擴展pap1

[root@centos6 ~]# lvextend -L +2G /dev/jat/pap1
  Size of logical volume jat/pap1 changed from 2.00 GiB (512 extents) to 4.00 GiB (1024 extents).
  Logical volume pap1 successfully resized.

查看pap1 容量增加了2G

blob.png

再對文件系統調整大小

[root@centos6 ~]$ fsadm resize /dev/jat/pap1
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/jat-pap1 is mounted on /mnt/pap1; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/mapper/jat-pap1 to 1048576 (4k) blocks.
The filesystem on /dev/mapper/jat-pap1 is now 1048576 blocks long.

其實可以在擴展LV帶上-r選項可省略此步驟,例如

lvextend -r -L +2G /dev/jat/pap1

df-h查看文件系統大小,已經增加2G容量

blob.png

五、縮減LV

縮減操作較為危險,謹慎操作??s減LV之前確保已對文件系統重新調整大小。

1、卸載邏輯卷

umount /mnt/pap1

2、強制檢測文件系統

e2fsck -f /dev/mapper/jat-pap1

3、resize文件系統

[root@centos6 ~]$ fsadm resize /dev/jat/pap1 3G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/mapper/jat-pap1 to 786432 (4k) blocks.
The filesystem on /dev/mapper/jat-pap1 is now 786432 blocks long.

4、縮減LV

[root@centos6 ~]$ lvchange -an /dev/jat/pap1        #停止pap1工作
[root@centos6 ~]$ lvreduce -L 3G /dev/jat/pap1      #縮減至3G
  Size of logical volume jat/pap1 changed from 4.00 GiB (1024 extents) to 3.00 GiB (768 extents).
  Logical volume pap1 successfully resized.

5、激活,掛載

lvchange -ay /dev/jat/pap1
mount /dev/jat/pap1 /mnt/pap1

六、移除PV

移除PV正確操作不會毀壞數據

例如移除/dev/sdb1 此PV

[root@centos6 ~]# pvmove /dev/sdb1   #先把此PV內分配走PE轉移到其他PV上
  /dev/sdb1: Moved: 0.1%
  /dev/sdb1: Moved: 12.9%
  /dev/sdb1: Moved: 22.5%
  /dev/sdb1: Moved: 32.7%
  /dev/sdb1: Moved: 42.2%
  /dev/sdb1: Moved: 52.3%
  /dev/sdb1: Moved: 62.8%
  /dev/sdb1: Moved: 71.6%
  /dev/sdb1: Moved: 82.8%
  /dev/sdb1: Moved: 93.5%
  /dev/sdb1: Moved: 100.0%
[root@centos6 ~]# vgreduce jat /dev/sdb1    #在卷組中移除
  Removed "/dev/sdb1" from volume group "jat"
[root@centos6 ~]# pvremove /dev/sdb1        #最后清除PV標志
  Labels on physical volume "/dev/sdb1" successfully wiped

七、LVM快照功能

快照是一種特殊的邏輯卷,是復制原始卷的元數據而建立的邏輯卷,因此它創建速度很快,而且與原始卷在同一卷組。LVM 快照利用一種稱為“寫時復制(COW – Copy-On-Write)”的技術來跟蹤和維持其數據的一致性。當原始卷的數據塊(指原始卷所包含的所有數據塊,即是空白數據塊)第一次寫入新數據時,會將舊數據塊內容拷貝至快照空間中,也就是說如果只是刪掉原始卷某一文件,但是其占用的數據塊內容沒有改變,刪除文件只是不再占有這些數據塊,COW認為數據塊內容沒發生改變,所以不會占用快照空間;還有如果數據塊已經重寫過一次數據,COW不會再跟蹤。

分配給快照的空間,要依據寫入的數據量多大和寫入的頻率,不一定要指派原始卷一樣大的空間??煺湛臻g可以擴展或縮減。

利用快照可以記錄一個正在使用中的邏輯卷,然后制作一份拍照時刻的備份,由于這個備份是具有一致性的,因此非常的適合于用來備份實時系統。例如,您的運行中的數據庫可能即使在備份時刻也是不允許暫停服務的,那么就可以考慮使用LVM的快照模式,然后再針對此快照來進行文件系統級別或者塊設備級別的數據備份。

創建快照

為pap1創建一個快照,大小為128M

[root@centos6 pap1]$ lvcreate -s /dev/jat/pap1 -n snap_pap1 -L 128M 
  Logical volume "snap_pap1" created.

查看LV信息,已經有快照相關信息生成

blob.png

blob.png

快照邏輯卷創建時帶有文件系統,可以直接掛載,建議只讀掛載

[root@centos6 pap1]# mount -r /dev/jat/snap_pap1 /mnt/snap
[root@centos6 pap1]# ll !$
ll /mnt/snap
total 22
drwxr-xr-x. 128 root root  8192 Sep  3 21:04 etc        可以看見原邏輯卷的文件
drwx------.   2 root root 12288 Sep  2 22:21 lost+found
[root@centos6 pap1]# rm -rf /mnt/pap1/etc/issue    #刪掉原邏輯卷一個文件做試驗
[root@centos6 pap1]# cat /mnt/s
sdb1/ snap/ 
[root@centos6 pap1]# cat /mnt/snap/etc/issue        #快照區備份了原文件,證明備份有效
System time is \t
CentOS release 6.8 (Final)
Kernel \r on an \m
what is your pincode ?

原創文章,作者:cutemsyu,如若轉載,請注明出處:http://www.www58058.com/42892

(0)
cutemsyucutemsyu
上一篇 2016-09-06
下一篇 2016-09-06

相關推薦

  • 馬哥linux0728課程內容

    課堂學習內容   -ahistory list –.bash_histroy 保存歷史列表到歷史文件 -cclear history list 清空歷史列表 -d deletehistory entru 清除歷史列表某一條命令 -rread .bash_history 讀歷史文件中的命令到歷史列表…

    Linux干貨 2016-08-04
  • DNS 正反向解析 主從配置

    我的環境是     192.168.1.130    主DNS      192.168.1.112    從DNS DNS 的安裝包有bind bind-libs bind-utils 安…

    Linux干貨 2016-01-05
  • 創建CA

    創建CA和申請證書 創建私有CA: 首先在CA服務器端創建CA。 先去看openssl的配置文件: /etc/pki/tls/openssl.cnf 一般我們不會去更改這個配置文件,但是要去看一下。我們是根據這個文件創建的CA. 這個文件里是openssl的配置文件,我們打開后只觀察與CA有關的文件。   在文本中可以看出一個主機中可以有多個CA,…

    2017-07-28
  • Linux磁盤及文件系統管理

    磁盤(Hard Disk Drive,簡稱HDD)是一種存儲介質,傳統的機械硬盤由一個或多個鋁制或玻璃制的碟片組成,碟片外覆蓋有鐵磁性材料。 磁盤的物理結構一般由磁頭與碟片、電動機、主控芯片與排線等部件組成;當主電動機帶動碟片旋轉時,副電動機帶動一組(磁頭)到相對應的碟片上并確定讀取正面還是反面的碟面,磁頭懸浮在碟面上畫出一個與碟片同心的圓形軌道(磁軌或稱柱…

    Linux干貨 2015-04-20
  • Java中的Map List Set等集合類

    Map List Set等集合類: 一、概述 在JAVA的util包中有兩個所有集合的父接口Collection和Map,它們的父子關系: +Collection 這個接口extends自 –java.lang.Iterable接口 ├+List(接口 代表有序,可重復的集合。列表) │├ ArreyList   &…

    Linux干貨 2015-04-07
  • nginx 基礎筆記

    一、Nginx 優點 高性能web,可以支持反向代理 比Apache性能優越,支持更多的并發連接,但資源占用很少,輕量級的web服務器。可以支持高達50000個并發連接數的響應 Nginx 在Linux 2.6+ 使用epoll模型,提供卓越性能 做為負載均衡服務器,可以在內部直接支持PHP和Rails,也可以支持作為HTTP代理服務器對外進行服務 Ngin…

    Linux干貨 2016-03-19

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-10 09:23

欧美性久久久久