(一)LVM
LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管
理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
卷:一系列罗列的组织方式。
优点:硬盘就不必使用分区,可以随意扩展或者缩小某个分区的大小
(二)LVM工作原理
PV (Physical volume) 物理卷,例如一个硬盘,或一个Software RAID设备; 硬盘的一个分区 (或
者甚至硬盘本身或者回环文件),在它上面可以建立卷组
VG (Volume group) 卷组,将一组物理卷收集为一个管理单元。逻辑的映射设备。卷组VG的大小
受PE的个数限制,而不是受容量限制。
PE (Physical extent)物理块,划分物理卷的数据块;当相应的物理卷加入到相应的卷组的时
候,才真正产生PE的划分。PE是卷组操作物理卷的方式,操作物理卷
存储的相应的单位。PE越大,卷组所能容纳的空间越大。
LV (Logical volume)逻辑卷,等同于传统分区,可看作便准块设备,以容纳文件系统。LV的组成单
元成为LE。
LE 是多个PE的连续映射。
LV划分:线性划分,条带式划分
(三)LVM操作
1、创建PV(物理卷)
pvcreate
1)新建两个200M的分区
2)执行partprobe使分区表立即生效
3)执行pvcreate /dev/sda7
pvcreate /dev/sda8
创建pv,可以一次全部创建。建议单独创建
创建完成。
4)使用pvdisplay查看创建结果
2、创建VG(卷组)
基本格式
vgcreate 卷组名 物理卷对应设备
参数
-l 最大的逻辑卷数量,控制最大可以创建多少个逻辑卷
-p 最多可以容纳多少个物理卷
-s 物理扩充的大小,VG扩充的最大容量,相应单位的大小决定单个PE大小
1)vgcreate vg0 /dev/sda7
2)使用vgdisplay查看vg创建结果
PE size 4M ,存储的单元,划分LV的最小步长即划分LV的时候必须是4的倍数。
3、创建LV(逻辑卷)
基本格式
lvcreate 相应卷组的名称 创建出的逻辑卷名称
参数:
-L 指定相应的大小和单位
-l(小写L) 划分多少个LE给LV
-i 指定相应LV的步长。如果有多个PV,通过PV划分相应的LE和LV,两个PV之间切换的频率即步长
间做一次交换
-n 指定名称,如果不指定名称,系统会默认一个名称
1)lvcreate -L 100M -n lv0 vg0
2)lvdisplay查看lv的划分
LV write Access 是否可写
3)LV划分出来之后,就可以把LV当成分区进行格式化使用
mkfs -t ext3 /dev/vg0/lv0
4) 进行挂接
mount /dev/vg0/lv0 /mnt
(四)扩张
1)PV的扩张就是使用pvcreate命令创建更多的pv;
2)VG的扩张将新建的pv加入到vg中来扩充整个VG的大小;
(1)pvs简要查看
(2)使用vgextend命令扩张VG的大小
vgextend参数
-A 自动做一个备份,注意备份的是VG本身的信息,不是VG存放的数据
<1>vgextend vg0 /dev/sda8
<2>使用vgdisplay查看
3)LV的扩张
(1)首先使用lvdisplay查看lv的大小
(2)lvextend -L +100M /dev/vg0/lv0(绝对路径而不是名称)
+100M表示原有的基础上增加100M,
不用+,直接跟100M,表示增加到100M
(3)lvdisplay查看
(4)df -h查看当前已挂接文件的大小
发现大小为97M,没有扩张到200M;LV扩大了,文件系统却没有扩大。现在需要重新计算文件系
统,并且生成inode和block的对应关系。
(5)现在卸载挂接
umount /mnt
(6)resize2fs重置大小
格式
resize2fs 设备 新的大小
resize2fs /dev/vg0/lv0 200M
提示先检查磁盘
(7)执行e2fsck检查
e2fsck -f /dev/vg0/lv0
(8)现在重新执行resize2fs /dev/vg0/lv0 200M
(9) 挂接并查看空间,显示空间已扩展。
必须执行e2fsck的原因:
如果不执行e2fsck检查磁盘,相应的resize2fs后跟的磁盘大小无法确定。只有执行检查之后,依
据blocks的数量才能计算出大小。
使用tune2fs –-l 检查磁盘文件系统的相应文件报告,
显示的内容和dump2fs类似
调整LV大小的过程:
扩大LV的顺序:
增大lv (lvextend)-->卸载挂接(umount)-->扫描磁盘(e2fsck)-->修改文件系统大小(resize2fs)-->重新挂接(mount)
缩小LV的顺序:
卸载挂接(umount)-->扫描磁盘(e2fsck)-->修改文件系统大小(resize2fs)-->缩小LV(lvreduce)-->重新挂接(mount)
(五)缩小LV
提示:如果情况允许,缩小LV之前建议将数据备份。
1、首先检查挂接
2、执行umount /mnt卸载挂接(注意:一定要先卸载)
3、现在如果直接执行reszie2fs,系统依然提示首先执行e2fsck检查磁盘
4、执行e2fsck -f /dev/vg0/lv0检查
5、现在缩小文件系统
经验:首先要注意当前lv已用空间大小;缩减时建议预留出多一些空间,避免出现意外情况,造成数
据丢失。
lvreduce -L -100M /dev/vg0/lv0
-100M:表示减少100M
没有 - ,100M 表示减少到100M
1)执行lvreduce -L 100M /dev/vg0/lv0,
2)提示警告,可能会损坏数据;并再次确认,输入y确认
3)lvdisplay查看lv空间已缩成100M
4)执行mount /dev/vg0/lv0 /mnt 挂接
5)df -h
(六)缩小VG
格式
vgreduce 名称 物理卷路径
1、使用vgdisplay查看,有两个PV
2、使用vgs查看vg0大小是284M
3、执行pvs查看,有两个pv同属于vg0,并且/dev/sda8显示无数据,因此可以安全的把/dev/sda8从
vg0下卸载。
4、vgreduce vg0 /dev/sda8
5、执行vgdisplay查看,VG缩减为194M
(七)删除LVM
删除之前首先卸载挂接
1、删除LV
lvremove /dev/vg0/lv0
再次要求确认,输入y继续
现在执行lvdisplay无输出,确认LV已经删除。
2、删除VG
格式
vgremove 名称
执行vgremove vg0
执行vgdisplay查看无输出,确认vg已经删除
3、执行pvs查看,/sda7,/sda8都没有所属的Vg
删除PV:
分别执行pvremove /dev/sda7
pvremove /dev/sda8
执行pvdispaly无输出,确认pv已经删除
(八)迁移LVM
<一> LVM的PV和PV之间的数据迁移,例如替换故障硬盘
构建一个LVM环境,操作和之前的一样
1、执行pvcreate /dev/sda7
vgcreate vg0 /dev/sda7
vgcreate vg0 /dev/sda7
lvcreate -L 100M -n lv0 vg0
mkfs -t ext3 /dev/vg0/lv0
mount /dev/vg0/lv0 /mnt
2、切换到/mnt目录
3、退出/mnt目录,执行pvs查看
4、现在将/dev/sda7的数据迁移到/dev/sda8分区中,同时使用sda8。
1)执行vgextend vg0 /dev/sda8,将/sda8加入vg0中
2)执行pvs查看,/dev/sda8已经加入到vg0中
3)执行pvmove /dev/sda7 /dev/sda8,将sda7的数据迁移到sda8。注意是pvmove命令
4)执行pvs查看
5)执行lvdiplay,切换到/mnt目录查看数据正常
6)执行vgreduce vg0 /dev/sda7,移除出当前的VG
7)查看确定sda7的数据已经迁移到sda8中
生产中,迁移LVM较为少用
<二>系统升级LVM迁移到新的系统,将LVM]整个导出
1、首先卸载LV的挂接
2、执行vgchange -a n vg0,下线VG
3、导出卷:
切换到/tmp/work目录下,执行vgexport导出
4、执行vgdisplay查看,VG的信息已经导出到磁盘的记录上
5、pvscan 扫描pv,判断硬盘是否是PV
6、导入卷:
执行vgexport -a vg0导入到新的系统内;
7、在新的系统内,执行vgdisplay就可以查看到VG的相关信息
8、执行vgchange -a y vg0 重新激活VG
至此,LVM从一台机器迁移到另外一台机器上操作全部完成
(九)LVM快照
1、重新创建LVM
执行vgcreate vg1 /dev/sda7
lvcreate -L 100M -n lv1 vg1
mkfs -t ext3 /dev/vg1/lv1
2、lvcreate –s 创建快照
1)lvcreate -L 1M -s -n snap1 /dev/vg1/lv1
(改变幅度) (快照名称) (快照相应LV)
2)执行mount /dev/vg1/snap1 /tmp/work 挂载,比较/mnt和/tmp/work下的数据,内容一样
3)执行echo 234 > /mnt/file,改变原有的file文件;查看快照发现保留了原有的数据。
转载于:https://blog.51cto.com/wangjifu/1242970