码迷,mamicode.com
首页 > 其他好文 > 详细

LVM2常见用法详解

时间:2015-12-20 01:58:33      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:linux lvm

LVM2常见用法详解

1.简介

  LVM(Logical Volume Manager)是逻辑卷管理的意思,是linux环境下对磁盘分区进行管理的一种机制,lvm是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。


2.特点

  可以对磁盘进行动态管理,动态增加或较少逻辑卷大小,而不会丢失现有的数据。


3.基本的逻辑管理概念

  PV(physical volume)- 物理卷

    通常是一个分区,也可以是整个物理硬盘,也可以是raid设备。

  VG(volume group)- 卷组

  多个物理卷的集合,创建在物理卷之上,在卷组创建时候,可以动态添加物理卷到卷组中。一个逻辑卷系统工程中可以只有一个卷组,也可以有多个卷组。

  LV(logical volume)- 逻辑卷

    创建在卷组之上,逻辑卷也可以动态的扩展或缩小空间。卷组中未被分配的卷组空间可以用于创建新的逻辑卷。多个逻辑卷可以属于同一个卷组,也可以属于不同的卷组。

  PE(physical extent)- 物理块


4.通过联系学习使用lvm

  练习1:创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录;


  练习2: 新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录;


  练习3:扩展testlv至7G,要求archlinux用户的文件不能丢失;


  练习4:收缩testlv至3G,要求archlinux用户的文件不能丢失;


  练习5:对testlv创建快照,并尝试基于快照备份数据,验正快照的功能;

5.开始练习

  练习1:

首先准备两个分区,并调整分区类型为linux lvm(8e)

我呢,准备了两个分区/dev/sda5(11G)和/dev/sda6(9G)

##创建PV

语法:pvcreate PhysicalVolume [PhysicalVolume...]


pv的创建很简单,使用命令pvcrete后面直接加你想创建的分区,硬盘或者raid设备,在这里是/dev/sda5和/dev/sda6


pvcreate /dev/sda5 /dev/sda6

##使用pvs和pvdisplay查看pv

 ~]# pvs

    PV         VG   Fmt  Attr PSize  PFree 

/dev/sda2  vg0  lvm2 a--  59.99g  7.99g

/dev/sda5       lvm2 ---  11.01g 11.01g

/dev/sda6       lvm2 ---   9.01g  9.01g

(pvs和pvdisplay都可以显示pv信息,只是pvs显示简要信息,pvdisplay显示详细信息。不带参数会显示所有pv。/dev/sda2是虚拟机自动创建的,对比可以看到,此时,我们创建的pv还并不适于任何一个VG)


##创建Vg

vgcreate [-s|--physicalextentsize PhysicalExtent-Size[bBsSkKmMgGtTpPeE]] 

vgcreate -s 8M testvg /dev/sda5

    (-s指定PE大小,其实可以一步创建20G的vg 使用vgcreate -s 8M  test vg /dev/sda5 /dev/sda6,之所以不这样做,是下面为了演示动态扩展VG大小)

    然后看看效果

 ~]# vgs

 VG     #PV #LV #SN Attr   VSize  VFree 

 testvg   1   0   0 wz--n- 11.00g 11.00g

 vg0      1   4   0 wz--n- 59.99g  7.99g


 ~]# pvdisplay /dev/sda5

--- Physical volume ---

PV Name               /dev/sda5

VG Name               testvg

PV Size               11.01 GiB / not usable 7.16 MiB

Allocatable           yes 

    PE Size               8.00 MiB

Total PE              1408

Free PE               1408

Allocated PE          0

PV UUID               rzEsIK-uHnM-cCTi-Cu82-HQXA-7VH9-Xktpd

(可以看到vg name为testvg,pe大小为8M,pv只有加入到卷组后,才有pe大小的,而且,一旦创建,不能更改)


##使用pvextend动态扩展VG

语法:pvextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]

pvextend testvg /dev/sda6


 ~]# vgs

