编辑
2023-03-08
Linux学习
00
请注意,本文编写于 561 天前,最后修改于 451 天前,其中某些信息可能已经过时。

目录

一、背景
二、场景
场景一:将 centos-home 分区移动到根分区 centos-root
详细代码如下:
说明:
场景二:新增磁盘扩容到根目录或者 home 下
场景三:在原始磁盘上增加空间(常在虚拟化环境中)
方法一:fdisk 进行分区,操作步骤与场景二基本一样,多了一步分区
方法二:用 parted 命令调整大小
三、总结

一、背景

linux 使用中经常遇到磁盘空间不足,需要对磁盘进行扩容。根据自己的经验进行归纳整理,多种场景,帮助需要者和备查

本文执行的命令,均在 centos7 环境下运行的,其他环境思路和相似,命令基本一致。

分区情况说明

sda 是单独的一块磁盘总大小 50G,sda1、sda2 是两个分区,sda2 下面有三个逻辑分区 centos-root 、centos-home、centos-[swap](df 命令时可以看到的挂载点);

  • centos-root对应的挂载点是 根目录
  • centos-home 对应的挂载点是 /home
  • 卷组名称为 centos (*通过*pvdisplay 查看**)**
[root@vm-210 templates]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 49G 0 part ├─centos-root 253:0 0 40G 0 lvm / ├─centos-home 253:1 0 7G 0 lvm /home └─centos-swap 253:2 0 2G 0 lvm [SWAP] [root@vm-210 templates]# pvdisplay --- Physical volume --- PV Name /dev/sda2 #卷组名称 VG Name centos PV Size <49.00 GiB / not usable 3.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 12543 Free PE 1 Allocated PE 12542 PV UUID 1Fpioh-HkxD-f4Pd-78An-on4A-vGS1-B9UXr4

二、场景

扩容磁盘不显示扩容后的磁盘或者磁盘大小两种情况:

  • 情况一:修改原来磁盘大小
  • 情况二:新增磁盘

场景一:将 centos-home 分区移动到根分区 centos-root

由于分区时,centos-home 分区空间非常大,centos-root 分区非常小,需要删除 centos-home 分区,扩容到 centos-root 分区

