磁盘的动态扩容和缩减

2023-11-02

图片

主旨

在日常运维过程中,经常会出现磁盘爆满,不足以维持未来业务量,或者磁盘太大,造成资源浪费的情况,这种情况下最好的方式就是采用磁盘的动态扩容和缩减。

LVM是什么

在这里我们推荐使用LVM逻辑卷的方式,为什么使用这个方式呢,这个方式有什么值得推崇的呢,我们在这里不进行一堆原理上的介绍,只需要知道如果我们使用了lvm,就可以动态的控制某个磁盘的大小,而不至于每次都要删除重建磁盘即可。话不多说,下面我们直接进入正文。

名词解释

PS:包括但不限于以下三个(因为越多越乱)

PV:物理卷。可以是单独磁盘,也可以是磁盘分区;
VG:卷组。是PV的组合,可以看成单独的逻辑磁盘;
LV:逻辑分区。相当于物理分区的 /dev/sd*

他们的关系如下图:

图片

环境

一台linux服务器
一个新磁盘

检查

输入 fdisk -l 命令,检查下是否有一块磁盘未使用,如下,“/dev/sdb”就是未被使用的磁盘。

[root@localhost ~]# fdisk -l

磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000aa7ff

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    41943039    19921920   8e  Linux LVM

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos-root:18.2 GB, 18249416704 字节,35643392 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

[root@localhost ~]#

划分磁盘分区

PS:是否进行此步骤,根据实际情况进行操作,这里是做实验。

将 /dev/sdb 磁盘划分成sdb1、sdb2、sdb3,每个磁盘3g的空间

PS:如果要做 lvm,不需要额外使用mkfs命令进行格式化

[root@localhost ~]# fdisk /dev/sdb  # 开始划分磁盘 /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x6fc1e4e0 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n  # 输入 n 新建磁盘
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):   # 直接回车
Using default response p
分区号 (1-4,默认 1):# 直接回车
起始 扇区 (2048-20971519,默认为 2048):# 直接回车
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+3G  # 分给 3g 的空间 
分区 1 已设置为 Linux 类型,大小设为 3 GiB

命令(输入 m 获取帮助):n  # 输入 n 新建磁盘
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p):   # 直接回车
Using default response p
分区号 (2-4,默认 2):# 直接回车
起始 扇区 (6293504-20971519,默认为 6293504):# 直接回车
将使用默认值 6293504
Last 扇区, +扇区 or +size{K,M,G} (6293504-20971519,默认为 20971519):+3G  # 分给 3g 的空间
分区 2 已设置为 Linux 类型,大小设为 3 GiB

命令(输入 m 获取帮助):n  # 输入 n 新建磁盘
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p):   # 直接回车
Using default response p
分区号 (3,4,默认 3):  # 直接回车
起始 扇区 (12584960-20971519,默认为 12584960):# 直接回车
将使用默认值 12584960
Last 扇区, +扇区 or +size{K,M,G} (12584960-20971519,默认为 20971519):+3G  # 分给 3g 的空间
分区 3 已设置为 Linux 类型,大小设为 3 GiB

命令(输入 m 获取帮助):p  # 查看分区情况,是否和规划的一样

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6fc1e4e0

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     6293503     3145728   83  Linux
/dev/sdb2         6293504    12584959     3145728   83  Linux
/dev/sdb3        12584960    18876415     3145728   83  Linux

命令(输入 m 获取帮助):w  # 报错退出
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]#

创建pv

命令集合:

pvcreate 将物理分区新建为PV
pvs/pvscan 查看系统里有pv的磁盘
pvdisplay 显示系统上面的pv状态
pvremove 删除pv

实操:

