「Linux-基础」CentOS 8 LVM逻辑卷管理

2023-10-27

LVM逻辑卷管理

枫梓林
提示:建议按着步骤来

1、 简介

  • LVM是Logical Volume Mananger (逻辑卷管理)

LVM 示意图
在这里插入图片描述

  • 物理卷(PV,Physical Volume):就是硬盘,是LVM分区的
  • 卷组(VG,Volume Group):将多个物理卷整合起来,形成一个组,这个组里在划分逻辑卷
  • 逻辑卷(LV,Logical Volume):卷组的一个逻辑硬盘,相当于硬盘,也需要分区格式化挂载
  • 物理扩展(PE,Physical Extend):PE是用来保存数据的最小单元,我们的数据实际上都是写入PE中的。PE的大小是可以调配的,默认是4MB.

2、建立LVM的步骤

(1)首先将物理硬盘分区,整块盘也可以分区

(2)将物理分区的建立成为物理卷(PV),或者至直接把整块硬盘建立物理卷

(3)在将物理卷整合成为卷组(VG),卷组可以调整动态大小,可以把物理分区加入卷组,也可以删去

(4)最后将卷组在划分成为逻辑卷(LV),逻辑卷也可以调整大小,逻辑卷是相当于分区,需要格式化和挂载

3、逻辑卷管理及部署

常用的LVM部署命令

功能/命令 物理卷管理 卷组管理 逻辑卷管理
扫描 pvscan vgscan lvscan
建立 pvcreate vgcreate lvcreate
显示 pvdisplay vgdisplay lvdisplay
删除 pvremove vgremove lvremove
扩展 vgextend lvextend
缩小 vgreduce lvreduce

(1)磁盘分区

用fdisk将分区改为LVM的ID号为8e在这里插入图片描述

(2)物理卷管理

建立物理卷

将sdb2和sdb3建立成为物理卷

[root@localhost ~]# pvcreate /dev/sdb2      //将sdb2建立成为物理卷
  Physical volume "/dev/sdb2" successfully created.
[root@localhost ~]# pvcreate /dev/sdb3      //将sdb3建立成为物理卷
  Physical volume "/dev/sdb3" successfully created.
[root@localhost ~]# pvcreate /dev/sdb       //将sdb整个分区建立成为物理卷
扫描物理卷
[root@localhost ~]# pvscan            
  PV /dev/sdb2                      lvm2 [2.00 GiB]
  PV /dev/sdb3                      lvm2 [3.00 GiB]
  Total: 3 [<24.00 GiB] / in use: 1 [<19.00 GiB] / in no VG: 2 [5.00 GiB]
//总共3个物理卷[大小]    / 使用了0个卷[大小]       /空闲3个卷     [大小]
显示物理卷
[root@localhost ~]# pvdisplay 
 "/dev/sdb2" is a new physical volume of "2.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb2                          //PV名
  VG Name                                                  //VG名,属于哪个VG
  PV Size               2.00 GiB                           //PV的大小
  Allocatable           NO                                 //是否已分配
  PE Size               0                                  //PE大小,
  Total PE              0                                  //PE总数
  Free PE               0                                  //空闲PE数
  Allocated PE          0                                  //可分配的PE数
  PV UUID               ZosyQ5-foiF-DXjJ-KtTQ-u4Dj-Vupm-LIJwVY //pv的UUID
删除物理卷
[root@localhost ~]# pvremove /dev/sdb2   //删除sdb2物理卷

(3)卷组管理

建立卷组
[root@localhost ~]# vgcreate -s 10MB zxl /dev/sdb2 /dev/sdb3    //将sdb2 sdb3 物理卷加入卷组名字为zxl -s是指定 PE大小
  Volume group "zxl" successfully created
//语法:
root@localhost ~]# vgcreate [选项] 卷组名 物理卷名
选项
-s PE的大小:指定PE的大小 不写默认为4M
扫描卷组
[root@localhost ~]# vgscan 
  Found volume group "zxl" using metadata type lvm2
查看卷组
[root@localhost ~]# vgdisplay  
  --- Volume group --- 
  VG Name               zxl                           //卷组名
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write                     //卷组访问状态
  VG Status             resizable                      //卷组状态
  MAX LV                0                              //最大逻辑卷数
  Cur LV                0
  Open LV               0
  Max PV                0                              //最大物理卷数
  Cur PV                2                              //当前物理卷数
  Act PV                2                    
  VG Size               4.99 GiB                       //卷组大小
  PE Size               10.00 MiB                      //PE大小
  Total PE              511                            //PE总数
  Alloc PE / Size       0 / 0                          //已用PE数量/大小
  Free  PE / Size       511 / 4.99 GiB                 //空闲PE数量/大小
  VG UUID               lzE8YW-RdKj-zBlR-QAyr-Sjlx-bbfX-FRCuih
