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

[Linux命令]10逻辑卷(LVM)管理实例详解

#引言这篇文章使用CentOS7实例演示LVM的创建更改和删除,LVM(LogicalVolumeManager)是Linux环境下对硬盘分区进行管理的一种机制,可以实现多块硬盘空

#引言
这篇文章使用CentOS7实例演示LVM的创建更改和删除,LVM(Logical Volume Manager)是Linux环境下对硬盘分区进行管理的一种机制,可以实现多块硬盘空间的动态划分和调整,跨硬盘储存文件等功能。常用于装备大量硬盘并随时需要增加或删除硬盘的环境,也同样适于仅有一、两块硬盘的环境。
#文章目录

  • 0×1.LVM基本术语与实验环境介绍
  • 0×2.如何创建LVM
  • a.如何创建PV

  • b.如何创建VG

  • c.如何创建LV

  • d.文件系统格式化

  • e.挂载和使用

  • 0×3.如何扩充和缩小LVM
  • a.如何扩充LV

  • b.如何扩充VG

  • c.如何缩小LV

  • d.如何缩小VG

  • 0×4.如何创建LVM备份(快照)
  • 0×5.如何删除LVM
  • a.如何删除LV

  • b.如何删除VG

  • c.如何删除PV

##0×1.LVM基本术语与实验环境介绍
下面是LVM需要了解的基本术语:

物理卷(PV physical volume): 它可以是物理硬盘上的分区,也可以是整块物理硬盘;
卷组(VG volume group): 建立在物理卷之上,一个卷组至少包括一个物理卷,可以动态增删物理卷;
逻辑卷(LV logical volume):建立在卷组之上,卷组中未分配的空间可以用来建立逻辑卷,并且可以动态调整大小直到用完卷组空间,系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同卷组(卷组是物理卷容器,它又被不同逻辑卷动态占用着,就好像一块物理硬盘被分割成不同的区域一样);
物理区域(PE physical extend): PE是PV中可以用于分配的最小储存单元,一旦确定大小不能更改,同一VG中的所有PV的PE大小要一致;
逻辑区域(LE logical extend): LE是LV中可以用来分配的最小存储单元,LE的大小取决于LV所在卷中的PE大小;
卷组描述区域(VGDA volume group descriptor area):VGDA在建立物理卷时建立,用于描述PV本身,所属VG,VG中的LV,以及LV中的PE大小等等;

试验环境介绍:

操作系统:CentOS7;
硬盘:/dev/sda(系统所在硬盘)、/dev/sdb(20G)、/dev/sdc(20G) ;
使用/dev/sdb、/dev/sdc这两块硬盘完成下面的实验;

##0×2.如何创建LVM
创建LVM步骤:创建物理卷(PV)->将物理卷加入卷组(VG)->使用卷组创建逻辑卷(LV)->格式化逻辑卷->挂载使用

###a.如何创建PV

#LVM的创建必须使用root权限,如果没有给硬盘分区,可以直接使用硬盘号将其创建为PV,将sdb和sdc这两块硬盘创建成PV
qing@qingsword.com:~$ sudo pvcreate /dev/sd[b-c]
#如果硬盘已经被分区,请携带分区号,例如,sdb和sdc都划分了一个分区,如果使用分区的形式添加,最好在fdisk创建分区时,使用t将分区类型改成8e(LVM)
qing@qingsword.com:~$ sudo pvcreate /dev/sdb1 /dev/sdc1
#查看刚创建好的PV
qing@qingsword.com:~$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm2 --- 20.00g 20.00g
/dev/sdc lvm2 --- 20.00g 20.00g

PV创建好了就可以创建VG了。

Ps:若使用fdisk分区后提示找不到分区,可以执行partprobe命令刷新分区表。

###b.如何创建VG

#将sdb和sdc这两块已经创建成PV的硬盘划分到vg0这个卷组池中,vg0是自定义的名称,代表一个卷组池(同样,如果硬盘已经分区,请携带分区号)
qing@qingsword.com:~$ sudo vgcreate vg0 /dev/sd[b-c]
Volume group "vg0" successfully created
#查看VG池
qing@qingsword.com:~$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
vg0 2 0 0 wz--n- 39.99g 39.99g
#查看PV列表,b和c的VG列都属于vg0这个卷组池了
qing@qingsword.com:~$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/sdb vg0 --- 20.00g 20.00g
/dev/sdc vg0 --- 20.00g 20.00g

