Linux中LVM功能使用方法

1.介绍

       LVM全称Logical Volume Manager(逻辑卷管理器),是将存储空间虚拟化成虚拟设备来进行管理的一种机制。LVM本身通过调用Linux内核中的”Device-mapper”功能来实现这种机制。

        LVM组成部分:

  • Physical volume(pv)物理卷:是LVM底层的设备,可以是硬盘分区,硬盘。

  • Volume group (vg)卷组:是组织pv的管理单元。

  • Logical volume(lv)逻辑卷:虚拟分区,既可以存储数据的设备。

  • Physical extent(pe)物理块大小:组成vg中空间的物理单位,默认为4M。(例如:如果VG是400M,也就是有100个PE组成。)

     

2.LVM命令介绍:LVM是个命令集合。

PV(常用命令)

    创建:pvcreate Device

    删除:pvremove Device

    显示信息:pvs(简单信息);pvdisplay(详细信息)

    移动pv设备中的数据(为删除设备准备):pvmove Device

    扫描PV设备:pvscan

VG(常用命令)

    创建VG:vgcreate �Cs 8M   VGname  PVDevice

        -s:选项可以为创建VG时指定PE大小默认4M,范围:8K-16GB,一个逻辑卷(lv)    最多65534个PE。

    扩展VG:vgextend  VGname   PVdevice

    缩小VG:vgreduce VGname PVDeivce

    删除VG:vgremove VGname

    查看VG:vgs(简单)vgdisplay(详细)

LV(常用命令)

    创建LV:lvcreate �CL LogicalVolumeSize �Cn LVname   VGname

              -L:指定LV大小

              -l:指定PE数量,和-L任选其一指定即可。

              -n:指定LV名字

              -s:快照

    扩展LV:lvextend �CL [+] LogicalVolumeSize  LVdevice

                                 -L:指定大小,两种方式,一种直接指定大小,一种指定增加多少。

    缩小LV:lvreduce �CL [-] LogicalVolumeSize  LVdevice

                                 -L:与上相同。

    删除LV:lvremove LVdevice

    查看LV:lvs(简单) lvdisplay(详细)

3.使用方法

环境:centos6.4-x86_64,硬盘:sda(系统),sdb(21G),sdc(21G)

创建LVM的步骤

创建PV:

   1:  root@client ~]# pvcreate /dev/sd{b,c}
   2:    Writing physical volume data to disk "/dev/sdb"
   3:    Physical volume "/dev/sdb" successfully created
   4:    Writing physical volume data to disk "/dev/sdc"
   5:    Physical volume "/dev/sdc" successfully created

创建VG

   1:  [root@client vg_client]# vgcreate vg_test /dev/sd{b,c}
   2:    Volume group "vg_test" successfully created

创建LV(2G)

   1:  [root@client vg_client]# lvcreate -L 2G -n test_lv vg_test
   2:    Logical volume "test_lv" created

查看LV,VG,PV

  
   1:  [root@client vg_client]# vgs
   2:    VG        #PV #LV #SN Attr   VSize  VFree
   3:    vg_test     2   1   0 wz--n- 39.99g 37.99g
   4:  [root@client vg_client]# lvs
   5:    LV      VG        Attr     LSize  Pool Origin Data%  Move Log Copy%  Convert
   6:    test_lv vg_test   -wi-a---  2.00g
   7:  [root@client vg_client]# pvs
   8:    PV         VG        Fmt  Attr PSize  PFree
   9:    /dev/sdb   vg_test   lvm2 a--  20.00g 18.00g
  10:    /dev/sdc   vg_test   lvm2 a--  20.00g 20.00g

格式化LV

   1:  [root@client vg_client]# mkfs.ext3 /dev/mapper/vg_test-test_lv
PS:LV设备的路径,有两个路径可以使用,一个在/dev/mapper下以VGname-LVname命名,
另一个在/dev/下以VGname命名的目录中有以LVname命名的文件。
这两个都是符号链接,真正的设备文件是/dev下的dm*。

挂载后即可使用

   1:  [root@client ~]# mount /dev/mapper/vg_test-test_lv /mnt/lvm
   2:  [root@client ~]# df
   3:  Filesystem           1K-blocks      Used Available Use% Mounted on
   4:  /dev/mapper/vg_test-test_lv
   5:                         2064208     68676   1890676   4% /mnt/lvm

