0

0

Linux存储扩展方案_在线扩容实践解析【教程】

舞夢輝影

舞夢輝影

发布时间:2025-12-30 14:14:03

|

147人浏览过

|

来源于php中文网

原创

在线扩容需严格按存储栈层级操作:先确认物理设备、PV、LV、文件系统类型及挂载点,再依次执行partprobe/pvresize、lvextend、resize2fs或xfs_growfs,任一环节遗漏将导致扩容失败。

linux存储扩展方案_在线扩容实践解析【教程】

在线扩容不是“点一下就变大”,而是要分清路径:文件系统类型、底层设备类型、是否在 LVM 管理下——三者任意一个不匹配,resize2fsxfs_growfs 就会直接报错或静默失败。

确认当前存储层级关系

先搞清楚你扩的是什么:是物理盘、PV、LV、还是裸分区?很多操作卡住,是因为误把 LV 当成普通分区处理。

  • 运行 lsblk 查看块设备树形结构,重点关注 TYPE 列(lvm / part / disk
  • pvsvgslvs 确认是否处于 LVM 管理;若无输出,说明没走 LVM,别碰 lvextend
  • 查挂载点对应设备:df -hT /mnt/data → 看出是 /dev/sdb1 还是 /dev/mapper/vg0-lv_data

ext4 文件系统在线扩容步骤(非 LVM 场景)

适用于直接挂载了分区(如 /dev/sdb1)且已扩容底层磁盘(云平台或虚拟机中已完成磁盘扩容)的情况。

  • 必须先让内核重读分区表:partprobe /dev/sdbecho 1 > /sys/block/sdb/device/rescan
  • 检查分区大小是否已更新:fdisk -l /dev/sdb → 对比 StartEnd 是否变大
  • 若分区未扩大,需用 growpart 扩展分区本身(不是文件系统):growpart /dev/sdb 1
  • 最后执行 resize2fs /dev/sdb1(无需卸载,ext4 支持在线扩展)

XFS 文件系统只能向后扩容,且不支持缩容

XFS 的设计决定了它对扩容路径极其敏感:必须确保底层块设备容量已增大,且文件系统挂载时启用了 inode64(现代内核默认开启),否则可能因空间寻址越界失败。

Destoon B2B网站
Destoon B2B网站

Destoon B2B网站管理系统是一套完善的B2B(电子商务)行业门户解决方案。系统基于PHP+MySQL开发,采用B/S架构,模板与程序分离,源码开放。模型化的开发思路,可扩展或删除任何功能;创新的缓存技术与数据库设计,可负载千万级别数据容量及访问。 系统特性1、跨平台。支持Linux/Unix/Windows服务器,支持Apache/IIS/Zeus等2、跨浏览器。基于最新Web标准构建,在

下载
  • 确认文件系统类型:xfs_info /mnt/data 输出中 data 行的 agcountagsize 可反映当前布局
  • 扩容前必须确保设备容量已更新(同上,partproberescan 不可省)
  • 执行 xfs_growfs /mnt/data(注意:参数是挂载点,不是设备路径!传 /dev/sdb1 会报错 Invalid argument
  • 如果提示 device does not support resizing,大概率是设备未真正扩容或未重读分区表

LVM 场景下漏掉 PV 扩容会导致 LV 扩不出去

很多人执行完 lvextend -l +100%FREE /dev/vg0/lv_data 却发现没变化,其实是忘了最上面那层:物理卷(PV)还没拿到新空间。

  • 云盘扩容后,先确认 fdisk -l /dev/sdb 显示容量已变;若仍是旧大小,需先用 growpart /dev/sdb 1 扩分区
  • 再执行 pvs,看 PFree 是否增加;若仍为 0,说明 PV 未识别新空间,需运行 pvresize /dev/sdb1
  • 之后才能用 lvextend,最后才是 resize2fsxfs_growfs
  • 顺序不能颠倒:pvresize → lvextend → fs resize,中间任一环缺失都会导致“明明扩了磁盘却没效果”
#!/bin/bash
# 快速检查脚本:判断 ext4/XFS 在线扩容前置条件是否满足
MOUNT_POINT="/mnt/data"
DEV=$(findmnt -n -o SOURCE "$MOUNT_POINT" | sed 's/[0-9]*$//')
if [[ -z "$DEV" ]]; then echo "未找到挂载设备"; exit 1; fi

echo "检测设备: $DEV" echo "文件系统类型: $(findmnt -n -o FSTYPE "$MOUNT_POINT")" echo "内核是否识别新容量: $(blockdev --getsize64 "$DEV") bytes" echo "PV 状态: $(pvs "$DEV" 2>/dev/null | tail -n +2)"

最容易被跳过的动作是 pvresizepartprobe ——它们不报错,但也不做任何事,除非你主动触发。扩容失败时,先别查文件系统命令,回头看看 pvslsblk 的输出有没有变化。

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

365

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

559

2023.08.10

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

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

1344

2023.06.21

如何安装LINUX
如何安装LINUX

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

698

2023.06.29

linux find
linux find

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

293

2023.06.30

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

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

773

2023.07.05

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

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

571

2023.07.06

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

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

544

2023.07.20

excel制作动态图表教程
excel制作动态图表教程

本专题整合了excel制作动态图表相关教程,阅读专题下面的文章了解更多详细教程。

30

2025.12.29

热门下载

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

相关下载

更多

精品课程

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

共48课时 | 6.2万人学习

Git 教程
Git 教程

共21课时 | 2.3万人学习

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

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