创建好卷组池就能从池中划分容量给逻辑卷(LV)了。

###c.如何创建LV

#从卷组vg0中拿出10G,分配给lv0,其中-n后面是lv自定义名称,-L后面跟需要从vg0中分配给lv0的大小以及从哪个VG分配
qing@qingsword.com:~$ sudo lvcreate -n lv0 -L 10G vg0
#查看lv,可以看到lv0大小10G,并且属于vg0这个卷组池(这就像是从vg0这块硬盘上划分了一个10G的分区,分区号lv0)
qing@qingsword.com:~$ sudo lvs
LV VG Attr LSize
lv0 vg0 -wi-a--- 10.00g

创建好lv后就可以格式化它。

###d.文件系统格式化

#创建好的lv所在目录是"/dev/卷组名称/逻辑卷名称",所以本例就是/dev/vg0/lv0,将它格式化成ext4文件系统
qing@qingsword.com:~$ sudo mkfs.ext4 /dev/vg0/lv0

格式化完成后就能挂载使用它了。

###e.挂载和使用

#将lv0挂载到/mnt目录下(不一定非要挂载到/mnt才能使用,请根据实际情况挂载到其他目录)
qing@qingsword.com:~$ sudo mount /dev/vg0/lv0 /mnt

##0×3.如何扩充和缩小LVM
只要卷组(VG)中有空余空间,就能将其增加到对应逻辑卷(LV)中;或将对应逻辑卷(LV)中的某些分区删除,让其成为卷组(VG)中的空余空间。

###a.如何扩充LV

#首先确保VG池中有足够的VFree空间可供使用(VSize是这个VG的总大小,VFree是还剩下多少空间可以划分,PV是这个VG包含多少个物理卷,LV是这个VG以及划分了多少个逻辑卷)
qing@qingsword.com:~$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
vg0 2 1 0 wz--n- 39.99g 29.99g
#给lv0增加5G的大小
#lvextend还有一个-l参数,这个参数允许我们输入一个PE值来扩充LV大小,这个PE值可以通过vgdisplay命令来查看到,在vgdisplay命令输出中"Free PE"后面的大小就是这个vg剩余的PE大小,如果想一次性将剩余的空间全部划分给当前vg,可以使用命令"lvextend -l +8900 /dev/vg0/lv0",其中8900就是在vgdisplay命令输出中"Free PE"后面看到的值
qing@qingsword.com:~$ sudo lvextend -L +5G /dev/vg0/lv0
#更新lv0大小(必须)
qing@qingsword.com:~$ sudo resize2fs /dev/vg0/lv0
#如果是xfs文件系统,上一条命令会报错,必须使用xfs_growfs来刷新磁盘大小,如下
qing@qingsword.com:~$ sudo xfs_growfs /dev/vg0/lv0
#查看,lv0被扩充到了15G
qing@qingsword.com:~$ df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/vg0-lv0 15G 25M 14G 1% /mnt

###b.如何扩充VG
如果此时我们的VG池容量不够,可以给计算机添加一块物理硬盘,先将它创建成PV,之后将它放入VG池即可,请看下面的实例:

#新增加一块硬盘sdd(20G),将它创建成PV后划分到vg0下,此时vg0的容量将增加sdd硬盘的大小
qing@qingsword.com:~$ sudo pvcreate /dev/sdd
qing@qingsword.com:~$ sudo vgextend vg0 /dev/sdd
#vg0的总大小扩充了20G
qing@qingsword.com:~$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
vg0 3 1 0 wz--n- 59.99g 44.99g

###c.如何缩小LV
注意:缩小LV大小有一定风险,可能造成数据丢失,如果不是必要,最好不要缩小它:

