欢迎光临
我们一直在努力

【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 action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x 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 set

Command (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, 71663616

Allocating 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 表示该磁盘的第一个分区。

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

  • 基础信息: mke2fs 1.42.9:使用 mke2fs 工具(mkfs.ext4 的底层实现),版本为 1.42.9。 Filesystem label=:未设置文件系统标签(可通过 -L 参数指定,如 mkfs.ext4 -L mydisk /dev/sdc1)。 OS type: Linux:文件系统用于 Linux 系统。
  • 块和碎片大小: Block size=4096:数据块大小为 4096 字节(4KB),是 ext4 的默认值,影响文件存储效率(小文件多可设小,大文件多可设大)。 Fragment size=4096:碎片大小(针对小文件的存储单位)与块大小一致。
  • 存储容量: 19660800 inodes:创建了约 1966 万个 inode(用于存储文件元信息,如权限、大小、位置等)。 78642944 blocks:总数据块数量约 7864 万个,按 4KB / 块计算,总容量约 300GB(78642944 × 4KB ≈ 300GB)。 3932147 blocks (5.00%) reserved:保留 5% 的块给超级用户(root),确保系统在磁盘满时仍能运行关键程序。
  • 超级块(Superblock): 超级块是文件系统的核心元数据(记录分区大小、inode 数量等),此处列出了超级块的备份位置(如 32768、98304 等块地址),用于文件系统损坏时恢复。
  • 创建过程: 依次完成 “分配组表”“写入 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]: y
    Wiping ext4 signature on /dev/sdc1.
    Physical volume "/dev/sdc1" successfully created.
    lvm> vgextend centos /dev/sdc1
    Volume group "centos" successfully extended
    lvm>
    lvm> vgdisplay -v
    — Volume group —
    VG Name centos
    System ID
    Format lvm2
    。。。。
    — Physical volumes —
    PV Name /dev/sda2
    PV UUID JcpGKD-9SyA-UGcJ-9VaP-UAqz-Hv85-Xhw3eH
    PV Status allocatable
    Total PE / Free PE 127743 / 0

    PV Name /dev/sdb1
    PV UUID 5GUm6J-dPQf-kk1E-Niy0-A7YO-7jyv-bMLykF
    PV Status allocatable
    Total PE / Free PE 127999 / 0

    PV Name /dev/sdc1
    PV UUID xEHpIT-c4HQ-DQXO-6LjW-7P5C-999A-sC8wCP
    PV Status allocatable
    Total PE / Free PE 76799 / 76799

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

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

    lvm> lvextend -l+76799 /dev/mapper/centos-home
    Size 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> quit
    Exiting.
    [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;

    赞(0)
    未经允许不得转载:171主机测评 » 【Centos】服务器硬盘扩容之新加硬盘扩容到现有路径下
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址