0

0

CentOS硬盘扩容怎么加载_CentOS磁盘扩容与分区加载教程

蓮花仙者

蓮花仙者

发布时间:2025-08-29 09:36:01

|

699人浏览过

|

来源于php中文网

原创

答案:CentOS硬盘扩容需先让系统识别新增空间,再通过LVM或传统分区方式扩展。首先执行SCSI扫描和partprobe更新设备信息;若使用LVM,依次进行pvcreate/vgextend或pvresize、lvextend、xfs_growfs/resize2fs操作;传统分区则需fdisk创建分区、mkfs格式化并挂载。常见问题包括未扫描导致空间不可见、LVM顺序错误、文件系统命令不匹配等,需按步骤操作并备份数据,推荐优先使用LVM实现灵活扩容。

centos硬盘扩容怎么加载_centos磁盘扩容与分区加载教程

CentOS硬盘扩容,核心在于两步:首先是让系统识别到新增的物理存储空间,这可能是你虚拟机里加的虚拟硬盘,也可能是物理机上新插的硬盘或现有硬盘的扩展;其次,就是在这个新增空间上创建或扩展分区,并最终调整文件系统的大小,让操作系统能真正“用”上这些空间。加载通常指的是将这些分区挂载到文件系统树上,使其可访问。

解决方案

CentOS磁盘扩容通常涉及到LVM(逻辑卷管理)或传统分区两种方式。对于大多数现代CentOS服务器,LVM是首选,因为它提供了极大的灵活性。

1. 识别新增存储空间

无论你是在虚拟机(如VMware、VirtualBox、KVM)中增加了虚拟磁盘容量,还是在物理机上添加了新硬盘,系统都需要重新扫描才能识别到这些变化。

  • 对于SCSI/SATA设备(常见于虚拟机和物理机):
    # 扫描所有SCSI主机,让内核重新识别设备
    for host in $(ls /sys/class/scsi_host/); do echo "- - -" > /sys/class/scsi_host/$host/scan; done
    # 或者针对特定主机进行扫描,例如host0
    # echo "- - -" > /sys/class/scsi_host/host0/scan
  • 更新分区表信息:
    partprobe
  • 检查新识别的磁盘或扩容后的磁盘大小:
    lsblk
    fdisk -l

    你会看到新的磁盘设备(如

    /dev/sdb
    )或现有磁盘(如
    /dev/sda
    )的总容量增加了。

2. LVM方式扩容(推荐)

如果你的系统使用了LVM,这是最灵活也最推荐的方式。

  • 如果新增了一块硬盘:
    1. 创建物理卷(PV): 将新磁盘(例如
      /dev/sdb
      )初始化为物理卷。
      pvcreate /dev/sdb
    2. 扩展卷组(VG): 将新创建的物理卷添加到现有的卷组中(例如
      centos
      )。
      vgextend centos /dev/sdb
  • 如果是在现有LVM物理卷所在的磁盘上扩容(例如
    /dev/sda
    扩容了,且
    /dev/sda2
    是LVM物理卷):
    1. 扩展物理卷: 让LVM识别到物理卷底层存储的增加。
      pvresize /dev/sda2 # 假设/dev/sda2是LVM物理卷
  • 扩展逻辑卷(LV):
    1. 查看逻辑卷路径和大小:
      lvs
      df -h /path/to/mountpoint # 确认当前文件系统挂载点
    2. 扩展逻辑卷: 你可以选择扩展到卷组的全部可用空间,或者指定大小。
      • 扩展到全部可用空间:
        lvextend -l +100%FREE /dev/mapper/centos-root # 假设根目录在centos卷组的root逻辑卷上
      • 扩展指定大小(例如增加50G):
        lvextend -L +50G /dev/mapper/centos-root
  • 扩展文件系统: 这是最关键的一步,让操作系统真正能使用扩容后的空间。
    • 对于XFS文件系统(CentOS 7/8默认):
      xfs_growfs /mount/point # 扩容文件系统,例如 xfs_growfs /
    • 对于Ext2/3/4文件系统:
      resize2fs /dev/mapper/centos-root # 扩容文件系统,例如 resize2fs /dev/mapper/centos-root

      扩容完成后,使用

      df -h
      确认空间是否已增加。

3. 传统分区方式扩容(较少用,且风险高)

这种方式通常用于非LVM的单分区系统,或者你只想在新增的磁盘上创建新的独立分区。

  • 对于新增磁盘创建新分区:
    1. 使用
      fdisk
      gdisk
      创建新分区:
      fdisk /dev/sdb # 以/dev/sdb为例
      # n (新建分区) -> p (主分区) -> 1 (分区号) -> 默认起始扇区 -> 默认结束扇区 (或指定大小) -> w (保存)
    2. 格式化新分区:
      mkfs.xfs /dev/sdb1 # 格式化为XFS
      # 或 mkfs.ext4 /dev/sdb1 # 格式化为Ext4
    3. 创建挂载点并挂载:
      mkdir /data
      mount /dev/sdb1 /data
    4. 添加到
      /etc/fstab
      实现开机自动挂载:
      获取分区UUID:
      blkid /dev/sdb1
      编辑
      /etc/fstab
      ,添加类似行:
      UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /data xfs defaults 0 0
  • 对于现有分区扩容(高风险,不推荐): 这种操作通常需要删除现有分区再重建(起始扇区不变,结束扇区扩大),且必须在分区未挂载的情况下进行,极易导致数据丢失。如果非要这样做,务必提前备份所有数据
    1. 取消挂载分区:
      umount /mount/point
    2. 使用
      fdisk
      parted
      操作:
      • fdisk
        删除旧分区,然后以相同的起始扇区创建新分区,但结束扇区扩大。保存并退出。
      • parted
        resizepart
        命令可能更安全些,但也不是万无一失。
    3. partprobe
      更新分区表。
    4. 重新挂载分区。
    5. 扩容文件系统:
      xfs_growfs
      resize2fs