扩展LV容量

   1:  [root@client ~]# lvs           #查看现在LV容量
   2:    LV      VG        Attr     LSize  Pool Origin Data%  Move Log Copy%  Convert
   3:    test_lv vg_test   -wi-ao--  2.00g           #test_lv为2G
   4:  [root@client ~]# lvextend -L +200M /dev/mapper/vg_test-test_lv  #将test_lv增加200M,也可以直接写2.2G
   5:    Extending logical volume test_lv to 2.20 GiB
   6:    Logical volume test_lv successfully resized
   7:  [root@client ~]# lvs         #再次查看LV容量,已经变为2.2G了。
   8:    LV      VG        Attr     LSize  Pool Origin Data%  Move Log Copy%  Convert
   9:    test_lv vg_test   -wi-ao--  2.20g

      PS:扩展完之后还要使用resize2fs更新一下LV容量,以便通知系统内核可以识别。

   1:  [root@client ~]# df -h          #未使用resize2fs更新,系统还是识别为2G
   2:  Filesystem            Size  Used Avail Use% Mounted on
   3:  /dev/mapper/vg_test-test_lv
   4:                        2.0G   68M  1.9G   4% /mnt/lvm
   5:  [root@client ~]# resize2fs -p /dev/mapper/vg_test-test_lv       #更新数据,注意推荐加“-P”选项以便观察进度,更新比较大的卷时尤其有用。
   6:  [root@client ~]# df -h                     #更新后系统已经识别为2.2G
   7:  Filesystem            Size  Used Avail Use% Mounted on
   8:  /dev/mapper/vg_test-test_lv
   9:                        2.2G   68M  2.0G   4% /mnt/lvm

至此整个扩展LV容量的步骤全部结束,为谨慎起见也可以用e2fsck检测一下设备是否有损坏,一般不需要。扩展LV时挂载的系统不需要卸载,可在线操作。那接下来演示一下缩小LV容量的内容。

缩减LV容量(此操作有一定的风险,故而不推荐在生产环境下使用)

   1:  [root@client ~]# lvs   #查看LV分区大小,目前是2.2G
   2:  LV      VG        Attr     LSize  Pool Origin Data%  Move Log Copy%  Convert
   3:  test_lv vg_test   -wi-ao--  2.20g
   4:  [root@client ~]# df   #查看挂载点
   5:  Filesystem           1K-blocks      Used Available Use% Mounted on
   6:  /dev/mapper/vg_test-test_lv   2264896     68676   2081128   4% /mnt/lvm
   7:  [root@client ~]# umount /mnt/lvm  #首先要卸载LV分区
   8:  [root@client ~]# e2fsck -f /dev/mapper/vg_test-test_lv  #对LV分区进行磁盘检测
   9:  [root@client ~]# resize2fs -p  /dev/mapper/vg_test-test_lv 1G  #调整文件系统大小
  10:  [root@client ~]# lvreduce -L 1G /dev/mapper/vg_test-test_lv  #缩减LV分区大小至1G
  11:  Reducing logical volume test_lv to 1.00 GiB
  12:  Logical volume test_lv successfully resized      #挂载后即可使用



再来说下扩展VG和缩减VG

   1:此例演示更换一个VG中的PV的过程。
   2:  [root@client ~]# vgs                                      #查看VG
   3:    VG        #PV #LV #SN Attr   VSize  VFree
   4:    vg_test     2   1   0 wz--n- 39.99g 38.99g
   5:  [root@client ~]# pvs                                      #查看PV
   6:    PV         VG        Fmt  Attr PSize  PFree
   7:    /dev/sdb   vg_test   lvm2 a--  20.00g 19.00g
   8:    /dev/sdc   vg_test   lvm2 a--  20.00g 20.00g
   9:  [root@client ~]# pvmove /dev/sdb                #将sdb中的数据移动到同VG中PV中
  10:    /dev/sdb: Moved: 1.6%
  11:    /dev/sdb: Moved: 100.0%
  12:  [root@client ~]# vgreduce vg_test /dev/sdb #将sdb从vg_test中去除
  13:    Removed "/dev/sdb" from volume group "vg_test"
  14:  [root@client ~]# vgs                                        #VG中的容量缩小了
  15:    VG        #PV #LV #SN Attr   VSize  VFree
  16:    vg_test     1   1   0 wz--n- 20.00g 19.00g
  17:  [root@client ~]# pvremove /dev/sdb               #现在可以将sdb从PV中删除
  18:    Labels on physical volume "/dev/sdb" successfully wiped
  19:  现在可以重新创建一个PV加入到VG中
  20:  [root@client ~]# pvcreate /dev/sdb                #重新创建一个PV
  21:    Writing physical volume data to disk "/dev/sdb"
  22:    Physical volume "/dev/sdb" successfully created  #将sdb重新加入到vg_test中
  23:  [root@client ~]# vgextend vg_test /dev/sdb
  24:    Volume group "vg_test" successfully extended
  25:  [root@client ~]# vgs                                         #VG中的容量又恢复了
  26:    VG        #PV #LV #SN Attr   VSize  VFree
  27:    vg_test     2   1   0 wz--n- 39.99g 38.99g
  28:  [root@client ~]# pvs                                              #PV也复原了
  29:    PV         VG        Fmt  Attr PSize  PFree
  30:    /dev/sdb   vg_test   lvm2 a--  20.00g 20.00g
  31:    /dev/sdc   vg_test   lvm2 a--  20.00g 19.00g


LVM的基本应用就是如此几种。LVM给我们提供了非常灵活的管理存储的方式,但是也有些缺点,LVM本身是不能提供数据容灾保障的,需要配合Raid等一些其他手段来综合使用。

你可能感兴趣的:(linux,lvm)