VG     #PV #LV #SN Attr   VSize  VFree 

testvg   2   0   0 wz--n- 20.00g 20.00g

vg0      1   4   0 wz--n- 59.99g  7.99g

(可以看到testvg的大小变成了20g)


##使用lvcreate创建逻辑卷

语法:lvcreate -L  LogicalVolumeSize[bBsSkKmMgGtTpPeE]} -n|--name  LogicalVolume{Name|Path} Volumgroup


lvcreate -L 5G -n testlv testvg

 

~]# lvs

LV     VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

testlv testvg -wi-a-----  5.00g        

....


~]# ls -l /dev/testvg/

total 0

lrwxrwxrwx 1 root root 7 Dec 19 17:38 testlv -> ../dm-4

(同时,系统在/dev目录下创建了相应的设备文件和符号链接)


最后一步,创建逻辑卷后,在制作文件系统就可以挂在并且使用了

mke2fs -t ext4 /dev/testvg


~]# mke2fs -t ext4 /dev/testvg/testlv 


      现在就可以挂在并且使用了

            mkdir /users

            mount /dev/testvg/testlv /users

~]# mkdir /users

[root@localhost ~]# mount /dev/testvg/testlv /users

[root@localhost ~]# ls /users

lost+found

练习2:

mkdir /users/archlinux

useradd -d /users/archlinux archlinux

su - archlinux

cp -r /etc/pam.d .


练习3:

首先查看testvg是否有足够的剩余空间

 ~]# vgs testvg

 VG     #PV #LV #SN Attr   VSize  VFree 

 testvg   2   1   0 wz--n- 20.00g 15.00g

         

         然后,扩展lv"物理边界",在扩展文件系统边界

 ~]# lvextend -L +2G /dev/testvg/testlv

 Size of logical volume testvg/testlv changed from 5.00 GiB (640 extents) to 7.00 GiB (896 extents).

 Logical volume testlv successfully resized


 (还有另一种格式lvextend -L 7G /dev/testvg/testlv,+意为在原有的基础上增加空间,不带加号代表绝对空间,然后指定逻辑卷路径)


 ~]# lvs

 LV     VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

 testlv testvg -wi-ao----  7.00g  


df -h

/dev/mapper/testvg-testlv  4.8G   11M  4.6G   1% /users


   虽然物理边界增大,但文件系统大小还是不变,下面扩展文件系统边界

    resize2fs /dev/testvg/testlv

练习4:

##lvreduce  — reduce the size of a logical volume


不像lvextend在扩展lv和resize2fs支持挂在时扩展

在使用lvreduce缩减物理边界前,必须先卸载文件系统,还得使用e2fsck -f some_filesystem 强行检查文件系统,resize2fs之后,才能使用lvreduce。


umount /dev/testvg/testlv

e2fsck -f /dev/testvg/testlv

resize2fs /dev/testvg/testlv 3G

lvreduce -L 3G /dev/testvg/testlv

(保持缩减大小一致)


然后检查是否有文件丢失

 

  练习5:

     注意:快照区与被快照区必须要在同一个vg里

     lvcreate -L 200M -s -n snap_testlv /dev/testvg/testlv

     cd /users

     tar cjf /tmp/snap-for-testlv.bz2 *

     rm -rf /users/*

     ls -l 

     tar xjf /tmp/snap-for-testlv.bz2


补充两个知识点,就是vg的缩减和删除lvm

类似lv的缩减,在缩减vg之前,必须先使用pvmove先把你想撤掉的块设备的数据移动到其他还在工作中的pv上

pvmove /dev/sda6

vgreduce testvg /dev/sda6

然后在检查一下


要彻底删除lvm,只需按创建lv相反的操作即可

umount /users

lvremove /dev/testvg/testlv

vgremove testvg

pvremove /dev/sda5 /dev/ada6 ...


LVM2常见用法详解

标签:linux lvm

原文地址:http://8522687.blog.51cto.com/8512687/1726431

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!