当前位置: 首页 > news >正文

【Centos】服务器硬盘扩容之新加硬盘扩容到现有路径下

服务器硬盘扩容之新加硬盘扩容到现有路径下

  • 前言
  • 一、扩展新硬盘
  • 二、新硬盘扩容
    • 2.1 新增分区
    • 2.2 格式化新建分区
    • 2.3 合并分区

前言

服务器在运行了一段时间,发现硬盘不太够用,需要扩容,如果业务对扩容的新硬盘的路径没有特殊的要求,直接使用mount来挂载,用完之后再取消挂载就好了。
但是如果服务器的业务已经在某个路径下写入大量的文件了,导致该路径下的硬盘空间不太够用,这时候就不能使用 mount 来挂载新硬盘了。

一、扩展新硬盘

如果是物理机,直接插入新的硬盘开机。
如果是虚拟机,则需要修改虚拟机的硬盘容量,或者添加新的硬盘,这里直接添加新的硬盘后开机。

二、新硬盘扩容

添加新硬盘后,开机后看下硬盘情况:

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0   500G  0 disk 
├─sda1            8:1    0     1G  0 part /boot
└─sda2            8:2    0   499G  0 part ├─centos-root 253:0    0   550G  0 lvm  /├─centos-swap 253:1    0   7.9G  0 lvm  [SWAP]└─centos-home 253:2    0 441.1G  0 lvm  /home
sdb               8:16   0   500G  0 disk 
└─sdb1            8:17   0   500G  0 part └─centos-root 253:0    0   550G  0 lvm  /
sdc               8:32   0   300G  0 disk 
sr0              11:0    1   4.4G  0 rom  
[root@localhost ~]# 

可以看到有一块 300G 的新的硬盘 sdc 类型为 disk

硬盘的顺序是依次递增的,比如我这台服务器,之前有两块硬盘,sda、sdb,所以新加一块盘就自动命名成 sdc 了。

然后看下现有磁盘占用情况:

[root@localhost ~]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs   48G     0   48G   0% /dev
tmpfs                   tmpfs      48G     0   48G   0% /dev/shm
tmpfs                   tmpfs      48G   13M   48G   1% /run
tmpfs                   tmpfs      48G     0   48G   0% /sys/fs/cgroup
/dev/mapper/centos-root xfs       550G  107G  444G  20% /
/dev/sda1               xfs      1014M  195M  820M  20% /boot
/dev/mapper/centos-home xfs       441G  365G   77G  83% /home
overlay                 overlay   441G  365G   77G  83% /home/docker/overlay2/50bc564248af9b92ff6563786859386222b0f58b1c51b61bfd11c5fe89de248a/merged
overlay                 overlay   441G  365G   77G  83% /home/docker/overlay2/106ebdf7de31dc8cced4589ae2cb556fba66738b5ea7607c0e9e616ea3ba2ce7/merged
overlay                 overlay   441G  365G   77G  83% /home/docker/overlay2/e93e294076637bd7ee82f70cfeaf1d82708504668201dba622a4b9b22bc1864f/merge

可以看到 /home 路径下空闲磁盘已经不多了,但是由于业务的复杂性,有些路径又不能随便移动,所以这里要把新加的硬盘容量扩容到 /home 下。

2.1 新增分区

操作步骤如下,操作分 3 步:

[root@localhost ~]# fdisk /dev/sdc 
Welcome to fdisk (util-linux 2.23.2).Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x870ff563.Command (m for help): m
Command actiona   toggle a bootable flagb   edit bsd disklabelc   toggle the dos compatibility flagd   delete a partitiong   create a new empty GPT partition tableG   create an IRIX (SGI) partition tablel   list known partition typesm   print this menun   add a new partitiono   create a new empty DOS partition tablep   print the partition tableq   quit without saving changess   create a new empty Sun disklabelt   change a partition's system idu   change display/entry unitsv   verify the partition tablew   write table to disk and exitx   extra functionality (experts only)Command (m for help): n
Partition type:p   primary (0 primary, 0 extended, 4 free)e   extended
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-629145599, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-629145599, default 629145599): 
Using default value 629145599
Partition 1 of type Linux and of size 300 GiB is setCommand (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'Command (m for help): w
The partition table has been altered!Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# 

首先是知道新硬盘的盘符为 sdc,这是在上一步已经确认过的。接着直接操作新建分区

  • Command (m for help): 输入 n 来触发新建分区:add a new partition,输入 m 来看帮助信息;
  • Select (default p):提示主分区还是扩展分区,这里默认主分区,可以输入p 也可以什么都不输入,直接回车;
  • Partition number (1-4, default 1): 分区号,默认1 ,这里直接回车;
  • First sector (2048-629145599, default 2048): 起始扇区直接默认即可;
  • Last sector, +sectors or +size{K,M,G}: 起始扇区直接默认即可;
    Partition 1 of type Linux and of size 300 GiB is set,可以看到 新建了一个 300G 的分区;
  • t change a partition’s system id:修改分区ID,如果有需要的话可以操作,我这里默认1,也没有改。
  • Hex code (type L to list all codes): 修改分区格式,8e 是将分区类型 Linux 改成 Linux LVM,以至于后续扩容可以使用;
  • Command (m for help): w 这是将修改写入分区表;

接着执行 partprobe 让内核同步分区信息。

此时可以看下磁盘情况:

[root@localhost ~]# lsblk -l
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0   500G  0 disk 
sda1          8:1    0     1G  0 part /boot
sda2          8:2    0   499G  0 part 
centos-root 253:0    0   550G  0 lvm  /
centos-swap 253:1    0   7.9G  0 lvm  [SWAP]
centos-home 253:2    0 441.1G  0 lvm  /home
sdb           8:16   0   500G  0 disk 
sdb1          8:17   0   500G  0 part 
centos-root 253:0    0   550G  0 lvm  /
sdc           8:32   0   300G  0 disk 
sdc1          8:33   0   300G  0 part 
sr0          11:0    1   4.4G  0 rom  
[root@localhost ~]# 

可以看到新增了一个 sdc1 的分区,容量大小刚好是新硬盘容量 300G

2.2 格式化新建分区

在指定的磁盘分区 /dev/sdc1 上创建一个 ext4 格式的文件系统(即格式化分区为 ext4 格式)。

[root@localhost ~]# mkfs.ext4 /dev/sdc1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
19660800 inodes, 78642944 blocks
3932147 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2227175424
2400 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done     [root@localhost ~]# 

命令各部分含义:

  • mkfs:是 “make filesystem” 的缩写,用于在磁盘分区上创建文件系统(格式化分区)。
  • .ext4:指定创建的文件系统类型为 ext4(Linux 系统中最常用的高性能日志文件系统,支持大分区、大文件,稳定性和兼容性较好)。
  • /dev/sdc1:表示要格式化的磁盘分区,其中:
    • sdc 是磁盘设备名(通常表示第三块 SCSI/SATA 硬盘,sda 是第一块,sdb 是第二块)。
    • 1 表示该磁盘的第一个分区。

执行结果解析:输出信息详细描述了文件系统的创建过程和参数:

  1. 基础信息
    mke2fs 1.42.9:使用 mke2fs 工具(mkfs.ext4 的底层实现),版本为 1.42.9。
    Filesystem label=:未设置文件系统标签(可通过 -L 参数指定,如 mkfs.ext4 -L mydisk /dev/sdc1)。
    OS type: Linux:文件系统用于 Linux 系统。
  2. 块和碎片大小
    Block size=4096:数据块大小为 4096 字节(4KB),是 ext4 的默认值,影响文件存储效率(小文件多可设小,大文件多可设大)。
    Fragment size=4096:碎片大小(针对小文件的存储单位)与块大小一致。
  3. 存储容量
    19660800 inodes:创建了约 1966 万个 inode(用于存储文件元信息,如权限、大小、位置等)。
    78642944 blocks:总数据块数量约 7864 万个,按 4KB / 块计算,总容量约 300GB(78642944 × 4KB ≈ 300GB)。
    3932147 blocks (5.00%) reserved:保留 5% 的块给超级用户(root),确保系统在磁盘满时仍能运行关键程序。
  4. 超级块(Superblock)
    超级块是文件系统的核心元数据(记录分区大小、inode 数量等),此处列出了超级块的备份位置(如 32768、98304 等块地址),用于文件系统损坏时恢复。
  5. 创建过程:
    依次完成 “分配组表”“写入 inode 表”“创建日志(journal)”“写入超级块和账户信息”,最终提示 done 表示文件系统创建成功。

2.3 合并分区

使用 lvm 先新建物理卷,注意要处理的 硬盘分区为 sdc1

[root@localhost ~]# lvm
lvm> pvcreate /dev/sdc1
WARNING: ext4 signature detected on /dev/sdc1 at offset 1080. Wipe it? [y/n]: yWiping ext4 signature on /dev/sdc1.Physical volume "/dev/sdc1" successfully created.
lvm> vgextend centos /dev/sdc1Volume group "centos" successfully extended
lvm> 
lvm> vgdisplay -v--- Volume group ---VG Name               centosSystem ID             Format                lvm2。。。。--- Physical volumes ---PV Name               /dev/sda2     PV UUID               JcpGKD-9SyA-UGcJ-9VaP-UAqz-Hv85-Xhw3eHPV Status             allocatableTotal PE / Free PE    127743 / 0PV Name               /dev/sdb1     PV UUID               5GUm6J-dPQf-kk1E-Niy0-A7YO-7jyv-bMLykFPV Status             allocatableTotal PE / Free PE    127999 / 0PV Name               /dev/sdc1     PV UUID               xEHpIT-c4HQ-DQXO-6LjW-7P5C-999A-sC8wCPPV Status             allocatableTotal PE / Free PE    76799 / 76799

注意最后的这个物理卷:/dev/sdc1 空闲容量为 76799 后面扩容要用到这个数;

接下来将系统盘/dev/mapper/centos-home与 sdc1 的76799 空余容量合并.

lvm> lvextend -l+76799 /dev/mapper/centos-homeSize of logical volume centos/home changed from <441.12 GiB (112926 extents) to 741.11 GiB (189725 extents).Logical volume centos/home successfully resized.
lvm> 
lvm> quitExiting.
[root@localhost ~]# 

根据自己的需要将新的物理机扩容到哪个系统分区下,我这里是 /dev/mapper/centos-home,可以看到扩容成功了。

最后将文件系统进行扩容,让系统识别,输入命令:xfs_growfs /dev/mapper/centos-home

[root@localhost ~]# xfs_growfs /dev/mapper/centos-home  
meta-data=/dev/mapper/centos-home isize=512    agcount=4, agsize=28909056 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=115636224, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=56463, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 115636224 to 194278400
[root@localhost ~]# 

接着再次查看系统磁盘占用情况:

[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                  48G     0   48G   0% /dev
tmpfs                     48G     0   48G   0% /dev/shm
tmpfs                     48G   21M   48G   1% /run
tmpfs                     48G     0   48G   0% /sys/fs/cgroup
/dev/mapper/centos-root  550G  107G  444G  20% /
/dev/sda1               1014M  195M  820M  20% /boot
/dev/mapper/centos-home  741G  365G  377G  50% /home

可以看到 /home 目录已扩容成功,新增了 300G

http://www.dtcms.com/a/556755.html

相关文章:

  • 一.docker基础概念
  • 【Linux系统编程】进程概念(一)冯诺依曼体系结构、操作系统
  • RabbitMQ简介
  • Hudi、Iceberg、Delta Lake、Paimon 建表语法与场景示例
  • C++ 继承:从概念到实战
  • AI驱动的智能运维知识平台建设:技术实践与未来展望
  • XCP标准文档PART2协议层
  • 基于深度学习的中国交通警察手势识别与指令优先级判定系统
  • 专业微网站建设公司哪家好可以访问的国外网站
  • 配置(5):Nginx的删除与卸载
  • Tableau 从零到精通:系统教学文档(自学版)
  • 孤能子视角:“他来了“与“他怎么来了“
  • 【xx】PCIe协议 之 Margning篇 之 Serdes PHY 验证实战举例
  • 【SpringAI入门】初识SpringAI
  • 关于“灵犀”的争议(三)
  • 网站收录是什么意思?机关网站建设存在的问题
  • 单词接龙----图论
  • c++ pugixml封装使用示例
  • Appium和Detox,哪一种更好的为手机自动化
  • 山东网站开发工作室百度一下马上知道
  • Maven 从入门到实战:搞定依赖管理与 Spring Boot 项目构建
  • 数学分析简明教程——2.2(未完)
  • UE C++ TMap 移除
  • 思途智旅游网站开发临沂制作网站企业
  • Linux系统C++开发工具(四)—— jsoncpp 使用指南
  • flask 框架的ORM 学习及应用
  • Nginx配置文件解析:从结构到参数详解
  • 自己可以做百度网站吗如何网络推广运营
  • [VT-Refine] 强化学习工作流 | 分布式-近端策略优化(DPPO)
  • AngularJS与SQL的完美结合