删除卷组
[root@localhost ~]# vgremove zxl
扩展卷组

需要有空闲的物理卷

[root@localhost ~]# vgextend zxl /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.
  Volume group "zxl" successfully extended
缩小卷组
[root@localhost ~]# vgreduce zxl /dev/sdb1      //在卷组中删除/dev/sdb1物理卷
  Removed "/dev/sdb1" from volume group "zxl"

[root@localhost ~]# vgreduce  -a                //删除所有的未使用物理卷

(4)逻辑卷管理

建立逻辑卷
[root@localhost ~]# lvcreate -L 1.5G -n userlv1 zxl   //在zxl卷组中建立1.5GB的userlv1 逻辑卷
  Rounding up size to full physical extent 1.50 GiB
  Logical volume "userlv1" created.
//语法:
[root@localhost ~]# lvcreate [选项] [-n 逻辑卷名] 卷组名
选项:
-L 容量:指定逻辑卷大小,单位 MB,GB,TB等
-l 个数:按照 PE个数指定逻辑卷大小,这个参数需要换算容量,太麻烦
-n 逻辑卷名:指定逻辑卷名

格式化——挂载

建立完逻辑卷,就相当于fdisk的分区了,这是就要进行,格式化,挂载之后的逻辑卷才能正常使用

//----格式化----------
[root@localhost ~]# mkfs -t ext4 /dev/zxl/userlv1        //设备文件名 /dev/卷组名/逻辑卷名

在这里插入图片描述

[root@localhost ~]# mkdir /disklvm1                        //建立挂载点
[root@localhost ~]# mount /dev/zxl/userlv1 /disklvm1/      //挂载命名是和格式化一样的 开机自动挂载要修改/etc/fstab文件

在这里插入图片描述

扫描逻辑卷
[root@localhost ~]# lvscan 
  ACTIVE            '/dev/zxl/userlv1' [1.50 GiB] inherit   //激活的逻辑卷大小是1.5G
