admin管理员组

文章数量:1516870

本片文档我可以说是全网最细节的文档之一,他概括了2种磁盘扩容的方式:

1、挂载扩容:挂载新磁盘分区 的方式实现磁盘扩容

2、LVM 逻辑卷扩容:动态扩展已有逻辑卷的容量,而非新增独立挂载点

这两种方式掌握之后,企业上的磁盘扩容你基本上都能统统拿下

目录


一、挂载扩容

概念:一种传统的磁盘存储扩容方式,核心是将新磁盘(或新划分的磁盘分区)通过格式化(如 ext4、xfs 等文件系统)后,直接挂载到操作系统的目标目录(如/data、/home),以实现该目录存储容量的扩展。

1、使用场景

a、新增独立目录存储 :需要给系统新增一个专门的存储目录(而非扩展已有目录),比如服务器需要单独存放日志( /var/log )、数据库备份( /backup )、用户数据( /data ),且这些目录的存储需求与原有目录相互独立,不需要合并容量。

b、简单场景、快速扩容 :对扩容灵活性要求低,追求操作简单、耗时短,比如个人电脑、测试服务器临时增加存储,或初创项目小流量服务(无需后续动态调整容量)。

c、非关键业务、数据量小 :业务对存储连续性要求不高,数据量不大(无需跨磁盘合并空间),比如开发环境的临时代码存储、静态文件服务器(图片 / 文档)的容量补充。

d、不支持 LVM 的环境 :老旧操作系统(未预装 LVM)、嵌入式系统、虚拟化轻量实例(资源受限,不支持 LVM 配置),只能通过传统分区挂载方式扩容。

2、操作步骤

a、添加磁盘(在关机状态下进行)

依次按照如下截图完成磁盘添加

b、查看系统中的磁盘设备

lsblk
[root@localhost ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   40G  0 disk 
├─sda1   8:1    0  300M  0 part /boot
├─sda2   8:2    0  3.9G  0 part [SWAP]
└─sda3   8:3    0 35.9G  0 part /
sdb      8:16   0   20G  0 disk 
sr0     11:0    1 1024M  0 rom  
#我这里添加的设备名称是sdb

c、创建磁盘分区

sudo fdisk /dev/sdb  # 替换为你的新磁盘设备,如/dev/sdc
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xd610a734 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n             #输入n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p               #输入p
分区号 (1-4,默认 1):1              #输入1或者回车都一样
起始 扇区 (2048-41943039,默认为 2048):    #回车
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):  #回车
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):w       #输入W
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。

交互式分区操作(按以下步骤输入)

  • n :创建新分区;
  • p :创建主分区;
  • 分区编号:默认 1 (直接回车);
  • 起始扇区:默认 2048 (直接回车);
  • 结束扇区:默认 “占满磁盘”(直接回车);
  • w :保存分区并退出。

d、格式化分区

i、查看文件系统类型

df -Th

ii、查看新加磁盘名称0

lsblk

如图我的centos7文件系统类型是xfs,磁盘名称是sdb1,所有我在格式化分区的时候使用的命令是
sudo mkfs.xfs /dev/sdb1
[root@localhost ~]# sudo mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=1310656 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5242624, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

如果你的文件类型ext4,就执行:(centos7默认的文件类型是xfs,所以这个基本上大家用不到)

sudo mkfs.ext4 /dev/sdb1

e、创建挂载点目录

本步骤的作用是将你格式化的分区挂载到指定目录下,后续在这个目录下操作就相当于在你格式化的分区上操作

