热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

pvvglvlinux中的卷lvm等之间的关系和操作

简介LVM是LogicalVolumeManager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,

简介

LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小

抽象模型


基本术语


  • PV(Physical Volume): 物理卷,指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。

  • VG(Volume Group):卷组,类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。

  • LV(Logical Volume):逻辑卷,类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)

  • PE(Physical Extent):物理块,每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。(当PV没有加入卷组的时候 这时候PV的PE是未定的,当PV加入卷组,PV的PE大小与卷组设定的PE大小相同)


相关命令


PV管理命令

pvs:简要PV信息显示
pvdisplay:显示PV的详细信息
pvcreate /dev/DEVICE: 创建PV
pvremove /dev/DEVICE:删除PV


VG管理命令

vgs :简要VG信息显示
vgdisplay:显示VG详细信息
vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…] 创建VG
vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…] 扩展VG
vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…] 收缩VG
vgremove 删除VG

LV管理命令

lvs 显示LV简要信息
lvdisplay 显示LV详细信息
lvcreate -L #[mMgGtT] -n NAME VolumeGroup 创建LV
lvremove /dev/VG_NAME/LV_NAME 删除LV

扩展逻辑卷步骤(针对ext系列文件系统)

lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
resize2fs /dev/VG_NAME/LV_NAME (只针对ext系列文件系统)

缩减逻辑卷步骤(针对ext系列文件系统)

umount /dev/VG_NAME/LV_NAME (先将文件系统从挂载点取下来)
e2fsck -f /dev/VG_NAME/LV_NAME (强制修复文件系统##针对ext系列文件系统)
resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT] (改变文件系统大小##针对ext系列文件系统)
lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME (缩减LV大小)
mount (重新挂载上去)

快照

lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name original_lv_name

具体实验

第一步:创建一个至少有两个PV组成的大小为1.9G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为1.9G的逻辑卷testlv;挂载至/users目录;

  1. 首先fdisk出几个实验用的分区 ID改为8e这里不详细演示
  2. 创建PV
    pvcreate /dev/sdb2
    pvcreate /dev/sdb1

  3. 设置VG(卷组)的PE大小为16M,并将/dev/sdb1和/dev/sdb2两个PE加入卷组test_vg中
    vgcreate -s 16m testvg /dev/sdb1 /dev/sdb2

     

  4. 创建大小为1.9G的逻辑卷,名为testlv
    lvcreate -L 1.9G -n testlv testvg

  1. 格式化逻辑卷testlv并挂载到/users目录
    mkfs -t ext4 /dev/testvg/testlv
    mount -t ext4 /dev/testvg/testlv /users

第二步:创建一些文件在/users中

第三步:扩展testlv至2.5G

  1. 创建/dev/sdb3为PV
    pvcreate /dev/sdb3
  2. 将/dev/sdb3添加到卷组中
    vgextend testvg /dev/sdb3
  3. 扩展lv为2.5G
    lvextend -L 2.5G /dev/testvg/testlv
  4. 文件系统格式化的时候是1.9G,这时候我们将LV扩大到2.5G但是文件系统格式化的部分还是只有原先1.9G的部分,剩下的0.6G还是属于没有格式化的部分,所以需要重新让文件系统也相应的扩大
    resize2fs /dev/testvg/testlv


第四步:收缩testlv至2G,/users目录下文件不丢失

  1. 先将LV从挂载点取下来
    umount /users
  2. 强制修复一下文件系统
    e2fsck -f /dev/testvg/testlv
  3. 先将文件系统大小设置为1G
    resize2fs /dev/testvg/testlv 1G

  4. 再将LV(逻辑卷)大小设置为1G
    lvreduce -L 1G /dev/testvg/testlv

  5. 挂载上去
    mount -t ext4 /dev/testvg/testlv /users 

第五步:对testlv创建快照,并尝试基于快照备份数据,验正快照的功能;

lvcreate -L 10m -p r -s -n snap_testlv /dev/testvg/testlv
mkdir /backup
mount -r /dev/testvg/snap_testlv /backup



将快照挂载到/backup之后显示了之前的文件还在



推荐阅读
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本文探讨了如何在 PHP 的 Eloquent ORM 中实现数据表之间的关联查询,并通过具体示例详细解释了如何将关联数据嵌入到查询结果中。这不仅提高了数据查询的效率,还简化了代码逻辑。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 深入理解Shell脚本编程
    本文详细介绍了Shell脚本编程的基础概念、语法结构及其在操作系统中的应用。通过具体的示例代码,帮助读者掌握如何编写和执行Shell脚本。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 在学习LVM(逻辑卷管理)技术的过程中,我对MD(多设备)、DM(设备映射器)以及逻辑设备和RAID的实现有了深入的理解。LVM2架构主要由DM主模块及其多个子模块组成,其中linear子模块用于创建线性设备,类似于简单的磁盘分区拼接。此外,还探讨了其他子模块如striped、mirror等在提高性能和数据冗余方面的应用。通过实际操作,我掌握了LVM的基本配置和管理方法,能够灵活应对不同存储需求。 ... [详细]
  • LVS-DR数据包流向分析介绍
    下文给大家带来LVS-DR数据包流向分析介绍,希望能够给大家在实际运用中带来一定的帮助,负载均衡涉及的东西比较多,理论也不多,网上有很多书籍, ... [详细]
  • java大数据量调优(超赞值得收藏)
    从总体上来看,对于大型网站,比如门户网站,在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节: ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
author-avatar
手机用户2502873691
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有