[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdb2   # 将 sdb2 和 sdb3 变成pv
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdb2" successfully created.
[root@localhost ~]# pvs  # 查看系统中pv
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  <19.00g    0 
  /dev/sdb1         lvm2 ---    3.00g 3.00g
  /dev/sdb2         lvm2 ---    3.00g 3.00g
[root@localhost ~]#

创建vg

命令集合:

vgcreate 新建vg, -s  后面接 pe 的大小
vgextend 扩展vg,就是增加vp
vgs/vgscan 查看系统里有 vg 的磁盘
vgdisplay 显示系统上面的 vg 状态
vgremove 删除vg
vgreduce 在vg里面删除pv

实操:

[root@localhost ~]# vgcreate jier /dev/sdb1 /dev/sdb2  # 创建一个名为 jier 的vg
  Volume group "jier" successfully created
[root@localhost ~]# vgs  # 查看是否成功,两个 3g 的,就是6g
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <19.00g    0 
  jier     2   0   0 wz--n-   5.99g 5.99g
[root@localhost ~]# 

创建lv

命令集合:

lvcreate 新建lv,-L指定容量,M,G
lvextent 增加容量
lvs/lvscan 查看系统里有lv的磁盘
lsdisplay 显示系统上面的lv的状态
lsremove 删除lv
lvreduce 在lv里减少容量

实操:

[root@localhost ~]# lvcreate -L 500M -n jier01 jier  # 在 jier 卷组上,新建一个名为 jier01 的lv,且容量为 500M
  Logical volume "jier01" created.
[root@localhost ~]# lvs  # 查看是否创建成功
  LV     VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root   centos -wi-ao---- <17.00g                                                    
  swap   centos -wi-ao----   2.00g                                                    
  jier01 jier   -wi-a----- 500.00m                                                    
[root@localhost ~]# mkfs.ext4 /dev/jier/jier01   # 格式化 jier01 ,推荐使用ext4的格式
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
128016 inodes, 512000 blocks
25600 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=34078720
63 block groups
8192 blocks per group, 8192 fragments per group
2032 inodes per group
Superblock backups stored on blocks: 
        8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 

[root@localhost ~]# mkdir /jier01  # 新建目录,此目录为挂载点,名字随意
[root@localhost ~]# mount /dev/jier/jier01 /jier01/  # 将jier01挂载到/jier01目录下
[root@localhost ~]# df -h  # 查看容量
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   17G  1.8G   16G   11% /
devtmpfs                 808M     0  808M    0% /dev
tmpfs                    820M     0  820M    0% /dev/shm
tmpfs                    820M  9.6M  810M    2% /run
tmpfs                    820M     0  820M    0% /sys/fs/cgroup
/dev/sda1               1014M  130M  885M   13% /boot
tmpfs                    164M     0  164M    0% /run/user/0
/dev/mapper/jier-jier01  477M  2.3M  445M    1% /jier01
[root@localhost ~]#

扩容lv/目录

命令集合:

resize2fs 文件系统扩容

实操:

[root@localhost ~]# lvextend -L +200M /dev/jier/jier01   # 磁盘添加200M的空间
  Size of logical volume jier/jier01 changed from 500.00 MiB (125 extents) to 700.00 MiB (175 extents).
  Logical volume jier/jier01 successfully resized.
[root@localhost ~]# resize2fs /dev/jier/jier01   # 文件系统重新加载,此部署必须,如果发现报错了,可以使用xfs_growfs试一下,有可能是你格式化的时候,格式化成为额xfs格式
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/jier/jier01 is mounted on /jier01; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 6
The filesystem on /dev/jier/jier01 is now 716800 blocks long.

[root@localhost ~]# df -h  # 查看容量,已经新增了200M的内容
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   17G  1.8G   16G   11% /
devtmpfs                 808M     0  808M    0% /dev
tmpfs                    820M     0  820M    0% /dev/shm
tmpfs                    820M  9.6M  810M    2% /run
tmpfs                    820M     0  820M    0% /sys/fs/cgroup
/dev/sda1               1014M  130M  885M   13% /boot
tmpfs                    164M     0  164M    0% /run/user/0
/dev/mapper/jier-jier01  670M  2.5M  631M    1% /jier01
[root@localhost ~]#

扩容vg/卷组

[root@localhost ~]# pvcreate /dev/sdb3  # 将 sdb3 变成pv
  Physical volume "/dev/sdb3" successfully created.
[root@localhost ~]# vgextend jier /dev/sdb3  # 给 jier 这个卷组,新增一个pv
  Volume group "jier" successfully extended
[root@localhost ~]# vgs  # 查看容量,由6g变成了9g
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <19.00g    0 
  jier     3   1   0 wz--n-  <8.99g 8.30g
[root@localhost ~]#

缩减lv/目录

PS:缩减必须卸载磁盘挂载,方可进行操作

命令:umount

[root@localhost ~]# umount /jier01/  # 卸载

[root@localhost ~]# e2fsck -f /dev/jier/jier01   # 检查
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/jier/jier01: 11/178816 files (0.0% non-contiguous), 33345/716800 blocks
[root@localhost ~]# resize2fs /dev/jier/jier01 400M  # 文件系统缩减
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/jier/jier01 to 409600 (1k) blocks.
The filesystem on /dev/jier/jier01 is now 409600 blocks long.

[root@localhost ~]# lvreduce -L 400M /dev/jier/jier01  # 磁盘缩减
  WARNING: Reducing active logical volume to 400.00 MiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce jier/jier01? [y/n]: y  # 输入 y 回车
  Size of logical volume jier/jier01 changed from 700.00 MiB (175 extents) to 400.00 MiB (100 extents).
  Logical volume jier/jier01 successfully resized.
[root@localhost ~]# mount /dev/jier/jier01 /jier01/  # 重新进行挂载
[root@localhost ~]# df -h  # 查看容量
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   17G  1.8G   16G   11% /
devtmpfs                 808M     0  808M    0% /dev
tmpfs                    820M     0  820M    0% /dev/shm
tmpfs                    820M  9.6M  810M    2% /run
tmpfs                    820M     0  820M    0% /sys/fs/cgroup
/dev/sda1               1014M  130M  885M   13% /boot
tmpfs                    164M     0  164M    0% /run/user/0
/dev/mapper/jier-jier01  380M  2.3M  355M    1% /jier01
[root@localhost ~]#

至此,磁盘的动态增大和缩减已经全部实现完毕。

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

磁盘的动态扩容和缩减 的相关文章

随机推荐

  • Chromium OS autotest

    autotest三种主要测试手段 直接调用系统命令 相当于直接运行shell命令 通过dbus进行method call 通过加载插件到browser的方式 运行js代码 以js代码来调用C 方法 通过extension来运行js代码 目的
  • XSS闯关——第五关:level5

    第五关 level5 输入语句测试 gt 观察源代码发现字符被替换 把部分字符换成大写尝试 gt 一样的结果 采用html事件方法 失败 同样是字符被替换 使用伪链接方式假造一个超链接尝试 gt a href link a 点击后执行脚本
  • Laravel Collection 常用方法(1)

    我的个人博客 逐步前行STEP 1 first 返回集合第一个通过指定测试的元素 collect 1 2 3 4 gt first 1 collect 1 2 3 4 gt first function value key return v
  • 深度学习deep learning

    一 简介 深度学习是包含多个隐层的机器学习模型 核心是基于训练的方式 从海量数据中挖掘有用信息 实现分类与预测 早期的深度学习模型 编码器 循环神经网络 深度置信网络 卷积神经网络 衍生模型 堆叠降噪自编码器 稀疏自编码器 降噪自编码器 深
  • mysql 集成测试_使用Go进行集成测试的MySQL Docker容器

    使用Go进行集成测试的MySQL Docker容器 原文链接 https itnext io mysql docker container for integration testing using go f784b70a03b 作者 Mi
  • 【Linux】在Xilinx平台上实现UVC Gadget(2)- 解决dwc3驱动bug

    Linux 在Xilinx平台上实现UVC Gadget 2 解决dwc3驱动bug 一 bug描述 二 具体修改方法 1 找到内核源码位置并复制到其他目录 2 Petalinux里面设置使用自定义内核源码 1 选第2个Linux Comp
  • 数列分段

    描述 对于给定的一个长度为N的正整数数列A i 现要将其分成M M N 段 并要求每段连续 且每段和的最大值最小 关于最大值最小 例如一数列4 2 4 5 1要分成3段 将其如下分段 4 2 4 5 1 第一段和为6 第2段和为9 第3段和
  • MySQL查询语句的执行顺序

    SQL语句执行顺序 FROM ON JOIN WHERE GROUP BY AGG FUNC WITH HAVING SELECT UNION DISTINCT ORDER BY LIMIT 在实际执行过程中 每个步骤都会为下一个步骤生成一
  • [django项目] 后台菜单管理功能

    后台菜单管理功能 菜单的管理功能其实就是 对菜单的增删改查 I 业务功能分析 1 gt 业务需求分析 后台首页菜单根据用户权限动态生成 不同菜单对应不同的功能视图 菜单的增删改查 2 gt 功能分析 菜单列表 添加菜单 修改菜单 删除菜单
  • Python Tree库绘制多叉树的用法介绍

    Python Tree库绘制多叉树的用法介绍 Tree 库是一个 Python 的第三方库 这个库主要用于生成树和绘制树的图形 一 安装Tree pip install Tree 使用 Tree 库需要配合 PIL 库来实现绘图 二 官方案
  • Qt控件之QCheckBox复选框控件使用详解

    Qt控件之QCheckBox复选框控件使用详解 在Qt的控件中 QCheckBox是常用的一种复选框控件 用于用户进行多选操作 本篇文章将为大家详细介绍QCheckBox的使用方法 一 QCheckBox控件的创建 在Qt中创建QCheck
  • Windows下配置 MinGW - Gcc、G++构建C++编译环境,并在Notepad++编写C++程序

    win10 64位系统参考博文 MinGW w64安装教程 著名C C 编译器GCC的Windows版本 工具 win7 Notepad MinGW MinGW是什么 MinGW 提供了一套简单方便的Windows下的基于GCC 程序开发环
  • spark的安装与部署

    目录 前言 一 spark是什么 二 知识回顾 1 启动zookeeper 2 启动hdfs和yarn 3 通过jps查看是否启动成功 4 进入MySQL 5 进入hive之后验证 6 启动hbase 7 查看进程 8 进入hbase并测试
  • 数值的整数次方(剑指offer 16)Java快速幂

    目录 一 题目描述 二 思路讲解 三 Java代码实现 四 时空复杂度分析 五 另一种方法 一 题目描述 实现 pow x n 即计算 x 的 n 次幂函数 即 xn 不得使用库函数 同时不需要考虑大数问题 示例 1 输入 x 2 0000
  • GPIO应用编程

    开发平台 正点原子阿尔法开发板 PS 可以用cat sys kernel debug gpio命令查看引脚被占用情况 文章目录 GPIO应用编程 编程步骤 应用编程 遇到的问题 GPIO应用编程 sys class gpio export
  • 印章生成工具类开发

    Java代码见我的资源 免费使用印章生成工具类 Java开发 Java文档类资源 CSDN下载印章生成工具类 Java开发更多下载资源 学习资料请访问CSDN下载频道 https download csdn net download jlo
  • wss socket java_有用过websocket的吗,wss://咋弄,现在ws://访问没问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 将ws 改为wss ServerEndpoint value ws id Component public class WebSocket public static final String
  • linux中ElasticSearch的安装 安装ES&Kibana 配置IK分词器(环境搭建)

    以docker为基础安装ES Kibana 1进入 opt文件夹创建yml文件所在目录 然后编辑文件 拷贝笔记配置内容过来 启动容器 root localhost cd opt root localhost opt ls container
  • 最新Visual studio 2017无法支持最新Unity3d 2017相关解决方案

    最近换了台电脑于是乎也就装了最新的VS2017来尝尝鲜 U3D也是用的2017版本 结果在使用过程中发现一些问题 可能有一些问题在老版本上也是会出现的 只是没有发现而已 以后遇到一些相关的坑会陆续在这里更新 希望对大家有帮助 1 我安装了V
  • 磁盘的动态扩容和缩减

    主旨 在日常运维过程中 经常会出现磁盘爆满 不足以维持未来业务量 或者磁盘太大 造成资源浪费的情况 这种情况下最好的方式就是采用磁盘的动态扩容和缩减 LVM是什么 在这里我们推荐使用LVM逻辑卷的方式 为什么使用这个方式呢 这个方式有什么值