Linux给磁盘扩容(LVM方式)

news2025/1/19 20:22:45

Linux给磁盘扩容(LVM方式)

最近测试性能,在本地打数据时,发现磁盘空间不足,于是想手动给/挂载点添加空间。这里介绍通过LVM方式快速给磁盘扩容。

LVM:是一种技术,方便管理磁盘。如果不用LVM,那么就不好在之前的磁盘基础上扩容,比如我一块硬盘20G被写满了之后,我想将这块硬盘扩容到40G,就无法操作。只能新开一个磁盘。对于MySQL这种数据保存在本地磁盘路径/var/mysql/data这种就无法正确扩容。

  • 有人会说我直接新插一个更大的硬盘,然后把数据从旧磁盘复制到新磁盘上,显然这在数据量大的情况下是不合理的。会耗费大量的时间。

1 概念

  1. PV:物理卷,同一磁盘可划分为多个物理卷。
  2. VG:卷组,一个到多个PV可组成一个卷组。
  3. LV:逻辑卷,卷组可划分为多个逻辑卷。
  4. PE:Physical extent物理区域,硬盘可供指派给逻辑卷的最小单位(通常为 4MB)
  • 挂载点:lv与挂载点是1:1的关系。
    在这里插入图片描述

1.1 物理卷 Physical Volume (PV)

可以在上面建立卷组的媒介,可以是硬盘分区,也可以是硬盘本身或者回环文件(loopback file)。物理卷包括一个特殊的 header,其余部分被切割为一块块物理区域(physical extents)

1.2 卷组 Volume group (VG): 将一组物理卷收集为一个管理单元

1.3 逻辑卷 Logical volume (LV): 虚拟分区,由物理区域(physical extents)组成

1.4 物理区域 Physical extent (PE): 硬盘可供指派给逻辑卷的最小单位(通常为 4MB)

2 实战

我本地/目录下有50G空间,现在我想扩容到100G。
在这里插入图片描述

2.1 相关基础命令

# 查看挂载点
df -h 

# 查看逻辑卷( logical volume)
lvdisplay

# 查看当前的卷组(volume group),输出结果中的VG Size表示当前卷组总大小
vgdisplay

# 查看当前的物理卷组(physical volume)
pvdisplay

# 执行fdisk /dev/vdb给vdb磁盘创建分区
fdisk /dev/vdb

# 格式化分区
mkfs -t xfs /dev/vdb1 # 一般用于centos7及以上
# mkfs -t ext4 /dev/vdb1 # 一般用于centos6

# 创建pv,方便将pv交给vg管理
pvcreate /dev/vdb1

# 给centos这个VG扩容
vgextend centos /dev/vdb1

# 给LV扩容 
lvextend -l +100%FREE /dev/centos/root

# 刷新分区
# resize2fs /dev/centos/root # 适用于centos6
xfs_growfs /dev/centos/root # centos7及以后

2.2 开始给LVM扩容

1. 查看fdisk:fdisk -l
fdisk -l

在这里插入图片描述

可以看到我们当前磁盘的基础信息,以及挂载情况。

# 查询挂载点情况
df -h 

在这里插入图片描述
可以看到我/下可用容量只有50G,现在我需要给它扩容。

2. 查看所有存储设备:fdisk -l |grep ‘/dev’
# 查看当前所有的存储设备
# fdisk -l |grep '/dev'
# 查看当前所有磁盘
fdisk -l |grep '/dev/vd'

在这里插入图片描述
手动给虚拟机或者物理机新增一块磁盘,再执行相同命令:

# 查看当前所有磁盘
fdisk -l |grep '/dev/vd'

在这里插入图片描述

3. 给磁盘创建分区:fdisk /dev/vdb
# 执行fdisk /dev/vdb给vdb磁盘创建分区
fdisk /dev/vdb
## n:新建分区
## l: 选择逻辑分区,如果没有,则首先创建主分区(p),然后再添加逻辑分区(硬盘最多四个分区 P-P-P-P 或 P-P-P-E)

在这里插入图片描述

# 查看是否分区成功
fdisk -l | grep 'dev/vd'

在这里插入图片描述

4. 格式化磁盘:mkfs -t xfs /dev/vdb1

文件系统类型centos6文件系统是ext4,因为设计较早,对于现今动辄上T的海量数据处理,性能较低。 centos7文件系统是xfs,适用于海量数据。

# 格式化分区
mkfs -t xfs /dev/vdb1 # 一般用于centos7及以上
# mkfs -t ext4 /dev/vdb1 # 一般用于centos6

在这里插入图片描述

5. 创建pv:pvcreate /dev/vdb1
# 创建pv,方便将pv交给vg管理
pvcreate /dev/vdb1
# pvscan查看卷组,观察是否创建成功
pvscan |  grep /dev/vdb1

在这里插入图片描述

6. 扩容vg:vgextend centos /dev/vdb1

