Linux之LVM设备的管理
LVM可以理解为可扩展的设备;在设备空间不足的时候,保证其在原始数据不变的情况下增大设备的存储大小。那么,要达到这种效果,我们得把可用设备先比变为物理卷,再把物理卷处理为物理卷组,最后成为LVM逻辑卷!现在对以下概念做解释:
物理分区 p ---->虚拟机可用的设备
物理卷 pv ---->被lv命令处理过的物理分区
物理卷组 vg ---->被组装到一起的物理卷
图里扩展 pe ---->lvm设备的最小存储单元,lvm是pe的整数倍
逻辑卷 lvm ---->直接使用的设备,可以增大缩小并保持原有数据
df -h /mnt ## 统计时单位为2^n,总量除以1024
1、LVM的创建
1)步骤:
分区并设定分区标签为8e (使用fdisk /dev/vdb 中,使用t来修改分区标签为8e)
vgcreate vg0 /dev/vdb1 ## 把物理卷处理为物理卷组,且命名为vg0
lvcreate -L 20M -n lv0 vg0 ## 再vg0中取出大小为20M的空间给lv0
mkfs.xfs /dev/vg0/lv0 ##把lv0设备进行格式化
mount /dev/vg0/lv0 /mnt ##挂载
df -H /mnt ## 查看lv0的信息
2)示例:把/dev/vdb1创建为lvm设备
此时,我们可以看到/mnt的大小为18M,
2.LVM支持热拉伸
lvextend -L 80M /dev/vg0/lv0 ##拉伸设备
xfs_grows /dev/vg0/lv0 ##拉伸文件系统
示例: 扩大LV0的容量(提示LV0设备最大可以到52M)
2)当vg中容量不足时
再次建立分区并修改标签为8E
pvcreate /dev/vdb2 ## 拉伸物理卷组
vgextend vg0 /dev/vdb2
lvextend -L 80M /dev/vg0/lv0
xfs_grow /dev/vg0/lv0
pvs ##查看pv信息
vgs ##查看vg信息
lvs ## 查看lv信息
df -H ## 查看挂载信息
df -H /dev/vg0/lv0
示例: 建立分区/dev/vdb2并进行相关操作加入vg0中
注意:xfs文件系统不可以缩减,设备可以
1)查看当前挂载设备的文件类型,并将其格式化为ext
显示/dev/mapper/vg0-lv0的类型为xfs
对数据进行格式化,并查看结果:
2)对ext文件类型进行拉伸
lvextend -L 250M /dev/vg0/lv0 ##此时,lvs显示结果为252
resize2fs /dev/vg0/lv0 ##拉伸文件系统
3)缩减lvm:
卸载/mnt设备后,使用命令-- e2fsck -f /dev/vg0/lv0--进行扫描,确定设备数据的大小(现在为52M)
使用命令--resize2fs /dev/vg0/lv0 40M --缩减文件系统大小(不可以比设备大)
[root@localhost ~]# lvreduce -L 40M /dev/vg0/lv0
##重新指定,并提示是否缩减设备
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv0 vg0 -wi-ao---- 40.00m
4)缩减vg
vgreduce vg0 /dev/vdb2 ##取出多余的设备
5)移动空闲pv
pvmove /dev/vdb1 /dev/vdb2 ## 把设备1中的数据移到2中
vgreduce vg0 /dev/vdb1 ##从组中移出多余的设备2
pvremove /dev/vdb1 ## 把空闲vdb1中pv中移除
当在文件中写入东西后,卸载设备,此时看不到里面的东西。这时需要做一个快照出来。快照的大小取决与要写入文件中的大小.
lvremove /dev/vg0/lv0-backup ##移除快照
lvcreate -L 40M -n lv0-backup -s /dev/vg0/lv0 ## 文件大小为40M
mount /dev/vg0/lv0 /mnt ##检测文件是否恢复
示例:快照重新照,还原原始数据
首先对LV0中数据进行查看,并创建32M的快照,在快照中创建文件(执行以下操作 )
对快照中的文件进行复原时,先删除快照,再重新创建一个!
使用命令lvremove /dev/vg0/lv0-backup来删除快照
使用命令 lvremove /dev/vg0/lv0 删除lv0
使用命令vgremove vg0 删除物理卷组vg0
使用命令pvremoce /dev/vdb2 删除物理卷pv
最新文章
- ReactNative&;weex&;DeviceOne对比
- PDA无线数据采集器在仓库管理系统中的应用
- Java_Swing实现小球沿正弦曲线运动的代码
- 检查mysql数据库是否存在坏表脚本
- ios7开发者必知
- 如何使用 RMAN 异构恢复一些表空间
- Stsadm 导入导出子站点
- 1232: [Usaco2008Nov]安慰奶牛cheer
- mysql数据库 索引 事务和事务回滚
- 为什么 asnyc await 可以提高web程序的吞吐量
- LINGO 基础学习笔记
- ASP.Net Mvc实现自定义User Identity用户身份识别系统(2)
- ubuntu18.04 安装pip3
- 有一个字典对象,d = {'a':1,'b':2},请用尽量简洁的代码将d转换成{1: 'a', 2: 'b'}
- CSS实现鼠标经过网页图标弹出微信二维码
- Replace和ReplaceAll的差别
- Xshell拖拽上传文件插件
- FT项目开发技术点(三)
- [loj6038]「雅礼集训 2017 Day5」远行 lct+并查集
- 使用HttpClient发送请求接收响应