RHCE系列之LVM----操作篇

简介:

  上一篇为大家介绍LVM的一些概念,这一篇就教大家一些日常的LVM的操作吧。毕竟,理论还是要应用到实战中来的嘛。

   本篇博文大致分了8个点为大家阐述和操作LVM的功能,希望能对大家有所帮助。



一、创建新的卷

1、准备物理分区(Physical Partions)

1
使用分区工具(如: fdisk )创建LVM分区,方法同创建其它一般分区的方式一样。区别在于,LVM的分区类型为8e。

2、创建物理卷PV

假设上面创建了分区/dev/sdb1,这里我们用pvcreate创建物理卷PV。

1
2
# pvcreate /dev/sdb1  #使用pvcreate将sdb1转换为物理卷
# pvdisplay            #查看已经存在的PV

3、创建卷组VG

1
# vgcreate -s 4M vgname /dev/sdb1 #将PV(/dev/sdb1)创建名为vgname的PE为4M的VG卷组

4、创建逻辑卷LV

1
2
3
4
# lvcreate -l 10 -n lvname vgname #在vgname卷组上创建名为lvname的占10个PE块大小的LV逻辑卷
-l 指定PE块数量
-L 直接指定大小,例如-L 40M,直接指定40M大小
-n 后跟所要创建的LV的名字

5、格式化逻辑卷

1
2
# mkfs -t ext4 /dev/vgname/lvname #格式化lvname这个逻辑卷为ext4的文件系统
-t 后跟所要格式过去的文件系统名

6、创建挂载点,挂载逻辑卷

1
2
# mkdir /file  #创建挂载目录/file
# mount /dev/vgname/lvname /file  #将逻辑卷lvname挂载到/file挂载点下



二、增加卷组

以下测试在pv和vg都无剩余空间的情况下进行操作实验。

1、准备物理分区(Physical Partions)

1
使用分区工具(如: fdisk )创建LVM分区,方法同创建其它一般分区的方式一样。区别在于,LVM的分区类型为8e。

2、创建物理卷PV

假设上面创建分区/dev/sdb2,,这里我们用pvcreate创建物理卷PV。

1
2
# pvcreate /dev/sdb2  #使用pvcreate将sdb1转换为物理卷
# pvdisplay            #查看已经存在的PV

3、增加卷组VG

1
2
# vgextend vgname /dev/sdb2 #将sdb2这个物理卷加入vgname卷组中
# pvdisplay       #添加完成之后,再次查看PV信息



三、抽离PV并删除

方案一:

1、查看pv使用情况

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# pvdisplay            #查看已经存在的PV
--- Physical volume ---
   PV Name                /dev/sda1
   VG Name               vgname
   PV Size               1019.72 MiB / not usable 3.72 MiB
   Allocatable            yes
   PE Size               4.00 MiB
   Total PE              254
   Free PE               254
   Allocated PE          0
   PV UUID               TEiNQm-3H9i-OpmE-p5cX-KgRS-aGuf-HKaLON
   --- Physical volume ---
   PV Name                /dev/sdb1
   VG Name               vgname
   PV Size               1019.72 MiB / not usable 3.72 MiB
   Allocatable            yes
   PE Size               4.00 MiB
  Total PE              254
   Free PE               80
   Allocated PE          174
   PV UUID               27pvVQ-lERX-91ew-0XL2-Oxbk-NFKh-7l6c4M

2、根据pv信息,抽离空的pv出来

1
# vgreduce vgname /dev/sda1

3、删除抽离出来的pv

1
# pvremove /dev/sda1


方案二:

在sda1被使用的状态下,抽离sda1这个PV