#缩小逻辑卷之前,如果此逻辑卷已经挂载,必须先卸载,以lv0为例
qing@qingsword.com:~$ sudo umount /dev/vg0/lv0
#首先对lv0进行检查
qing@qingsword.com:~$ sudo e2fsck -f /dev/vg0/lv0
#然后缩小文件系统,本例将lv0从15G缩小到10G大小
qing@qingsword.com:~$ sudo resize2fs /dev/vg0/lv0 10G
#最后将lv0缩小到10G(一定要和上面resize2fs命令中的大小相同),缩小有风险,请慎用
qing@qingsword.com:~$ sudo lvreduce -L 10G /dev/vg0/lv0
WARNING: Reducing active logical volume to 10.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv0? [y/n]: y
#重新挂载使用
qing@qingsword.com:~$ sudo mount /dev/vg0/lv0 /mnt

Ps:因为xfs文件系统自带了扩充和缩小的特性,所以xfs文件系统并不需要使用LVM技术,以上缩小的实验仅适用于ext文件系统。

###d.如何缩小VG
缩小VG比缩小LV稍微安全一点,确保这个要被移除的分区或者硬盘没有被使用后,可以用下面的命令将它从VG池中去除:

#将sdc这块硬盘从vg0中移除
qing@qingsword.com:~$ sudo vgreduce vg0 /dev/sdc

##0×4.如何创建LVM备份(快照)
注意:逻辑卷的备份是放在和逻辑卷同一个卷组中的,也需要占用卷组的大小,所以卷组的大小不够备份就不会成功:

#以前面创建的lv0距离,首先lvs查看一下lv0的大小,使用相同大小创建备份
qing@qingsword.com:~$ sudo lvs
LV VG Attr LSize
lv0 vg0 -wi-a----- 10.00g
#-L后面填写的大小和lv0大小一致,-s -n后面跟自定义的备份名称,再跟需要备份的逻辑卷完整路径
qing@qingsword.com:~$ sudo lvcreate -L 10G -s -n lv0bk /dev/vg0/lv0
#快照保存了创建时,对应逻辑卷所有数据,路径"/dev/vg0/lv0back"
qing@qingsword.com:~$ sudo lvs
LV VG Attr LSize Pool Origin
lv0 vg0 owi-a-s--- 10.00g
lv0bk vg0 swi-a-s--- 10.00g lv0
#如果逻辑卷出了问题,可以用快照恢复,快照恢复一次后,会自删除(注意:恢复前一定要将被恢复的分区先umount卸载,否则可能出现无法恢复的错误)
qing@qingsword.com:~$ sudo lvconvert --merge /dev/vg0/lv0bk
qing@qingsword.com:~$ sudo lvs
LV VG Attr LSize Pool Origin
lv0 vg0 owi-a-s--- 10.00g

##0×5.如何删除LVM
删除LVM的步骤:如果逻辑卷已挂载,需要先卸载->删除逻辑卷(LV)->删除卷组(VG)->删除物理卷(PV)。

###a.如何删除LV

#卸载lv0
qing@qingsword.com:~$ sudo umount /dev/vg0/lv0
#删除lv0,如果lv0存在快照,会询问是否删除快照
qing@qingsword.com:~$ sudo lvremove /dev/vg0/lv0
Do you really want to remove active logical volume lv0? [y/n]: y

###b.如何删除VG

#删除vg0
qing@qingsword.com:~$ sudo vgremove vg0

###c.如何删除PV

#删除两块pv硬盘,删除前请确保这个pv没有被添加到vg中,否则应该先使用vgreduce移除vg中的pv
qing@qingsword.com:~$ sudo pvremove /dev/sd[b-c]

