lvm逻辑卷管理器

  LVM:Logical Volume Manager 。LVM利用Linux内核的device-mapper功能来实现存储系统的虚拟化(系统分区独立于底层硬件)。 通过LVM,你可以实现存储空间的抽象化并在上面建立虚拟分区(virtual partitions),可以更简便地扩大和缩小分区,可以增删分区时无需担心某个硬盘上没有足够的连续空间,避免为正在使用的磁盘重新分区的麻烦、为调整分区而不得不移动其他分区的不便。

 

LVM的基本组成部分如下:

物理卷 (PV)一个可供存储LVM的块设备. 例如: 一块硬盘, 一个MBR或GPT分区, 一个回环文件, 一个被内核映射的设备 (例如 dm-crypt).它包含一个特殊的LVM头。

卷组 (VG):物理卷的一个组,作为存放逻辑卷的容器。 PEs are allocated from a VG for a LV.

逻辑卷 (LV):"虚拟/逻辑卷"存放在一个卷组中并由物理块组成。是一个类似于物理设备的块设备,例如,你可以直接在它上面创建一个文件系统文件系统。

物理块 (PE):一个卷组中最小的连续区域(默认为4 MiB),多个物理块将被分配给一个逻辑卷。你可以把它看成物理卷的一部分,这部分可以被分配给一个逻辑卷。

创建lvm步骤

1、fdisk进行分区,并将磁盘分区格式调整成lvm。(如果是某个分区需要此步骤,如果是某块硬盘略过此步)

       #fdisk

              t

              8e

2、创建pv物理卷(可以将某个分区划分为pv,也可以将某块硬盘化为pv)

       查看pv命令

           # pvdisplay          

              # pvs

       创建pv步骤               

              # pvcreate /dev/sda3(某分区) /dev/sdb(某硬盘)

注意:如创建某个硬盘如/dev/sda创建的pv时报错(如下):

Device /dev/sda excluded by a filter

原因:此硬盘已经分区,存在分区表,可以将某个分区划分为pv如/dev/sda1等,如果要将/dev/sda整个硬盘划分为pv可以破坏硬盘/dev/sda的分区表,然后再创建

破坏分区表的两种方法:

    # dd if=/dev/urandom of=/dev/sda bs=512 count=1

    # wipefs -a /dev/sda

   

3、创建vg卷组

       查看vg命令:

              # vgs

              # vgdisplay

       创建vg步骤1:

              # vgcreate [-s 16M] VG_Name /dev/sda3 /dev/sdb  

                     -s 16M #指定PE大小为16M,如不指定默认为4M

       步骤2(扩展vg时用):

              # vgextend VG_Name /dev/sda4

4、创建lv逻辑卷

       查看lv命令

              # lvs

              # lvdisplay

       创建lv步骤1:

       # lvcreate -L #[mMgGtT] -n LV_Name VG_Name

              -l 3000    # 3000为pe的个数

              -L 8G        # 8G为实际容量容量,建议采用此方法

       步骤2:对创建好的lv逻辑卷生成文件系统

              # mke2fs -t ext4 /dev/VG_Name/LV_Name

       步骤3:将lv挂载

              # mount /dev/VG_Name/LV_Name /media

5、扩大lv逻辑卷

方法一:

       步骤1:扩大逻辑卷

              # lvextend -L [+]#[mMgGtT] -n /dev/VG_Name/LV_Name   

                     -l +100%FREE                           #将所有剩余空间都进行扩展

 

       步骤2:将扩大的逻辑卷空间进行文件系统扩展调整

              (1)ext系列扩展文件系统采用此命令

                     # resize2fs /dev/VG_Name/LV_Name

              (2)xfs系列扩展文件系统采用此命令,注意:要接挂载的目录/media

                     # xfs_growfs /media         

方法二:

       可通过一条命令直接扩展文件系统,替代步骤1和步骤2,包括ext,xfs    

              # lvextend -r -L [+]#[mMgGtT] -n /dev/VG_Name/LV_Name        

6、缩减lv逻辑卷:只有ext系列支持缩减,xfs不支持缩减

       步骤一:取消挂载

              # umount  /dev/VG_Name/LV_Name

       步骤2:检查文件系统完整性

              # e2fsck -f /dev/VG_Name/LV_Name   

       步骤3:缩减文件系统容量

              # resize2fs /dev/VG_Name/LV_Name #[mMgGtT]           

       步骤4:缩减逻辑卷容量

              # lvreduce -L [-]#[mMgGtT] /dev/ VG_Name/LV_Name

       步骤5:重新挂载缩减好的逻辑卷

              # mount  /dev/VG_Name/LV_Name  /media

  

7、快照:创建快照相当于针对某个逻辑卷lv创建了还原点。快照卷和原逻辑卷lv在同一个卷组vg中。

       需要查看vg中空间是不是够创建快照,创建快照也相当于创建一个lv

创建快照:

       # lvcreate  -L #[mGgGtT] -p r -s -n snapshot_lv_name /dev/VG_Name/LV_Name

              -p r  # 设置快照为只读属性

              -s    # 创建快照

       示例:

              # lvcreate -L 1G -p r -s -n kuaizhao /dev/VG_Name/LV_Name     

       注意:快照可以像一般的lv一样挂载,xfs的快照挂载的时候需要给mount加扩展选项 # mount -o nouuid,ro

 

快照还原:

       步骤1:取消快照和逻辑卷的挂载

         # umount /users

       步骤2:将快照合并到源lv上,注意还原后快照自动删除

         # lvconvert --merge /dev/VG_Name /kuaizhao

lvm创建举例:

1) 创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小 为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录
# pvcreate /dev/sdb /dev/sdc                 #创建pv
# vgcreate -s 16M  testvg /dev/sdb  /dev/sdc     #创建vg
# lvcreate -L 5G -n testlv testvg             #创建lv
# mkfs.ext4 /dev/testvg/testlv                #创建lv的文件系统
# mkdir  /users                              #创建挂载目录
# mount /dev/testvg/testlv /users/            #挂载

2) 扩展testlv至7G,要求archlinux用户的文件不能丢失
# cp -a /etc/ /users/                         #复制测试文件
# lvextend -r -L 7G -n /dev/testvg/testlv      #扩展lv到7G

3) 收缩testlv至3G,要求archlinux用户的文件不能丢失
# umount /users/                           #卸载
# e2fsck -f /dev/testvg/testlv             #检查文件系统
# resize2fs /dev/testvg/testlv 3G          #缩减文件系统
# lvreduce -L 3G /dev/testvg/testlv        #缩减lv容量
# mount /dev/testvg/testlv /users/         #挂载

4) 对testlv创建快照,并尝试基于快照备份数据,验证快照的功能
# lvcreate -L 1G -p r -s -n kuaizhao /dev/testvg/testlv   #创建快照
# rm /users/etc/passwd                       #删除文件测试
# umount /users/
# lvconvert --merge /dev/testvg/kuaizhao            #快照恢复
# mount /dev/testvg/testlv /users/                 #重新挂载恢复后的lv
# ls /users/etc/passwd                        #查看文件是否恢复
原文地址:https://www.cnblogs.com/ysuwangqiang/p/11484776.html