1、查看pv信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# pvdisplay
   --- Physical volume ---
   PV Name              /dev/sda1
   VG Name             vgname
   PV Size               1019.72 MiB / not usable 3.72 MiB
   Allocatable            yes
   PE Size               4.00 MiB
   Total PE              254
   Free PE               80
   Allocated PE          174
   PV UUID              TEiNQm-3H9i-OpmE-p5cX-KgRS-aGuf-HKaLON
   --- Physical volume ---
   PV Name              /dev/sdb1
   VG Name             vgname
   PV Size               1019.72 MiB / not usable 3.72 MiB
   Allocatable            yes
   PE Size               4.00 MiB
   Total PE              254
   Free PE               254
   Allocated PE          0
   PV UUID              Duz6zM-GJwo-8cc5-5Jp2-vGiH-0j0L-gSvUtl

2、移动sda1的中的所有PE到sdb1中

1
2
3
# pvmove /dev/sdb1 /dev/sdd1
   /dev/sda1 : Moved: 0.0%
   /dev/sdb1 : Moved: 100.0%

3、查看现在pv使用情况

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# pvdisplay            #查看已经存在的PV
--- Physical volume ---
   PV Name              /dev/sda1
   VG Name             vgname
   PV Size               1019.72 MiB / not usable 3.72 MiB
   Allocatable            yes
   PE Size               4.00 MiB
   Total PE              254
   Free PE               254
   Allocated PE          0
   PV UUID              TEiNQm-3H9i-OpmE-p5cX-KgRS-aGuf-HKaLON
   --- Physical volume ---
   PV Name              /dev/sdb1
   VG Name             vgname
   PV Size               1019.72 MiB / not usable 3.72 MiB
   Allocatable            yes
   PE Size               4.00 MiB
   Total PE              254
   Free PE               80
   Allocated PE         174
   PV UUID             Duz6zM-GJwo-8cc5-5Jp2-vGiH-0j0L-gSvUtl

4、根据pv信息,抽离空的pv出来

1
# vgreduce vgname /dev/sda1

5、删除抽离出来的pv

1
# pvremove /dev/sda1



四、在线拉伸文件系统

1、查看VG空余

1
# vgdisplay

2、查看LV大小

1
# lvdisplay

3、拉伸逻辑卷大小

1
2
# lvresize -l +888 /dev/vgname/lvname #根据vg内剩余的PE快来指定数量
-l 后面跟+号是增加,跟-号是缩小,不跟就是直接指定大小

4、拉伸文件系统大小

1
# resize2fs /dev/vgname/lvname [nM/G]    若不加大小,则调整到最大

5、查看拉伸后的LV大小

1
# lvdisplay


五、在线缩小文件系统

1、取消挂载

1
# umount /dev/sda1

2、用fsck检查

1
# e2fsck -f /dev/vgname/lvname

3、缩小文件系统大小

1
# resize2fs /dev/vgname/lvname 200M

4、缩小LV大小

1
# lvresize -L -40M  /dev/vgname/lvname

5、重新挂载

1
# mount -a

这里mount -a是按照之前这个分区挂载的条目在/etc/fstab里有的才生效。如果是之前就是临时挂载上的,后来给卸载然后进行缩小文件系统大小了,这时就不能用mount -a重新挂载了。


简单总结:在lvm逻辑卷上,缩小文件系统大小,需要先缩小文件系统大小,然后再缩小逻辑卷大小。就像瓶子里的水,只有先把水倒出去,然后再缩小瓶子大小。


六、删除LVM

1、取消挂载及删除/etc/fstab中条目

1
2
# umount /home   #取消挂载
# vim /etc/fstab   #删除该文件中/home挂载的对应条目

2、移除逻辑卷LV

1
2
# lvchange -an /dev/vgname/lvname   #关闭逻辑卷
# lvremove /dev/vgname/lvname       #移除逻辑卷

3、移除卷组VG

1
2
# vgchange -an /dev/vgname   #关闭卷组
# vgremove /dev/vgname       #移除卷组

4、移除物理卷PV

1
# pvremove /dev/sda1      #移除物理卷

5、删除磁盘分区

1
2
通过 fdisk 删除磁盘分区,这个不做演示
# partx -d --nr 1 /dev/sda   #删除之后,记得用该命令刷新内存条目