我现在要给/扩容,所以要知道/属于哪个vg管理

# 查看lv
lvdisplay

在这里插入图片描述

所以我现在要给centos这个VG扩展容量

# 将/dev/vdb1这个pv交给centos这个vg管理
vgextend centos /dev/vdb1
# 查看vg状态
vgdisplay

在这里插入图片描述

7.扩容lv:lvextend -l +100%FREE /dev/centos/root

我们要给/目录扩容,所以需要知道/目录对应的LVPath是什么

# 查看/挂载点对应的信息
df -h 

在这里插入图片描述

# 查看LV虚拟卷信息,可以知道/对应的LVPath为/dev/centos/root
lvdisplay

在这里插入图片描述

下面就是给LV扩容:

# 按固定大小追加(追加10G给/dev/centos/root这个LVPath)
lvextend -L +10G /dev/centos/root

# 按百分比追加
lvextend -l +100%FREE /dev/centos/root

以百分比追加为例,我将vg中剩下的所有容量全部分配给/

lvextend -l +100%FREE /dev/centos/root

在这里插入图片描述

# 查看LV是否扩容成功
lvdisplay

在这里插入图片描述
LV Size成功由50G扩容到了100G

8. 刷新分区:xfs_growfs /dev/centos/root

df 命令参看硬盘信息-T选项, 查看文件系统类型centos6文件系统是ext4,因为设计较早,对于现今动辄上T的海量数据处理,性能较低。 centos7文件系统是xfs,适用于海量数据。

# xfs格式的硬盘使用xfs_growfs
# ext4用resize2fs命令,
df -T # 查看文件系统类型(一般centos6是ext4,centos7及以后是xfs)
# resize2fs /dev/centos/root # 适用于centos6
xfs_growfs /dev/centos/root # centos7及以后

在这里插入图片描述

9. 验证df -h

扩容前:
在这里插入图片描述
扩容后:
在这里插入图片描述
注意: 不要卸载扩容的磁盘,可能出现丢失数据或是系统无法启动

因为多个LV对外提供的是一个VG,如果你卸载了其中一个磁盘导致LV失效,部分数据就可能丢失。类比:ES中的Shard

2.3 总结

  1. 新增磁盘
  2. fdisk给磁盘创建分区,fdisk /dev/vdb
  3. mkfs格式化磁盘,mkfs -t xfs /dev/vdb1
  4. pvcreate创建pv,pvcreate /dev/vdb1
  5. vgextend扩容vg,vgextend centos /dev/vdb1,给vg扩容(将/dev/vdb1交给centos这个vg管理)
  6. lvextend扩容lv,lvextend -l +100%FREE /dev/centos/root(将vg剩余的容量全部分配给/dev/centos/root这个lv)
  7. xfs_growfs刷新分区,# resize2fs /dev/centos/root # 适用于centos6
    xfs_growfs /dev/centos/root # centos7及以后
  8. df -h 查看挂载点大小变化,观察是否扩容成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1608109.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

经典网络解读—IResNet

论文:Improved Residual Networks for Image and Video Recognition(2020.4) 作者:Ionut Cosmin Duta, Li Liu, Fan Zhu, Ling Shao 链接:https://arxiv.org/abs/2004.04989 代码:https://github.com/iduta…

IK分词器安装、配置、分词自定义、Rest使用、SpringBoot使用

文章目录 1. 概述2. 安装配置3. 自定义拆分文本4. 调用4.1 拆分规则4.2 Rest 调用4.3 SpringBoot 调用 1. 概述 IK分词器是ElasticSearch(es)的一个最最最有名插件,能够把一段中文或者别的语句划分成一个个的关键字,进而在搜索的时候对数据库中或者索引库…

并发场景下 缓存击穿 穿透 雪崩如何解决

最近建了一个技术交流群,欢迎志同道合的同学加入,群里主要讨论:分享业务解决方案、深度分析面试题并解答工作中遇到的问题,同时也能为我提供写作的素材。 群号 208236931,欢迎进群交流学习,一起进步、进步、…

3.4 海思SS928开发 - 烧写工具 - BurnTool Emmc 烧写

3.4 烧写工具 - BurnTool Emmc 烧写 BurnTool 工具提供了多种烧写方式,这里只介绍最常用的 烧写emmc方式。 环境准备 PC 与单板之间连接好调试串口以及网线。 将厂商提供的出厂镜像拷贝至 PC 硬盘上,解压后得到的文件如下: . ├── boot_…

ARM学习(26)链接库的依赖查看

笔者今天来聊一下查看链接库的依赖。 通常情况下,运行一个可执行文件的时候,可能会出现找不到依赖库的情况,比如图下这种情况,可以看到是缺少了license.dll或者libtest.so,所以无法运行。怎么知道它到底缺少什么dll呢&…

收藏这份方案,制造业营销管理快人一步【内附下载链接】