操作思路

  • 1.先备份 / home 下文件
  • 2.卸载(umount) /home (注意:卸载不掉时,请将所有使用 / home 的进程关闭
  • 3.从逻辑卷中删除(lvremove) home 分区
  • 4.扩展:将腾出的空间扩展(lvextend)到 centos-root 分区下
  • 5.使扩展生效(xfs_growfs
  • 6.注释掉 fstab 中的启动挂载项
  • 7.恢复备份数据到 / home 下

详细代码如下:

#!/bin/bash #【功能】 将centos-home分区的空间移动到根centos-root分区下 #1.先备份 /home下文件: 将/home下的所有内容备份到/backup下,下面的命令自动创建/backup目录 mkdir /backup && mv /home/* /backup # 2.卸载 centos-home umount /home ## 如提示失败则用下面的命令终止/home 分区下的进程 再进行卸载 ## fuser 安装方法 yum install -y psmisc ## fuser -m -v -i -k /home ## 判断是哪个进程占用了此目录,请kill掉那个进程也可以 # 3.从逻辑卷中删除(lvremove) centos-home 分区 echo y|lvremove /dev/mapper/centos-home # 4.扩展:将腾出的空间扩展(lvextend)到 centos-root分区下 lvextend -l+100%FREE /dev/mapper/centos-root # 5.使扩展生效(xfs_growfs) xfs_growfs /dev/mapper/centos-root # 6.注释掉fstab中的启动挂载项 sed -i 's;/dev/mapper/centos-home;#/dev/mapper/centos-home;g' /etc/fstab # 7.恢复 原来home下的数据 并删除/backup mv /backup/* /home && rm -rf /backup # 8.查看 df -H

说明:

思路是一样的,如果是其他分区,请修改里面的分区目录即可

场景二:新增磁盘扩容到根目录或者 home 下

磁盘空间不足,新增加了一块硬盘的场景。此处举例新增的一块磁盘名称为**/dev/sdb**

操作思路

  • 1.查看磁盘情况(lsblk、fdisk -l、pvdisplay)
  • 2.创建物理卷(pvcreate
  • 3.将磁盘扩展到卷组(vgextend
  • 4.扩展逻辑分区(lvextend
  • 5.使扩展生效(xfs_growfs
  • 6.查看(df -H
# 1.查看磁盘情况(lsblk、fdisk -l、pvdisplay) lsblk # 2.创建物理卷(pvcreate) pvcreate /dev/sdb # 3.将磁盘扩展到卷组(vgextend) vgextend centos /dev/sdb # 4.扩展逻辑分区(lvextend) # 根据自己的情况选择扩容到centos-root # 还是centos-home逻辑分区,请修改注释 # 100%是将所有的磁盘空间扩容到指定分区,也可以根据需要进行调整比例 # 也支持指定大小比如10G等等(指定固定值时参数-l需要修改为-L) lvextend -l+100%FREE /dev/mapper/centos-root #lvextend -l+100%FREE /dev/mapper/centos-home # 5.使扩展生效(xfs_growfs)根据扩容的分区进行选择使用 # xfs_growfs /dev/mapper/centos-home xfs_growfs /dev/mapper/centos-root # 6.查看(df -H) df -H

场景三:在原始磁盘上增加空间(常在虚拟化环境中)

虚拟化或者超融合环境中、或者 VMware 虚拟机中;磁盘空间不足,增加了已有磁盘的大小的场景,把增加的空间扩容到根目录或者 centos-home 下。

操作思路(括号中是用到的命令):

方法一:fdisk 进行分区,操作步骤与场景二基本一样,多了一步分区

  • 1.查看磁盘情况(lsblk、fdisk -l、pvdisplay)
  • 2.创建分区(fdisk 磁盘名称)
  • 3.创建物理卷(pvcreate
  • 4.将磁盘扩展到卷组(vgextend
  • 5.扩展逻辑分区(lvextend
  • 6.使扩展生效(xfs_growfs
  • 7.查看(df -H

方法二:用 parted 命令调整大小

  • 1.查看磁盘情况(parted/dev/sda print free)
  • 2.分配剩余的可用空间(parted /dev/sda resizepart 2 100%
  • 3.刷新物理卷(pvresize /dev/sda2
  • 4.扩展逻辑分区(lvextend
  • 5.使扩展生效(xfs_growfs
  • 6.查看(df -H

方法一:fdisk 进行分区,操作步骤与场景二基本一样,多了一步分区

# 1.创建分区(fdisk) fdisk /dev/sda #在进入命令环境中,按n键 一路按回车,最后一步按w键保存,最后按q键退出 # 2.创建物理卷(pvcreate) sda3根据第一步中创建的分区名称进行替换 pvcreate /dev/sda3 # 3.将磁盘扩展到卷组(vgextend) sda3根据第一步中创建的分区名称进行替换 vgextend centos /dev/sda3 # 4.扩展逻辑分区(lvextend) # 根据自己的情况选择扩容到centos-root # 还是centos-home逻辑分区,请修改注释 # 100%是将所有的磁盘空间扩容到指定分区,也可以根据需要进行调整比例 # 也支持指定大小比如10G等等(指定固定值时参数-l需要修改为-L) lvextend -l+100%FREE /dev/mapper/centos-root #lvextend -l+100%FREE /dev/mapper/centos-home # 5.使扩展生效(xfs_growfs)根据扩容的分区进行选择使用 # xfs_growfs /dev/mapper/centos-home xfs_growfs /dev/mapper/centos-root # 6.查看(df -H) df -H

方法二:用 parted 命令调整大小

举例:系统只有一个磁盘,2 个分区:需要将新扩容的磁盘空间扩容到分区 2 上,下图中 number 为 2 的,实际上对应的是 / dev/sda2

[root@vm-210 templates]# parted /dev/sda print free Model: ATA QEMU HARDDISK (scsi) Disk /dev/sda: 53.7GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 32.3kB 1049kB 1016kB Free Space 1 1049kB 1075MB 1074MB primary xfs boot 2 1075MB 53.7GB 52.6GB primary lvm 方法二:用parted命令进行操作 #1. 查看磁盘情况:打印可用空间 parted /dev/sda print free #2.分配剩余的可用空间 #将剩余的可用空间分配到 /dev/sda2,根据实际修改磁盘 # resizepart 中的2 只的是第二个分区即:/dev/sda2 # 100% 将所有的空闲空间分配给/dev/sda2,也可以用单位和百分比 parted /dev/sda resizepart 2 100% # 3.刷新物理卷 #分区的空间修改了,也要刷新一下pv物理卷的大小,这样pv才能识别变动的空间 pvresize /dev/sda2 # 4.查看物理卷是否变化 #查看pv中free 项中是否显示了可用的空间 pvdisplay # 5.扩展逻辑分区 #开始增加到逻辑卷中 lvextend -l+100%FREE /dev/mapper/centos-root # 6.使扩展生效(xfs_growfs) xfs_growfs /dev/mapper/centos-root # 7.查看(df -H) df -H

三、总结

自己在工作中遇到磁盘扩容的问题进行了汇总。按照我的命令可以一步一步执行,如果还想进行了解更深,需要了解什么是物理卷(pv)、逻辑卷、逻辑分组、逻辑分区等等。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Gustav

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!