七、LVM的迁移

以下操作以迁移VG为主进行的操作,迁移LV同理

1、源主机上操作

①取消所要迁移的文件系统挂载

1
# umount /home

②关闭LV和VG

1
2
# lvchange -an /dev/vgname/lvname
# vgchange -an /dev/vgname

③导出VG

1
# vgexport vgname


2、目标主机上操作

①导入VG

1
#vgimport vgname

②激活VG,挂载文件系统

1
# vgchange -ay vgname

③挂载迁移过来的文件系统

1
2
3
# mkdir /home
# mount /dev/vgname/lvname /home
# df -h    #查看挂载情况



八、LVM的快照功能

     LVM快照有两大用途,一是用来克隆虚拟机,例如做xen虚拟机时,可以先新建一台完整虚拟机,假设大小为10G,然后我们可以在这台10G的虚拟机上创建1个3G的快照,接着通过这个3G的快照启动虚拟机,做完实验后,可以直接删除快照而保持原来完整虚拟机的纯净。二是实时备份(moment-in-time),即为了保持系统的一致性,我们先做一个快照冻结当前系统状态,这样快照里面的内容可暂时保持不变,系统本身继续运行,通过备份快照来实现不中断服务的备份。

另外,我们在创建快照时空间最好大于lvname的变换空间,不然一旦空间大小超过快照的大小,快照就会损坏。

现在假若,我们要对/dev/vgname/lvname做快照,lvname现在使用了100M了。

1、用lvcreate创建快照

1
# lvcreate -L 5M -s -n lvname_snap /dev/vgname/lvname

2、挂载快照

1
# mount /dev/vgname/lvname_snap /snap






命令汇总

1、PV

pvcreat  将partition创建成PV

pvscan   搜索系统里面任何具有PV的磁盘

pvdisplay  显示出系统上面PV的状态

pvremove 将partition的PV属性移除



2、VG

vgcreate  创建VG

vgscan    搜索系统上是否有VG的存在

vgdisplay   显示系统上VG的状态

vgextend   在VG内增加PV

vgreduce   在VG内移除PV

vgchange  设定VG是否启动(active)

vgremove  删除VG


3、LV

lvcreate  创建LV

lvscan 搜索系统内的LV

lvdisplay  显示系统内的LV状态

lvextend  在LV内增加容量

lvreduce  在LV内减少容量

lvremove 删除LV

lvresize  调整LV的容量大小


本篇博文就到这里了,后面会再写一个补充篇来对LVM的一些功能和特性做一些补充。这个嘛,就要我再抽空写喽。










本文转自 aaao 51CTO博客,原文链接:http://blog.51cto.com/nolinux/1350942,如需转载请自行联系原作者

目录
相关文章
|
Kubernetes JavaScript 前端开发
k8s学习--chart包开发(创建chart包)
k8s学习--chart包开发(创建chart包)
675 1
|
Web App开发 存储 缓存
九种浏览器端缓存机制知多少(转)
浏览器缓存(Browser Caching)是浏览器端保存数据用于快速读取或避免重复资源请求的优化机制,有效的缓存使用可以避免重复的网络请求和浏览器快速地读取本地数据,整体上加速网页展示给用户。浏览器端缓存的机制种类较多,总体归纳为九种,这里详细分析下这九种缓存机制的原理和使用场景。
1397 0
|
3天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
271 116
|
18天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
12天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
662 219
|
5天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
344 34
Meta SAM3开源:让图像分割,听懂你的话
|
10天前
|
人工智能 移动开发 自然语言处理
2025最新HTML静态网页制作工具推荐:10款免费在线生成器小白也能5分钟上手
晓猛团队精选2025年10款真正免费、无需编程的在线HTML建站工具,涵盖AI生成、拖拽编辑、设计稿转代码等多种类型,均支持浏览器直接使用、快速出图与文件导出,特别适合零基础用户快速搭建个人网站、落地页或企业官网。
1547 157