随着“中国制造2025”等政策的实施,制造业正经历着技术革新和产业升级,尤其在智能化和绿色制造领域取得了显著进展。 然而, 制造业面临着消费者需求日益多样化和个性化的挑战,迫切需要从生产导向转变为市场导向。与此同时&#…

Transformer中的位置编码详解

什么是位置编码 位置编码概述 位置编码的目的是为了补充序列的位置信息,这是因为自注意力机制本身不包含位置的概念(例如顺序信息)。位置编码的具体作用是,对于不同的输入序列成分,赋予其不同的位置标识,确…

RIP小实验配置及缺省路由下发

配置如下: IP配置: IP配置完先查看RIP协议学习到的路由表,没有内容则代表没有开启RIP 启用RIP:这里的rip后跟的ID只具有本地意义,可以在1-65535之间随便取,不同路由器之间都可以取用不同的,为了…

宿舍预付费管控云平台

1.宿舍预付费管控云平台概述 宿舍预付费管控云平台是一种创新的智能管理系统,专为学校、公寓等住宿环境设计,旨在提升管理效率,优化用户体验,并实现资源的高效利用。通过云端技术,该平台可以实现远程充值、实时消费记…

Day 30 回溯总结

重新安排行程(*) 给定一个机票的字符串二维数组 [from, to],子数组中的两个成员分别表示飞机出发和降落的机场地点,对该行程进行重新规划排序。所有这些机票都属于一个从 JFK(肯尼迪国际机场)出发的先生,所以该行程必…

设置表格高度后,数值改变但实际不变

1.选中表格 2.点击“开始”——>“段落设置”的选项启动按钮,设置为单倍行距 3.可以看到,表格的行高被调小了。

【SLAM】在Win10上实现Nerf-Pytorch【GPU版】

文章目录 ReadMe安装依赖运行下载两个示例数据集:lego和fern训练一个低分辨率的Lego NeRF:训练一个低分辨率蕨类植物NeRF:更多数据集预训练模型可复现实现1、下载nerf-pytorch工程2、安装依赖3、下载数据4、运行lego NeRF:ReadMe Github链接 NeRF (神经辐射场)是一种在合成…

prompt问题【中间不好】

问题1:longchain 关键词在中间容易被忽略掉 Found in the Middle: How Language Models Use Long Contexts Better via Plug-and-Play Positional Encoding 论文对大模型在长文本情况下的性能做了一系列实验研究,发现了一个有趣的“Lost in the middle”现象&#x…

理解Docker容器和镜像的区别

容器镜像读写层 容器最上边那一层是可读可写的。 镜像可以看作是面向对象编程中的类。 文章目录 一、镜像(只读层的集合) 二、容器(多层只读层一层读写层) 三、镜像层 一、镜像(只读层的集合) 镜像&…

Vue3从入门到实战:深度了解相关API

shallowRef 作用:创建一个响应式数据,但只对顶层属性进行响应式处理。 用法: let myVar shallowRef(initialValue); 特点:只跟踪引用值的变化,不关心值内部的属性变化。 shallowReactive 作用:创建一个…

ASPICE 追溯性实践分享

01前言 接着之前的分享,遗留的追溯性ASPICE 认证实践及个人理解分享-CSDN博客文章浏览阅读961次,点赞22次,收藏17次。ASPICE是Automotive 和SPICE的组合,全英文为(Automotive Software ProcessImprovement and Determ…

【全】一文读懂 containerd 中的 NRI 机制

本文内容节选自 《containerd 原理剖析与实战》,本书正参加限时优惠内购,限时 69.9 元购买。 本文介绍 containerd 中的一种可插拔的扩展机制 NRI。 1. NRI 介绍 NRI(Node Resource Interface),即节点资源接口。是 c…

汇编语言——输入16位二进制数,存入BX

这是我原先的做法: shl bx,1 ;bx逻辑左移一位 sub dl,30h ;键盘输入的0/1,ASCII码分别为30h/31h,要转换成0/1 add bl,dl ;bl逻辑左移一位后加上现在输入的字符data segment data ends stack segment stackdw 100 dup (?)top label wo…

Oracle数据库 :查询表结构脚本

查询脚本 : SELECT CASE WHEN a.column_id1 THEN a.TABLE_NAME ELSE END AS 表名, a.column_id AS 序号, a.column_name as 列名, REPLACE(comments, CHR(10), ) as 列说明, a.data_type || ( || a.data_length || ) as 数据类型, a.DATA_LENGTH AS 长度, a.DATA_…

【mac】【python】新建项目虚拟环境后,使用命令pip出现错误:zsh: command not found: pip

【mac】【python】新建项目虚拟环境后,使用命令pip出现错误:zsh: command not found: pip 问题描述: 拉取或者创建新的python项目时,为项目添加了新的解释器,创建啦虚拟环境,但是执行pip命令的时候找不到命…