[root@localhost ~]# mkdir /mnt/test   #创建挂载目录
[root@localhost ~]# lsblk             #查看挂载设备
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   40G  0 disk 
├─sda1   8:1    0  300M  0 part /boot
├─sda2   8:2    0  3.9G  0 part [SWAP]
└─sda3   8:3    0 35.9G  0 part /
sdb      8:16   0   20G  0 disk 
└─sdb1   8:17   0   20G  0 part 
sr0     11:0    1 1024M  0 rom  
[root@localhost ~]# mount /dev/sdb1 /mnt/test    #将/dev/sdb1挂载到/mnt/test
#此时使用df -h就可以看到/mnt/test目录有20G空间
[root@localhost ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs        1.9G     0  1.9G    0% /dev
tmpfs           1.9G     0  1.9G    0% /dev/shm
tmpfs           1.9G   13M  1.9G    1% /run
tmpfs           1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda3        36G  8.9G   27G   25% /
/dev/sda1       297M  163M  134M   55% /boot
tmpfs           378M     0  378M    0% /run/user/0
tmpfs           378M   12K  378M    1% /run/user/42
/dev/sdb1        20G   33M   20G    1% /mnt/test

此时就已经挂载成功了,但是当你重启服务器之后你的挂载会消失,可以设置开机挂载

f、配置永久挂载(重启后自动挂载)

为避免重启后挂载失效,需将挂载配置写入 /etc/fstab 文件:

i、获取分区的 UUID(推荐用 UUID 避免设备名变化)

sudo blkid /dev/sdb1

输出类似: /dev/sdb1: UUID="xxxx-xxxx-xxxx-xxxx" TYPE="ext4" ,记录下 UUID

ii、 编辑 /etc/fstab 文件

sudo vi /etc/fstab

iii、添加以下内容(根据你的 UUID 和文件系统调整):

UUID=xxxx-xxxx-xxxx-xxxx  /mnt/test  xfs  defaults  0  2

字段解释: UUID 挂载点、 文件系统、 挂载选项 dump备份标记、 fsck检查顺序

IV、验证 fstab 配置(避免语法错误导致无法启动)

sudo mount -a

若无报错,说明配置正确;若有报错,立即修正 /etc/fstab

二、LVM扩容

1、使用场景

a、扩展原有目录 / 分区容量 :已有目录(如 /root /home /var/lib/mysql )空间不足,需要直接增加其容量,且不想改变目录路径(避免业务代码 / 配置修改),比如生产数据库的存储目录扩容(数据库文件路径固定,不能轻易变更)。

b、关键业务、弹性扩容需求 :业务增长不确定,未来可能频繁扩容 / 缩容(比如互联网产品的用户数据目录、短视频平台的存储目录),需要 “按需分配容量”(初始只分配部分空间,后续随业务增长逐步扩容),或临时应急扩容(比如促销活动前快速增加存储)。

c、跨磁盘合并存储 :需要将多个物理磁盘(或分区)的空间合并为一个 “虚拟分区” 使用,比如有 3 块 500GB 硬盘,想合并为 1.5TB 供 /data 目录使用,提升单目录可用容量。

d、生产环境、高可用性要求 :关键业务(如金融交易系统、核心数据库)需要扩容时不影响现有数据和业务运行(LVM 扩容可在线执行,无需卸载目录),且支持后续动态调整(比如缩容、更换物理磁盘)。

2、是否可以进行LVM扩容

#在本地执行sudo pvdisplay,如果没有结果返回则不能使用LVM进行扩容
[root@localhost ~]# sudo pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               centos
  PV Size               <19.00 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              4863
  Free PE               0
  Allocated PE          4863
  PV UUID               8neNzU-qDA2-aOwz-x8xn-vuaT-O5tN-Krv6y7
   
  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               centos
  PV Size               20.00 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              5119
  Free PE               0
  Allocated PE          5119
  PV UUID               liVhwV-fyLa-zf7a-yAGc-3Ctx-2jIa-oLJ7qO

3、操作步骤

a、添加磁盘(在关机状态下进行)

挂载扩容已经演示了,这里就不再演示了

b、创建新的物理卷(PV)

先lsblk查看未分配的磁盘,我这里是sdb

将未分配的磁盘空间创建为 LVM 物理卷:

sudo pvcreate /dev/sdb
[root@localhost ~]# pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created.

c、将物理卷加入现有卷组(VG)

i、先查看当前卷组名称:

vgs
[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree
  centos   2   2   0 wz--n- 38.99g    0 

ii、当前卷组名为 centos(默认安装时的卷组名),将新物理卷加入:

vgextend centos /dev/sdb
[root@localhost ~]# vgextend centos /dev/sdb
  Volume group "centos" successfully extended

d、扩展逻辑卷(LV)

先查看根分区对应的逻辑卷名称:

lvs
[root@localhost ~]# lvs
  LV   VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- 36.99g                                                    
  swap centos -wi-ao----  2.00g  

如上图根分区的逻辑卷是 root ,所以扩展root:

lvextend -l +100%FREE /dev/centos/root
#将卷组(VG)中所有未分配的空闲空间,全部分配给指定的逻辑卷(LV)(这里是 /dev/centos/root 根逻辑卷)

e、扩展文件系统(使扩容生效)

查看文件系统类型

df -Th

如图我本地的文件系统类型是xfs类型

CentOS 7 根分区默认是 xfs 文件系统,执行:

xfs_growfs /dev/centos/root
#将已扩容的 LVM 逻辑卷(/dev/centos/root)中新增的存储空间,同步到 XFS 文件系统,让系统真正识别并使用这些新增空间

f、验证

df -h

此时我的根分区磁盘成为了57G,扩容成功,有问题的小伙伴们可以评论区留言或者加qq群进行提问哦,qq群:614457375

本文标签: 输入系统编程