热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

文件系统之LVM详解

LVM是LogicalVolumeManager逻辑卷管理的简写,主要功能对卷能够进行方便的动态扩展和缩减,大提高了磁盘管理的灵活性,工作原理大概如下几

LVM是 Logical Volume Manager逻辑卷管理的简写,主要功能对卷能够进行方便的动态扩展和缩减,大提高了磁盘管理的灵活性,工作原理大概如下几点
1.物理磁盘被格式化为PV(Physical Volume) 物理卷,空间被划分为一个个的PE(Physical Extend) 物理拓展
2.把PV加入到VG(Volume Group) 卷组中,在VG中以PE的形式展示
3.LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同的物理磁盘,但都是同一个VG中PE
4.LV现在就直接可以格式化后挂载使用了
5.LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,其过程不会丢失原始数据

文件系统之LVM详解

具体实现

centos7 默认没有lvm工具,需要安装lvm2

yum install -y lvm2

准备2块8e格式的分区块

Device Boot Start End Blocks Id System
/dev/sdb9 8400896 10498047 1048576 8e Linux LVM
/dev/sdb10 10500096 14694399 2097152 8e Linux LVM

1、创建pv

[root@localhost mnt]# pvcreate /dev/sdb9
[root@localhost mnt]# pvcreate /dev/sdb10
[root@localhost mnt]# pvsPV VG Fmt Attr PSize PFree/dev/sdb10 lvm2 --- 2.00g 2.00g/dev/sdb9 lvm2 --- 1.00g 1.00g#详细查看
[root@localhost mnt]# pvdisplay

2、创建vg并扩展

[root@localhost mnt]# vgcreate myvg /dev/sdb9
[root@localhost mnt]# vgextend myvg /dev/sdb10
[root@localhost mnt]# vgsVG #PV #LV #SN Attr VSize VFreemyvg 2 0 0 wz--n- 2.99g 2.99g#详细查看
[root@localhost mnt]# vgdisplay myvg

3、lv创建

[root@localhost mnt]# lvcreate -L 1G -n mylv myvg#查看
[root@localhost mnt]# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertmylv myvg -wi-a----- 1.00g

4、创建文件系统并挂载

[root@localhost mnt]# mkfs.ext4 -L mylv /dev/myvg/mylv
[root@localhost mnt]# mount /dev/myvg/mylv /mnt/t3
[root@localhost mnt]# df -h|grep mapp
/dev/mapper/myvg-mylv 976M 2.6M 907M 1% /mnt/t3

5、扩展lv 先要查看当前lv所在的组vg还有多少空间

[root@localhost mnt]# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertmylv myvg -wi-ao---- 1.00g
[root@localhost mnt]# vgs myvgVG #PV #LV #SN Attr VSize VFreemyvg 2 1 0 wz--n- 2.99g 1.99g[root@localhost mnt]# lvextend -L 2G /dev/myvg/mylv#扩展文件系统
[root@localhost mnt]# resize2fs /dev/myvg/mylv
#检查
[root@localhost mnt]# df -h|grep mapp
/dev/mapper/myvg-mylv 2.0G 3.0M 1.9G 1% /mnt/t3

6、缩减lv 是为了腾出pe

[root@localhost mnt]# umount /dev/mapper/myvg-mylv
[root@localhost mnt]# e2fsck -f /dev/mapper/myvg-mylv
[root@localhost mnt]# resize2fs /dev/myvg/mylv 512M
#这步之前必须确定1G是否能装下源文件
[root@localhost mnt]# lvreduce -L 512M /dev/myvg/mylv

7、 查看VFree是否大于 下面要移除的分区

[root@localhost mnt]# vgsVG #PV #LV #SN Attr VSize VFreemyvg 2 1 0 wz--n- 2.99g 2.49g
[root&#64;localhost mnt]# pvsPV VG Fmt Attr PSize PFree/dev/sdb10 myvg lvm2 a-- <2.00g <1.50g/dev/sdb9 myvg lvm2 a-- 1020.00m 1020.00m

8、先转义pe数据&#xff0c;在缩小vg&#xff0c;在移除pv

[root&#64;localhost mnt]# pvmove /dev/sdb10/dev/sdb10: Moved: 10.94%/dev/sdb10: Moved: 100.00%
[root&#64;localhost mnt]# vgreduce myvg /dev/sdb10Removed "/dev/sdb10" from volume group "myvg"
[root&#64;localhost mnt]# pvremove /dev/sdb10Labels on physical volume "/dev/sdb10" successfully wiped.

9、如果vg也不要了 这里省去了移除lv操作[lvremove myvg/mylv]

[root&#64;localhost mnt]# vgremove myvg
Do you really want to remove volume group "myvg" containing 1 logical volumes? [y/n]: y
Do you really want to remove active logical volume myvg/mylv? [y/n]: yLogical volume "mylv" successfully removedVolume group "myvg" successfully removed
[root&#64;localhost mnt]# pvremove /dev/sdb9Labels on physical volume "/dev/sdb9" successfully wiped.


快照介绍

原理介绍&#xff1a;快照是对源卷的备份&#xff0c;是基于同一个lv卷的实现。
快照卷特性&#xff1a;
1.源卷的另外一个访问入口
2.快照之后当源卷的已有文件发生变化时候&#xff0c;会复制源文件到快照卷中
3.新增的文件不会复制到快照卷

文件系统之LVM详解

快照&#xff1a;snapshot
lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name original_lv_name
-L 大小
-r onlyread
-s 快照
snapshot_lv_name 快照卷名
original_lv_name 源卷名

1.创建快照 快照卷源卷都是基于mylv逻辑卷

[root&#64;localhost ~]# lvcreate -s -L 500m -n mylv-snap -p r /dev/myvg/mylvUsing default stripesize 64.00 KiB.Logical volume "mylv-snap" created.

2.挂载快照

[root&#64;localhost ~]# mount /dev/myvg/mylv-snap /mnt/t2/
mount: /dev/mapper/myvg-mylv--snap 写保护&#xff0c;将以只读方式挂载[root&#64;localhost ~]# cp /etc/passwd /mnt/t3/ #源卷中文件&#xff0c;之后修改这个文件跟快对比

3、编辑源卷文件

[root&#64;localhost t3]# echo 999999 >> passwd
[root&#64;localhost t3]# tail -1 passwd
999999

3.1、查看快照卷

[root&#64;localhost t2]# tail -1 passwd
marvin:x:1001:1001::/home/marvin:/bin/bash

4、对源卷添加文件

[root&#64;localhost t3]# cp /root/anaconda-ks.cfg /mnt/t2/
cp: 无法创建普通文件"/mnt/t2/anaconda-ks.cfg": 只读文件系统
[root&#64;localhost t3]# cp /root/anaconda-ks.cfg /mnt/t3

4.1、查看快照卷 并没有

[root&#64;localhost t2]# ls
issue lost&#43;found passwd

5、删除快照卷

[root&#64;localhost mnt]# umount /mnt/t2
[root&#64;localhost mnt]# lvremove /dev/myvg/mylv-snap
Do you really want to remove active logical volume myvg/mylv-snap? [y/n]: yLogical volume "mylv-snap" successfully removed

转:https://blog.51cto.com/marvin89/2107080



推荐阅读
author-avatar
手机用户2502913993
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有