逻辑卷管理lvm(Logical Volume Manager)

1.什么是lvm?
LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制
它由Heinz Mauelshagen在Linux 2.4内核上实现,目前最新版本为:稳定版1.0.5,开发版 1.1.0-rc2,以及LVM2开发版
Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间
普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小
当一个逻辑分区存放不下某个文件时,这个文件受上层文件系统的限制,不能跨越多个分区来存放,所以也不能同时放到别的磁盘上
而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接
或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题
随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小

2.lvm的基本术语
LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局
提供一个抽象的存储卷,在存储卷上建立文件系统

物理存储介质(Physical  Storage  Media):
指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元

物理卷(Physical Volume,PV)
指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块
但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数

卷组(Volume Group,VG)
类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成
可以在卷组上创建一个或多个LV(逻辑卷)

逻辑卷(Logical Volume,LV)
类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上
在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)

物理块(Physical Extent,PE)
每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元
PE的大小是可配置的,默认为4MB,所以物理卷(PV)由大小等同的基本单元PE组成

逻辑块(Logical Extent,LE)
逻辑卷LV也被划分为可被寻址的基本单位,称为LE
在同一个卷组中,LE的大小和PE是相同的,并且一一对应

pv    物理卷,被lv命令处理过的物理分区
vg    物理卷组,被组装到一起的物理卷
pe    物理块,lvm设备的最小存储单元是pe的整数倍
lvm    逻辑卷,直接使用的设备,可以增大缩减并保持原有数据不变(其实是用软件虚拟出来的)
3.lvm的应用背景
一个新的东西出现,磁盘应该分多大
随着用户数量的增加,磁盘的大小应该也要变
第一条朋友圈还在,存储在腾讯的服务器上面,存储空间也应该在
通过软件完成伸缩的磁盘设备
我们想让挂载的/data设备大小可以变,可以伸缩的设备
将两个物理分区处理之后可以放在一块了

4.实验环境
设置一个纯净的环境,reset一个虚拟机

逻辑卷管理lvm(Logical Volume Manager)

5.怎样建立一个lvm逻辑卷?
步骤一:使用监控命令:watch -n 1 'pvs;echo======;vgs;echo ========;lvs;echo ======;df -h /data’进行监控

逻辑卷管理lvm(Logical Volume Manager)

步骤二:mkdir /data 新建一个用户使用存储空间的挂载目录

逻辑卷管理lvm(Logical Volume Manager)

步骤三:fdisk -l 查看一个未分区的设备

逻辑卷管理lvm(Logical Volume Manager)

步骤四:fdisk /dev/vdb 划分一个主分区/dev/vdb1 ; wq退出保存(500M)

逻辑卷管理lvm(Logical Volume Manager)

步骤五:fdisk /dev/vdb 按t,将标签写为8e(贴lvm标签)wq退出保存

逻辑卷管理lvm(Logical Volume Manager)

步骤六:pvcreate /dev/vdb1 创建物理分区(将橙子榨成汁)

逻辑卷管理lvm(Logical Volume Manager)

步骤七:vgcreate -s 16M vg0 /dev/vdb1 (将橙子汁倒进一个大容器,单位是16M)

逻辑卷管理lvm(Logical Volume Manager)

步骤八:vgdisplay 可以查看lvm卷的大小

逻辑卷管理lvm(Logical Volume Manager)

步骤九:lvcreate -L 20M -n lv0 vg0(将大容器的橙子汁倒出来小杯子喝,想倒20M,但是最小单位是16M,所以会给我32M)

逻辑卷管理lvm(Logical Volume Manager)

步骤十:mkfs.xfs /dev/vg0/lv0(将分出来的lvm逻辑卷格式化才能挂载)

逻辑卷管理lvm(Logical Volume Manager)

步骤十一:mount /dev/vg0/lv0 /data/(挂载在/data下面客户才能用)

逻辑卷管理lvm(Logical Volume Manager)

步骤十二:df查看是否挂载

逻辑卷管理lvm(Logical Volume Manager)
6.怎样拉伸一个逻辑卷lvm?(客户的数据放不下的时候)
步骤一:输入监控命令:watch -n 1 ‘pvs;echo======;vgs;echo ========;lvs;echo ======;df -h /data’

逻辑卷管理lvm(Logical Volume Manager)

