当 Linux 系统中已挂载的硬盘扩容后无法识别,通常是因为系统没有检测到新的磁盘容量。以下是分步解决方案,帮助你识别并应用硬盘扩容:
一、确认硬盘扩容状态
1. 检查物理硬盘容量
通过命令行确认系统是否能检测到新容量:
bash
# 查看磁盘列表及容量(注意观察Size列)
lsblk -d -o NAME,SIZE,TYPE
若显示新容量:说明硬件扩容成功,需更新分区和文件系统。
若仍显示旧容量:可能是以下原因:
存储设备(如阵列卡、云盘控制器)未完成扩容同步。
虚拟机未刷新磁盘配置(需重启虚拟机)。
2. 刷新 SCSI 设备(适用于物理机 / SCSI 磁盘)
bash
# 方法1:通过SCSI子系统重新扫描设备
echo 1 > /sys/class/scsi_device/HOST:CHANNEL:ID:LUN/device/rescan
# 例如,刷新所有SCSI设备(需逐个替换HOST、CHANNEL、ID、LUN)
for i in /sys/class/scsi_device/*/device/rescan; do echo 1 > $i; done
# 方法2:使用sg_scan命令(需安装sg3_utils)
yum install sg3_utils -y # 或 apt-get install sg3-utils
sg_scan -i
二、扩展分区(若分区未占满新容量)
1. 查看当前分区情况
bash
# 显示磁盘分区表(示例:/dev/sda)
fdisk -l /dev/sda
# 或使用gdisk查看GPT分区
gdisk -l /dev/sda
若分区未占满整个磁盘(如原有 1TB,扩容后显示 2TB,但分区仍为 1TB),需扩展分区。
2. 使用 parted 扩展分区
bash
# 启动parted并选择磁盘
parted /dev/sda
# 查看当前分区表类型(msdos或gpt)
(parted) print
# 若为msdos分区表,转换为gpt(谨慎操作,可能丢失数据)
(parted) mklabel gpt
# 调整分区大小(示例:扩展分区3)
(parted) resizepart 3
(parted) yes # 确认覆盖现有分区
(parted) 100% # 设置分区大小为最大
(parted) quit
3. 更新内核分区表
bash
# 方法1:使用partprobe通知内核重新读取分区表
partprobe /dev/sda
# 方法2:使用kpartx(适用于LVM或多路径设备)
kpartx -u /dev/sda
# 验证分区是否已扩展
lsblk /dev/sda
三、扩展文件系统
1. 确认文件系统类型
bash
df -Th /挂载点 # 例如:df -Th /data
常见文件系统类型:ext4
、XFS
、Btrfs
。
2. 扩展文件系统
XFS 文件系统:
bash
# 在线扩容(无需卸载)
xfs_growfs /挂载点 # 例如:xfs_growfs /data
ext4 文件系统:
bash
# 卸载文件系统(重要!)
umount /挂载点
# 检查并扩容
e2fsck -f /dev/sda3 # 替换为实际分区
resize2fs /dev/sda3
# 重新挂载
mount /挂载点
四、特殊情况处理
1. LVM 逻辑卷扩容
bash
# 1. 扩展物理卷(PV)
pvresize /dev/sda3 # 替换为实际分区
# 2. 扩展卷组(VG)
vgdisplay # 查看卷组名称
vgextend vg_name /dev/sda3 # 扩展卷组
# 3. 扩展逻辑卷(LV)
lvdisplay # 查看逻辑卷路径
lvextend -l +100%FREE /dev/mapper/vg_name-lv_name # 扩展至最大
# 4. 扩展文件系统
xfs_growfs /dev/mapper/vg_name-lv_name # 或 resize2fs (ext4)
2. 云服务器磁盘扩容
阿里云 ECS:需先在控制台扩容磁盘,再执行:
bash
# 安装growpart工具
yum install cloud-utils-growpart -y
# 自动扩展根分区
growpart /dev/vda 1 # 假设根分区为/dev/vda1
xfs_growfs /
AWS EBS:需先在控制台修改卷大小,再使用
growpart
和xfs_growfs
扩展。
五、验证扩容结果
bash
# 查看磁盘和分区大小
lsblk /dev/sda
# 查看文件系统已使用/总容量
df -h /挂载点
六、常见错误排查
无法卸载文件系统:
使用
lsof +D /挂载点
检查占用进程,终止相关进程后重试。使用
fuser -km /挂载点
强制卸载(谨慎使用,可能导致数据丢失)。
内核不支持新分区表:
升级内核至最新版本:
yum update kernel
或apt-get upgrade linux-image
。
扩容后磁盘性能下降:
检查是否有磁盘 I/O 错误:
smartctl -a /dev/sda
。对磁盘进行坏道检测:
badblocks -v /dev/sda
。