查看逻辑卷
[root@localhost ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/zxl/userlv1                        //逻辑卷设备文件名
  LV Name                userlv1                                 //逻辑卷名
  VG Name                zxl                                     //所属的卷组名
  LV UUID                eqR3I6-9axJ-cW3t-7MwY-SWRk-tcRc-Zs1x72
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2020-09-24 23:50:45 -0400
  LV Status              available
  # open                 1
  LV Size                1.50 GiB                                 //卷组大小
  Current LE             154
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
删除逻辑卷
[root@localhost ~]# lvremove 逻辑卷设备文件名 //我们删除 userlvm1这个逻辑卷,记得删除时要先卸载
 //命令如下:
[root@localhost ~]# umount  /dev/zxl/userlvm1
[root@localhost ~]# lvremove /dev/zxl/userlvm1
调整逻辑卷大小
//语法:
[root@localhost ~]# lvresize [选项] 逻辑卷设备文件名
选项:
-L 容量:安装容量调整大小,单位 KB,GB,TB等。使用+代表增加空间,-号代表减少空间。如果直接写容量,代表设定逻辑卷大小为指定大小。
-l 个数:按照 PE个数调整逻辑卷大小

增加逻辑卷

[root@localhost ~]# lvresize -L +2.1G /dev/zxl/userlv1        //在原来的基础上增加逻辑卷的大小
  Rounding size to boundary between physical extents: <2.11 GiB.
  Size of logical volume zxl/userlv1 changed from <1.01 GiB (103 extents) to <3.12 GiB (319 extents).
  Logical volume zxl/userlv1 successfully resized.
[root@localhost ~]# df -h /disklvm1/
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/zxl-userlv1  1.5G  4.6M  1.4G   1% /disklvm1
//调整只是改变了逻辑怎么/disklvm分区的大小还是,刚刚只是逻辑卷的大小改变了,如果需要让分区使用这个新逻辑卷,我们还要使用 resize2fs命令来调整分区的大小。
//把这个逻辑卷加入到/disklvm1分区中
[root@localhost ~]# resize2fs /dev/zxl/userlv1 
resize2fs 1.44.6 (5-Mar-2019)
Filesystem at /dev/zxl/userlv1 is mounted on /disklvm1; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/zxl/userlv1 is now 816640 (4k) blocks long.
//查看
[root@localhost ~]# df -h /disklvm1/      
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/zxl-userlv1  3.1G  4.6M  2.9G   1% /disklvm1          //大小改变了
//语法:
[root@localhost ~]# resize2fs [选项] [设备文件名] [调整的大小]
选项:
-f          强制调整
设备文件名:指定调整哪个分区的大小
调整的大小:指定把分区调整到多大,要加 M,G等单位。如果不加大小,会使用整个分区

注:
本文首发于枫梓林的博客,欢迎转载,但是必须保留本文的署名枫梓林(包含链接)
转发请给我留言:fengzilin1973@outlook.com

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

「Linux-基础」CentOS 8 LVM逻辑卷管理 的相关文章

  • 如何阅读shell命令的源代码?

    我想阅读编写linux命令的实际源代码 我已经获得了一些使用它们的经验 现在我认为是时候与我的机器进行更深层次的交互了 我在这里找到了一些命令http directory fsf org wiki GNU http directory fs
  • 如何仅将整个嵌套目录中的头文件复制到另一个目录,在复制到新文件夹后保持相同的层次结构

    我有一个目录 其中有很多头文件 h 和其他 o 和 c 文件以及其他文件 这个目录里面有很多嵌套的目录 我只想将头文件复制到一个单独的目录 并在新目录中保留相同的结构 cp rf oldDirectory newDirectory将复制所有
  • linux下如何获取昨天和前天?

    我想在变量中获取 sysdate 1 和 sysdate 2 并回显它 我正在使用下面的查询 它将今天的日期作为输出 bin bash tm date Y d m echo tm 如何获取昨天和前天的日期 这是另一种方法 对于昨天来说 da
  • Gradle 1.3:build.gradle 不构建类

    这里有一个新问题 我有一个 build gradle 文件apply plugin java在其中 并与 java 项目 包关联 当我跑步时gradle build从命令行我得到 compileJava UP TO DATE process
  • R 未获取用户库

    我有一个带 R 3 6 0 的 Fedora 30 系统 用户库设置在Renviron就像这个 R LIBS USER R LIBS USER R x86 64 redhat linux gnu library 3 6 事实上 它出现在交互
  • perf stat中的cycles注释是什么意思

    8 014196 task clock 0 004 CPUs utilized 204 context switches 0 025 M sec 32 cpu migrations 0 004 M sec 0 page faults 0 0
  • 无关的库链接

    我有一个可能有点愚蠢的问题 因为我很确定我可能已经知道答案了 假设你有静态库A 动态共享库B和你的linux下的程序C 假设库 A 调用库 B 中的函数 并且您的程序调用库 A 中的函数 现在假设 C 在 A 中调用的所有函数都不使用 B
  • 如何通过代理将套接字连接到http服务器?

    最近 我使用 C 语言编写了一个程序 用于连接到本地运行的 HTTP 服务器 从而向该服务器发出请求 这对我来说效果很好 之后 我尝试使用相同的代码连接到网络上的另一台服务器 例如 www google com 但我无法连接并从网络中的代理
  • 如何从类似于 eclipse 的命令行创建可运行的 jar 文件

    我知道 eclipse 会生成一个可运行的 jar 文件 其中提取并包含在该 jar 文件中的所有库 jar 文件 从命令提示符手动创建 jar 文件时如何执行类似的操作 我需要将所有 lib jar 解压到类文件夹中吗 目前我正在使用 j
  • 如何在 Linux 主机上的 docker 容器中挂载目录 [重复]

    这个问题在这里已经有答案了 我想将一个目录从 docker 容器挂载到本地文件系统 该目录是网站根目录 我需要能够使用任何编辑器在本地计算机上编辑它 我知道我可以跑docker run v local path container path
  • 如何成功使用RDAP协议代替whois

    我对新的 RDAP 协议有点困惑 也不知道何时进一步追求它有意义 在我看来 每个人都同意它是 whois 的继承者 但他们的数据库似乎是空的 在 ubuntu 上我尝试了 rdapper nicinfo 甚至他们的 RESTful API
  • 怎样才能使 Windows 成为一个开箱即用的 POSIX 兼容操作系统?

    这个问题的动机是我的一个牵强的梦想 即 nix 平台上可用的许多优秀软件可以轻松移植到 Windows 微软最近对开源和开放性采取了不同的方法 所以我真的很想知道如果微软有这样的倾向 这样的事情会有多可行 我很好奇的一些更具体的事情是 是否
  • 如何在我的 AWS EC2 实例上安装特定字体?

    我有一个在 AWS EC2 Amazon Linux Elastic Beanstalk 实例上运行的 Python 应用程序 该实例需要某些特定字体才能生成输出 并且想知道如何在部署或实例启动过程中安装它们 我的代码在本地计算机 OS X
  • 伊迪德信息

    重新定义问题 有什么方法可以获取所连接显示器的序列号吗 我想收集显示器的Eid信息 当我使用 logverbose 选项运行 X 时 我可以从 xorg 0 log 文件中获取它 但问题是 如果我切换显示器 拔出当前显示器 然后插入另一个显
  • 无法执行'x86_64-conda_cos6-linux-gnu-gcc':没有这样的文件或目录(pysam安装)

    我正在尝试安装 pysam 执行后 python path to pysam master setup py build 这个错误的产生是 unable to execute x86 64 conda cos6 linux gnu gcc
  • 在Linux中断上下文中运行用户线程

    我正在编写一些定制的应用程序 并允许更改 Linux 内核中的中断处理程序代码 我有一个用户线程正在等待中断发生 如果发生中断 那么我要做的第一件事就是执行该用户线程 有什么办法让它发挥作用吗 Thanks 创建一个字符设备 这就是内核所做
  • Bash 方法的返回值总是模 256

    我有一个 bash 脚本方法 它返回输入值 然而 返回值始终是模 256 的值 我用 google 搜索了一段时间 发现this http www tldp org LDP abs html exitcodes html文章说它总是以 25
  • 适用于 KDE 和 Gnome 的 Gui [重复]

    这个问题在这里已经有答案了 我想为一个现在是 CLI 的应用程序编写一个 gui 它需要在 KDE 和 Gnome DE 中 看起来不错 充分利用用户的外观设置 如果我选择 Qt 或 GTK 我能够做到这一点吗 它们与两个 DE 集成良好吗
  • 如何在特定 systemd 服务重新启动时触发自定义脚本运行

    我想知道如何安排自定义脚本在重新启动服务时运行 我的用例是 每当重新启动 Tomcat 服务时 我都必须运行多个命令 我想知道是否有一种方法可以编写脚本并安排它在重新启动 Tomcat 服务时运行 我已将 tomcat 脚本设置为 syst
  • 如何查找连接到 AF_INET 套接字的客户端的 UID?

    有什么方法或类似的东西ucred for AF UNIX如果是AF INET插座 TCP在我的例子中 找出连接到我的套接字的客户端的UID 还有 proc net tcp但它显示了UID of the creator插座的而不是连接的cli

随机推荐

  • python编译报错 ImportError: cannot import name ‘jaccard_similarity_score‘

    报错如下 问题代码 import numpy as np from sklearn metrics import jaccard similarity score y pred 0 2 1 3 y true 0 1 2 3 print ja
  • 认识传输层(UDP与TCP)

    传输层主要负责数据能够从发送端发送到接收端 要正确传输就要明确发送端和接收端 这时候IP地址和端口号一起就可以确定一端了 那么他们是怎么唯一标识的呢 1 端口号 port 端口号唯一标识一个主机上进行通信的不同应用程序 在TCP IP协议中
  • flutter Stack超出底图范围后,关闭按键点击效果失效

    既然是关闭按键超出了底图范围导致不能点击 那就让关闭按键不超出就可以了 可以给底图再添加一个大点的底图 这两个底图作为一个整体 关闭按键就可以点击了 如图 下面添加了一个黑色的底图用来扩充原来的底图范围 白色关闭按键就可以点击得到了 ret
  • 计算机硬件耗电,电脑中最耗电的三个硬件排行:这答案意料之外的情理之中!...

    众所周知 只要电脑工作的话就肯定会耗电 那么问题就来了 在电脑中哪个硬件的耗电量是最高的呢 耗电的多少又会有哪些标准进行判断呢 就像笔者的文章中反复强调的 我们既要知道结果但同时还需要知道 为什么 笔者今天就继续用打破砂锅问到底的死磕精神来
  • echarts地图map

    在vue中使用echarts绘制图表 npm install echarts save 全局安装echarts 具体代码及注释如下
  • mac上的matlab的设置工具箱cvx

    cvx的下载地址 http cvxr com cvx download 首先怎么做到在终端运行matlab程序呢 打开终端 vi bash profile 进行配置 加入 export PATH PATH Applications MATL
  • ixp协议服务器,ipx协议中的“内部网络号”是什么意思?

    1 IPX的协议构成 IPX协议簇包括如下主要协议 IPX 第三层协议 用来对通过互联网络的数据包进行路由选择和转发 它指定一个无连接的数据报 相当于TCP IP协议簇中的IP协议 SPX 顺序包交换 Sequenced Packet Ex
  • angular编译版本冲突解决办法总结

    刚刚涉足angular 对于node npm typescript等都不太熟悉 网上下载别人源码一编译 报一堆英文错误 死了的心都有了 先来感受一下吧 经过两天的踩坑 东看看 西查查 终于算是解决了目前项目的错误 虽然不知道为什么 但是可以
  • 三元运算符判断字符串是否为空

    有一个变量String userId 判断是否为null 如果为null 就赋值为空串 否则就不变 用if条件写是 if null userId userId 想用三元运算符写 常见错误写法 userId null userId 这样是错误
  • html禁止自动填充input表单的完美解决办法

    提交登陆等表单时 允许记录了密码则会保存起来 且每次都会自动填充入input 我们有时候不需要自动填充 试过网上的各种方法都没能完美解决 最后终于找到解决办法 废话不多说 直接上代码
  • STM8S105K4T6硬件IIC调试小结

    1 IIC初始化 具体时钟设置参考此篇文章 https blog csdn net u014397533 article details 46495905 void I2C Init void I2C CR1 0x00 禁止I2C外设 此句
  • 日本语语料库

    来自 日语语料库建设的现状综述 上海外国语大学 毛文伟 2009年 1 EDR语料库 EDR 该语料库由日本电子化辞书研究所开发 并于1995年推出 素材选自新闻报道和杂志 规模为 20 万句 另有 10 万 句左右的英语语料 在原始语料的
  • 深度学习图像融合 合成 协调笔记

    目录 图像合成最新资料汇总1 图像合成最新资料汇总2 图像渲染 pip install poetry
  • 【Espruino】NO.05 按键是你的仆人

    http blog csdn net qwert1213131 article details 27104341 本文属于个人理解 能力有限 纰漏在所难免 还望指正 小鱼有点电 按键 生活中随处可见 手机 电脑 家用电器 用来执行各种功能
  • Linux中用stat命令查看文件时3个时间点解析

    有些时候 我们需要使用stat命令来查看文件的详细信息 另外联想下 ls l命令显示的是什么时间 touch命令修改文件的时间戳 修改的又是什么时间 在这里我们一起来试验下 首先 我们来看下stat情况 如图所示 会出现3个类型的时间 分别
  • CPU时间与系统时间(CPU time and wall clock time)

    CPU时间是指一段程序在CPU上面运行消耗的时间 也是内核时间 kernel time 在Linux Unix系统里面 C 程序的COU时间可以用一些第三方的库提供的函数测出 但是在Windows系统里面 没有可以直接使用的第三方函数 在这
  • Session和Cookie实现购物车

    来自森大科技官方博客 http www cnsendblog com index php p 342 GPS平台 网站建设 软件开发 系统运维 找森大网络科技 http cnsendnet taobao com 使用Session和Cook
  • 自定义Mybatis框架

    目录 自定义Mybatis分析 轮子缺少的配件 组装轮子 制定骨架 解析配置文件 类关系梳理 创建默认实现类 实现基于注解的查询 目录结构 流程图 通过快速入门示例 Mybatis快速入门 我们发现使用 mybatis 是非常容易的一件事情
  • easyui dialog 子窗口jsp(被弹出窗口)调用父jsp页面方法操作父jsp

    父jsp monthDuty jsp 选中tab2 var selectTabByIndex function tabId tabs select 1 中间js文件 monthDutyJs js var dialog parent sunn
  • 「Linux-基础」CentOS 8 LVM逻辑卷管理

    LVM逻辑卷管理 枫梓林 提示 建议按着步骤来 文章目录 LVM逻辑卷管理 1 简介 2 建立LVM的步骤 3 逻辑卷管理及部署 1 磁盘分区 2 物理卷管理 建立物理卷 扫描物理卷 显示物理卷 删除物理卷 3 卷组管理 建立卷组 扫描卷组