Linux给磁盘扩容(LVM方式)

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.mzph.cn/news/825963.shtml

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

相关文章

XSS漏洞---类型+实战案例+防止

文章目录 目录 文章目录 一.XSS漏洞简介 二.XSS漏洞类型 三.实战案例 反射型XSS 存储型XSS 四.防护措施 一.XSS漏洞简介 XSS漏洞(Cross-Site Scripting)是一种常见的Web应用程序安全漏洞,它允许攻击者在受害者的浏览器中注入恶意脚本。当受…

基于STM32单片机的水位监控与报警系统设计

基于STM32单片机的水位监控与报警系统设计 摘要:随着科技的不断发展,单片机技术在工业自动化、环境监测等领域得到了广泛应用。本文设计了一种基于STM32单片机的水位监控与报警系统,通过电位器模拟当前的水位高度,并实时显示在LC…

neovim添加clipboard = “unnamedplus“出现打开速度变慢的解决办法

文章目录 一、前言二、解决问题1、下载win32yank.exe2、把下面的内容放到init.lua 三、最后 一、前言 笔者最近在wsl下重新配neovim时,发现打开速度会变得很慢。耗费巨大时间,终于找到原因。注释掉配置文件(init.lua or optioons.lua&#x…

【LeetCode热题100】【图论】岛屿数量

题目链接:200. 岛屿数量 - 力扣(LeetCode) 考察图的遍历,从岛上上下左右能到达的地方都是这个岛 首先需要判断图的边界,然后再上下左右继续深度遍历,并把遍历到的标记为已访问,可以原地修改图…

linux下的chattr命令是什么意思

左手编程,右手年华。大家好,我是一点,关注我,带你走入编程的世界。 公众号:一点sir,关注领取编程资料 chattr 是一个用于修改 Linux 文件系统中文件或目录属性的命令行工具。它允许我们更改文件的特定属性&…

【python】计算水仙花数

【python】计算水仙花数 "水仙花数"是指一个3位数,它的三个位上的数字的3次幂之和等于它本身。例如,"153"就是一个水仙花数,因为1^3 5^3 3^3 153。以下是一个Python代码示例,用于计算并打印出所有的三位数…

konva.js 工具类

konva.js 工具类 import StringUtils from "./StringUtil.js";class KonvaCanvas {/*** 初始化画布* param {String} domId 容器dom id*/constructor(domId) {this.layer null;this.stage null;this.scale 1.0;this.init(domId);}/*** 聚焦到指定元素* param {St…

树和森林的遍历

一、树的先根遍历: 先根遍历:若树非空,先访问根结点,再依次对每棵子树进行先根遍历。 //树的先根遍历 void Pre0rder(TreeNode *R){if(R!NULL){visit(R); //访问根节点while(R还有下一个子树T)Pre0rder(T); …

OpenSBI初始化分析

OpenSBI初始化分析 OpenSBI初始化启动流程:主要涉及三个阶段 OpenSBI底层初始化 OpenSBI初始化 启动流程:主要涉及三个阶段 .S汇编阶段,主要是Opensbi的底层初始化阶段,为C准备执行环境;设备初始化阶段,此…

elmentui树形表格使用Sortable拖拽展开行时拖拽bug

1、使用elemntui的el-table使用Sortable进行拖拽,如下 const el this.$el.querySelector(.el-table__body-wrapper tbody) Sortable.create(el, {onEnd: (event) > {const { oldIndex, newIndex } event//拿到更新前后的下标即可完成数据的更新} })2、但是我这…

java中将1.1、3.3、6.6、0.0、0.0等double类型数据相加得到结果精度丢失问题

在项目中需要统计各个商品的价格。出现结果丢失问题。如下 问题代码 Testvoid contextLoads4() throws Exception{double a 3.3;double b 6.6;double c 1.1;double d 0.0;ArrayList<Double> arrayList new ArrayList();arrayList.add(a);arrayList.add(b);array…

【深度学习实战(9)】三种保存和加载模型的方式

一、state_dict方式&#xff08;推荐&#xff09; torch.save(model.state_dict(), PATH)model YourModel() model.load_state_dict(torch.load(PATH)) model.eval()记住一定要使用model.eval()来固定dropout和归一化层&#xff0c;否则每次推理会生成不同的结果。 二、整个…

pymysql +SQLAlchemy操作MySQL数据库(ORM)

一、sqlalchemy简介 SQLAlchemy是用Python编程语言开发的一个开源项目。它提供了SQL工具包和ORM&#xff08;对象关系映射&#xff09;工具&#xff0c;使用MIT许可证发行。 SQLAlchemy采用简单的Python语言&#xff0c;提供高效和高性能的数据库访问&#xff0c;实现了完整的…

倾斜摄影修模软件模方(ModelFun)4.1.0下载及安装教程

文章目录 一、模方(ModelFun)4.1.0安装二、模方(ModelFun)4.1.0下载一、模方(ModelFun)4.1.0安装 订阅专栏后(获取专栏内所有文章阅读权限及软件安装包),从文末下载软件模方(ModelFun)4.1.0安装包,如下所示,并开始安装。 1.计算机需要进入测试模式 键盘WIN+R,打开运行窗…

常用命令及简单shell语句

常用命令及简单shell语句 ● 删除注释和空行 sed -e "s/#.*//g" test_file.conf | awk {if (length !0) print $0} ● ES查看更多有关于集群信息、当前节点统计信息等等 curl -XGET http://ip:9200/_cat/nodes?pretty ● 过滤僵尸进程 ps -A -ostat,ppid,pid,cmd…

NLP(4)--实现一个线性层

前言 仅记录学习过程&#xff0c;有问题欢迎讨论 感觉全连接层就像一个中间层转换数据的形态的,或者说预处理数据&#xff1f; 代码 里面有两个部分&#xff0c;一部分是自己实现的&#xff0c;一部分是利用模块的方法实现的。 import torch import torch.nn as nn import…

后端jar包部署常见运行和停止命令

目录 一、jar包运行最佳方式&#xff1a;nohup的方式运行&#xff0c;同时输出日志&#xff1a; 二、停止Jar包的运行&#xff1a; 一、jar包运行最佳方式&#xff1a;nohup的方式运行&#xff0c;同时输出日志&#xff1a; nohup java -jar xxx.jar > log.file 2>&…

【Tesla T4为例】GPU安装最新版本NVIDIA Driver、CUDA、cuDNN、Anaconda、Pytorch

NVIDIA Driver 进入英伟达官网下载页面 按照以上方式选择即可得到>535.113.01版本的驱动&#xff0c;可以实现多卡推理&#xff0c;小于这个版本会导致多卡训练以及推理报错 虽然最新版本为550.54.15&#xff0c;但是535版本更加稳定&#xff0c;并且pytorch目前只支持到1…

二叉树(Binary Tree)

二叉树(Binary Tree)是树的一种常见形式。二叉树的任意结点最多可以有两个子结点&#xff0c;也可以只有一个或者没有子结点。因此二叉树的度数一定小于等于2。二叉树结点的两个子结点&#xff0c;一个被称为左子结点&#xff0c;一个被称为右子结点。二叉树严格区分左右子结点…

YoutobeDNN

目录 1. 挑战 2. 系统整体结构 3.召回 4. 排序 5. 训练和测试样本的处理 1. 挑战 &#xff08;1&#xff09;规模。很多现有的推荐算法在小规模上效果好&#xff0c;但Youtobe规模很大。 &#xff08;2&#xff09;新颖度。Youtobe语料库是动态的&#xff0c;每秒都会有…