为什么我的CentOS系统看不到新增的磁盘空间?

我记得有一次,我扩容了一个VMware虚拟机,明明在宿主机上把虚拟磁盘容量调大了,结果在CentOS系统里怎么都找不到多出来的空间。那种感觉就像你买了个新车,结果钥匙没带一样,眼巴巴地看着却用不上。这其实是个很常见的“坑”,主要原因在于Linux内核并没有实时监测到底层硬件存储的变化。

简单来说,当你增加了磁盘空间(无论是虚拟磁盘还是物理硬盘),Linux系统并不会自动感知到。它需要一个“通知”机制,告诉它去重新扫描SCSI或SATA设备,检查是否有新的设备或现有设备的大小发生了变化。如果这个步骤被忽略了,那么

fdisk -l
lsblk
这些命令自然就看不到新增的空间,后续的LVM或分区操作也就无从谈起。

解决方法其实不复杂:

  • 强制内核重新扫描SCSI设备: 这是最直接有效的方法。
    # 遍历所有SCSI主机并触发扫描
    for host in $(ls /sys/class/scsi_host/); do echo "- - -" > /sys/class/scsi_host/$host/scan; done

    这个命令会告诉系统,去重新探测所有连接到SCSI控制器的设备。

    - - -
    这三个连字符是通配符,表示扫描所有通道、所有ID、所有LUN。

  • 更新分区表信息: 即使内核识别到了磁盘大小的变化,有时分区表工具也需要被告知去重新读取磁盘上的分区信息。
    partprobe

    这个命令会尝试重新读取所有磁盘的分区表。

  • 重启系统(不推荐): 虽然重启系统也能达到重新识别硬件的目的,但这通常是最后不得已的选择,因为它会导致服务中断,效率也最低。在生产环境中,我们总是希望能尽量避免不必要的重启。

确认是否成功:

造梦阁AI
造梦阁AI

AI小说推文一键成片,你的故事值得被看见

下载

执行完上述扫描命令后,你可以用

lsblk
fdisk -l
来检查。如果
lsblk
显示你的磁盘(例如
/dev/sda
)的总大小已经增加了,或者
fdisk -l
列出了你新添加的磁盘,那就说明系统已经成功识别了。接下来,你就可以进行分区或LVM的扩展操作了。

LVM扩容和传统分区扩容有什么区别,我应该选择哪种?

对我来说,LVM简直是服务器管理的救星。早期刚接触Linux的时候,每次分区都得小心翼翼地规划,生怕以后不够用,或者某个分区爆满。LVM出来后,那种“一步到位”的焦虑感瞬间消失了。

LVM(Logical Volume Manager)逻辑卷管理:

  • 工作原理: LVM在物理硬盘和文件系统之间增加了一个抽象层。它将一个或多个物理硬盘(或分区)抽象成“物理卷(PV)”,然后将这些PV聚合成一个“卷组(VG)”。最后,你可以在VG中按需创建“逻辑卷(LV)”,这些LV就像是可动态调整大小的“虚拟分区”,文件系统就建立在LV之上。
  • 优点:
    • 灵活性极高: 可以随时在线调整逻辑卷的大小(增大或减小),无需停机。
    • 动态扩展: 可以轻松地将新的物理硬盘加入到现有卷组中,然后扩展逻辑卷,实现无缝扩容。
    • 跨磁盘: 一个逻辑卷可以跨越多个物理硬盘,这在传统分区中是无法想象的。
    • 快照功能: LVM支持创建逻辑卷的快照,方便数据备份和恢复。
  • 缺点:
    • 学习曲线: 相对于传统分区,概念更多,操作步骤也稍复杂。
    • 性能开销: 理论上会有一点点额外的性能开销,但在现代硬件上几乎可以忽略不计。
  • 适用场景: 几乎所有服务器环境,尤其是需要频繁调整存储空间、追求高可用性和灵活性的场景。CentOS默认安装通常会使用LVM。