推荐阅读
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 利用ZFS和Gluster实现分布式存储系统的高效迁移与应用
    本文探讨了在Ubuntu 18.04系统中利用ZFS和Gluster文件系统实现分布式存储系统的高效迁移与应用。通过详细的技术分析和实践案例,展示了这两种文件系统在数据迁移、高可用性和性能优化方面的优势,为分布式存储系统的部署和管理提供了宝贵的参考。 ... [详细]
  • 在 CentOS 7 中,为了扩展可用软件包的数量,通常需要配置多个第三方软件源。这些第三方源包括 EPEL、Nux Dextop 和 ELRepo 等,它们提供了大量官方源中未包含的软件包,从而增强了系统的功能性和灵活性。通过正确配置这些源,用户可以轻松安装和管理更多种类的软件,满足不同的需求。 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • Python错误重试让多少开发者头疼?高效解决方案出炉
    ### 优化后的摘要在处理 Python 开发中的错误重试问题时,许多开发者常常感到困扰。为了应对这一挑战,`tenacity` 库提供了一种高效的解决方案。首先,通过 `pip install tenacity` 安装该库。使用时,可以通过简单的规则配置重试策略。例如,可以设置多个重试条件,使用 `|`(或)和 `&`(与)操作符组合不同的参数,从而实现灵活的错误重试机制。此外,`tenacity` 还支持自定义等待时间、重试次数和异常处理,为开发者提供了强大的工具来提高代码的健壮性和可靠性。 ... [详细]
  • SecureCRT是一款功能强大的终端仿真软件,支持SSH1和SSH2协议,适用于在Windows环境下高效连接和管理Linux服务器。该工具不仅提供了稳定的连接性能,还具备丰富的配置选项,能够满足不同用户的需求。通过SecureCRT,用户可以轻松实现对远程Linux系统的安全访问和操作。 ... [详细]
  • 在 CentOS 6.7 系统维护中,常用的巡检命令包括:`uname -a` 用于查看内核、操作系统和 CPU 信息;`head -n 1 /etc/issue` 用于查看操作系统的版本;`cat /proc/cpuinfo` 用于获取详细的 CPU 信息;`hostname` 用于显示当前主机名;`ls` 命令则用于列出目录内容。这些命令可以帮助系统管理员快速了解系统的运行状态和配置信息,确保系统的稳定性和安全性。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 在 CentOS 7 系统中安装 Scrapy 时遇到了一些挑战。尽管 Scrapy 在 Ubuntu 上安装简便,但在 CentOS 7 上需要额外的配置和步骤。本文总结了常见问题及其解决方案,帮助用户顺利安装并使用 Scrapy 进行网络爬虫开发。 ... [详细]
  • Parallels Desktop for Mac 是一款功能强大的虚拟化软件,能够在不重启的情况下实现在同一台电脑上无缝切换和使用 Windows 和 macOS 系统中的各种应用程序。该软件不仅提供了高效稳定的性能,还支持多种高级功能,如拖放文件、共享剪贴板等,极大地提升了用户的生产力和使用体验。 ... [详细]
  • 求助:在CentOS 5.8系统上安装PECL扩展遇到问题
    在 CentOS 5.8 系统上尝试安装 APC 扩展时遇到了问题,具体表现为 PECL 工具无法正常工作。为了确保顺利安装,需要解决 PECL 的相关依赖和配置问题。建议检查 PHP 和 PECL 的版本兼容性,并确保所有必要的库和开发工具已正确安装。此外,可以尝试手动下载 APC 扩展的源代码并进行编译安装,以绕过 PECL 工具的限制。 ... [详细]
  • 在VMware虚拟机中部署带有中文图形界面的CentOS 7 Linux系统
    本文详细介绍了在VMware虚拟机中部署带有中文图形界面的CentOS 7 Linux系统的步骤。首先,通过“文件”菜单选择“新建虚拟机”并进入自定义设置。接着,在硬盘兼容性选项中选择默认设置。为了更好地进行Linux操作系统的安装练习,建议选择稍后安装操作系统,并在虚拟机安装完成后,根据实际需求删除不必要的硬件组件。此外,本文还提供了详细的配置参数和注意事项,帮助用户顺利完成整个部署过程。 ... [详细]
  • 【Linux】CentOS 7 远程连接指南:高效安全的远程管理方法
    在 CentOS 7 中实现高效且安全的远程管理,本文详细介绍了如何检查和安装配置 OpenSSH。首先,通过 `yum list installed` 命令检查系统是否已安装 OpenSSH,若未安装,则使用 `yum install openssh-server` 进行安装。随后,配置 SSH 服务以确保其安全性和稳定性,包括修改默认端口、禁用 root 登录等关键步骤。此外,还提供了常见问题的解决方案,帮助用户顺利进行远程连接。 ... [详细]
  • 虚拟机网络设置与数据库远程连接优化指南
    本文针对个人计算机上虚拟机网络配置与数据库远程连接的问题,提供了一套详细的优化指南。在探讨远程数据库访问前,需确保网络配置正确,特别是桥接模式的设置。通过合理的网络配置,可以有效解决因虚拟机或网络问题导致的连接失败,提升远程访问的稳定性和效率。 ... [详细]
author-avatar
沉睡森林
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有