步骤二:分情况处理
第一种情况:当划分出来的主分区/dev/vdb1够用时,直接进行拉伸(一个橙子够喝的时候)

lvextend -L 100M /dev/vg0/lv0 拉伸lvm的大小
逻辑卷管理lvm(Logical Volume Manager)


xfs_growfs /dev/vg0/lv0 同步文件系统的大小
逻辑卷管理lvm(Logical Volume Manager)

第二种情况:当划分出来的主分区/dev/vdb1不够用时(我想将lvm拉伸为600M),先划分一个主分区出来/dev/vdb2,再拉伸

fdisk /dev/vdb
n->p->2->回车->+100M->p查看/dev/vdb2->t->2->8e->p查看->wq保存
逻辑卷管理lvm(Logical Volume Manager)

逻辑卷管理lvm(Logical Volume Manager)

partprobe 同步分区表
逻辑卷管理lvm(Logical Volume Manager)


pvcreate /dev/vdb2 榨橙汁
逻辑卷管理lvm(Logical Volume Manager)


vgextend vg0 /dev/vdb2将橙汁倒进去大杯子
逻辑卷管理lvm(Logical Volume Manager)


lvextend -L 600M /dev/vg0/lv0 拉伸lvm
逻辑卷管理lvm(Logical Volume Manager)


xfs_growfs /dev/vg0/lvo 拉伸文件系统(否则拉伸的文件不能用)
逻辑卷管理lvm(Logical Volume Manager)

说明:xfs文件系统不能进行缩减,ext4文件系统支持缩减,它的拉伸方式与xfs也不太一样

7.怎样将ext4文件系统的设备进行拉伸?
步骤一:umount /data

逻辑卷管理lvm(Logical Volume Manager)

步骤二:mkfs.ext4 /dev/vg0/lv0将设备格式化为ext4文件系统

逻辑卷管理lvm(Logical Volume Manager)

步骤三:mount /dev/vg0/lv0 /data挂载

逻辑卷管理lvm(Logical Volume Manager)

步骤四:blkid查看

逻辑卷管理lvm(Logical Volume Manager)

步骤五:lvextend -L 550M /dev/vg0/lv0 扩展lvm设备

逻辑卷管理lvm(Logical Volume Manager)

步骤六:resize2fs /dev/vg0/lv0 将文件系统也拉伸

逻辑卷管理lvm(Logical Volume Manager)
8.怎样将ext4文件系统的设备进行缩减?
步骤一:umount /data

逻辑卷管理lvm(Logical Volume Manager)

步骤二:e2fsck -f /dev/vg0/lv0扫描这个设备里面的东西,否则直接缩减会造成损坏

逻辑卷管理lvm(Logical Volume Manager)

==步骤三:resize2fs /dev/vg0/lv0 100M 缩减文件系统 ==

逻辑卷管理lvm(Logical Volume Manager)

步骤四:mount /dev/vg0/lv0 /data

逻辑卷管理lvm(Logical Volume Manager)

步骤五:df -H /data 查看大小

逻辑卷管理lvm(Logical Volume Manager)

步骤六:lvreduce -L 100M /dev/vg0/lv0 缩减lvm设备

逻辑卷管理lvm(Logical Volume Manager)
9.怎样将/dev/vdb2下的东西移到/dev/vdb1,然后将/dev/vdb2空闲出来?
步骤一:pvmove /dev/vbd2 /dev/vdb1完全移过去再操作,否则会损坏文件

逻辑卷管理lvm(Logical Volume Manager)

步骤二:vgreduce vg0 /dev/vdb2 将这个橙汁移走

逻辑卷管理lvm(Logical Volume Manager)

步骤三:pvremove /dev/vdb2

逻辑卷管理lvm(Logical Volume Manager)

10.怎样删除一个lvm设备?
步骤一:umount /data

逻辑卷管理lvm(Logical Volume Manager)

步骤二:lvremove /dev/vg0/lv0-backup

逻辑卷管理lvm(Logical Volume Manager)

步骤三:lvremove /dev/vg0/lv0

逻辑卷管理lvm(Logical Volume Manager)

步骤四:vgremove vg0

逻辑卷管理lvm(Logical Volume Manager)

步骤五:pvremove /dev/vdb2

逻辑卷管理lvm(Logical Volume Manager)

步骤六:fdisk /dev/vdb 删除建立的所有主分区即可

逻辑卷管理lvm(Logical Volume Manager)