传统分区(Standard Partitioning):

  • 工作原理: 直接在物理硬盘上划分出固定大小的主分区或扩展分区,文件系统直接建立在这些分区之上。
  • 优点:
    • 简单直观: 对于新手来说,概念更少,操作相对直接。
    • 性能: 没有LVM的抽象层,理论上直接访问硬盘,性能可能略高(但实际感知不大)。
  • 缺点:
    • 缺乏弹性: 一旦分区创建并格式化后,要调整其大小非常困难,尤其是缩小分区,几乎不可能不丢失数据。扩容也往往需要删除重建,风险极高。
    • 限制: 单个物理硬盘上的主分区数量有限制(通常最多4个),扩展分区内可以有多个逻辑分区。
    • 难以跨磁盘: 无法将多个物理硬盘的空间整合到一个逻辑单元中。
  • 适用场景: 对存储空间需求固定、变化不大,或者仅用于桌面系统、个人电脑等简单场景。

我应该选择哪种?

如果你正在管理一个CentOS服务器,或者预期未来存储需求可能会变化,毫无疑问,选择LVM。它的灵活性和可管理性带来的好处远远超过其学习成本。即使是个人使用,我也倾向于LVM,因为它能省去很多后续的麻烦。传统分区现在更多地只用于引导分区(

/boot
)或者一些非常特殊的、固定大小的场景。

扩容过程中可能遇到哪些常见的坑,如何避免?

扩容这种操作,虽然看起来是一套固定的流程,但实际操作中总会遇到一些意想不到的状况。我个人就踩过不少坑,有些是粗心大意,有些是知识盲区。总结下来,有几个地方特别容易出错:

  1. 系统未识别新增空间:

    • 坑: 扩容了磁盘,但在系统里
      fdisk -l
      lsblk
      看不到新的大小,或者新加的磁盘设备。
    • 避免: 在进行任何分区或LVM操作之前,务必先执行
      for host in $(ls /sys/class/scsi_host/); do echo "- - -" > /sys/class/scsi_host/$host/scan; done
      partprobe
      。这是第一步,也是最容易被遗忘的一步。如果虚拟机,还要确认虚拟机设置里确实增加了硬盘。
  2. LVM操作顺序错误:

    • 坑: 试图直接
      lvextend
      一个逻辑卷,却发现卷组里没有足够的可用空间;或者
      pvresize
      了物理卷,但忘了
      lvextend
      逻辑卷,直接去
      xfs_growfs
      resize2fs
      ,结果文件系统没变大。
    • 避免: LVM扩容有严格的层次结构:
      1. 物理存储层: 扩容物理硬盘或添加新物理硬盘。
      2. 物理卷层: 如果是新硬盘,
        pvcreate
        ;如果是现有物理卷底层扩容,
        pvresize
      3. 卷组层: 如果是新物理卷,
        vgextend
        将其加入到卷组。
      4. 逻辑卷层:
        lvextend
        逻辑卷。
      5. 文件系统层:
        xfs_growfs
        resize2fs
        文件系统。 确保每一步都完成,并且检查
        pvs
        vgs
        lvs
        的输出,确认空间已按预期增加。
  3. 文件系统类型与扩容命令不匹配:

    • 坑: 对XFS文件系统使用了
      resize2fs
      ,或者对Ext4文件系统使用了
      xfs_growfs
      ,结果报错或无效。
    • 避免: 扩容文件系统时,一定要确认文件系统类型。
      • df -Th
        可以查看文件系统类型。
      • XFS文件系统使用
        xfs_growfs /mount/point
      • Ext2/3/4文件系统使用
        resize2fs /dev/mapper/vg_name-lv_name
        resize2fs /dev/sdXN
  4. 数据丢失风险(尤其传统分区):

    • 坑: 在传统分区模式下,尝试删除旧分区再创建新分区来扩容,结果手抖或操作失误,导致数据全部丢失。
    • 避免: 说实话,每次做这种操作,我心里都七上八下的,生怕一个手抖就把数据搞没了。所以,备份!备份!备份! 重要的事情说三遍。在进行任何可能影响数据的操作前,完整备份是唯一的救命稻草。对于传统分区扩容,如果不是非常确定操作步骤和后果,宁愿选择添加新磁盘并挂载,也不要轻易尝试高风险的原地扩容。
  5. 分区表类型不兼容:

    • 坑: 在大于2TB的磁盘上使用
      fdisk
      (MBR分区表),导致只能识别到2TB空间。
    • 避免: 对于大于2TB的磁盘,必须使用
      gdisk
      parted
      来创建GPT分区表。
      fdisk
      仅支持MBR,最大寻址2TB。
  6. 文件系统处于只读状态:

    • 坑: 尝试扩容文件系统时,提示文件系统是只读的,无法操作。
    • 避免: 如果文件系统处于只读状态(例如,系统检测到文件系统错误,自动挂载为只读),你需要先修复文件系统(
      fsck -y /dev/device
      ),或者将其重新以读写模式挂载(
      mount -o remount,rw /mount/point
      ),甚至需要先
      umount
      再操作。

总而言之,磁盘扩容是一个需要细心和耐心的过程。在动手之前,先画个草图,理清每一步要做什么,用什么命令,并且每一步都检查确认,这样才能避免大多数的“坑”。

相关专题

更多
class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

465

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

13

2025.12.06

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1350

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

704

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

294

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

776

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

573

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.07.20

Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

7

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Rust 教程
Rust 教程

共28课时 | 4.6万人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号