本文目录导读:

- LVM逻辑卷扩展(最推荐,支持在线扩展)
- 非LVM分区(需要卸载后操作)
- 虚拟机磁盘扩展(如VMware/KVM)
- 云服务器磁盘扩展(如AWS EBS)
- 自动检测并扩展脚本
- 条件检查和错误处理脚本
- 重要注意事项:
- 检查扩展结果:
在Shell脚本中扩展磁盘分区大小,需要根据不同的文件系统和分区类型采用不同的方法,以下是常见的几种场景及对应的脚本解决方案:
LVM逻辑卷扩展(最推荐,支持在线扩展)
#!/bin/bash
# LVM扩展脚本
LV_PATH="/dev/vg_name/lv_name" # 逻辑卷路径
NEW_SIZE="+10G" # 要增加的大小
# 扩展逻辑卷
lvextend -L $NEW_SIZE $LV_PATH
# 扩展文件系统(根据文件系统类型)
if blkid $LV_PATH | grep -q "ext4"; then
resize2fs $LV_PATH
elif blkid $LV_PATH | grep -q "xfs"; then
xfs_growfs $LV_PATH
fi
echo "LVM扩展完成"
非LVM分区(需要卸载后操作)
#!/bin/bash
DISK="/dev/sda" # 磁盘设备
PART_NUM="1" # 分区号
PART_PATH="${DISK}${PART_NUM}"
# 卸载分区
umount $PART_PATH
# 使用fdisk扩展分区(非交互方式)
(
echo d # 删除分区
echo $PART_NUM # 选择分区号
echo n # 新建分区
echo p # 主分区
echo $PART_NUM # 分区号
echo # 默认起始扇区
echo # 默认结束扇区(使用全部空间)
echo w # 写入
) | fdisk $DISK
# 通知内核分区表变化
partprobe $DISK
# 检查并修复文件系统
e2fsck -f $PART_PATH
# 扩展文件系统
resize2fs $PART_PATH
# 重新挂载
mount $PART_PATH /mnt/your_mount_point
虚拟机磁盘扩展(如VMware/KVM)
#!/bin/bash # 首先在虚拟机管理工具中扩展磁盘(外部操作) # 然后执行以下命令重新扫描 # 重新扫描SCSI设备 echo "- - -" > /sys/class/scsi_host/host0/scan # 查看新磁盘大小 lsblk # 扩展分区 growpart /dev/sda 1 # 扩展文件系统 resize2fs /dev/sda1
云服务器磁盘扩展(如AWS EBS)
#!/bin/bash # AWS EBS扩展示例 INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id) VOLUME_ID="vol-xxxxxxx" # 需要先扩展EBS卷大小 # 通知内核卷大小变化 echo 1 > /sys/class/block/xvda/device/rescan # 扩展分区 growpart /dev/xvda 1 # 扩展文件系统 resize2fs /dev/xvda1
自动检测并扩展脚本
#!/bin/bash
# 自动检测分区类型并扩展
extend_partition() {
local device=$1
local mount_point=$2
# 获取文件系统类型
local fs_type=$(blkid -o value -s TYPE $device)
echo "检测到文件系统: $fs_type"
case $fs_type in
ext4|ext3|ext2)
umount $mount_point 2>/dev/null
e2fsck -f $device
resize2fs $device
mount $device $mount_point
;;
xfs)
xfs_growfs $mount_point
;;
btrfs)
btrfs filesystem resize max $mount_point
;;
*)
echo "不支持的文件系统类型: $fs_type"
return 1
;;
esac
echo "扩展完成"
}
# 使用示例
extend_partition "/dev/sda1" "/data"
条件检查和错误处理脚本
#!/bin/bash
set -e # 出错立即退出
safe_extend_lvm() {
local lv_path=$1
local new_size=$2
# 检查LVM是否存在
if ! lvs $lv_path &>/dev/null; then
echo "错误: 逻辑卷 $lv_path 不存在"
exit 1
fi
# 检查是否有足够的物理空间
local vg_name=$(lvs --noheadings -o vg_name $lv_path | tr -d ' ')
local available=$(vgs --noheadings -o vg_free $vg_name | tr -d ' ')
echo "卷组 $vg_name 可用空间: $available"
# 执行扩展
lvextend -L $new_size $lv_path || {
echo "扩展失败"
exit 1
}
# 扩展文件系统
local fs_type=$(blkid -o value -s TYPE $lv_path)
echo "扩展文件系统: $fs_type"
case $fs_type in
ext4|ext3|ext2)
resize2fs $lv_path
;;
xfs)
xfs_growfs $(df -h | grep $lv_path | awk '{print $6}')
;;
esac
echo "成功扩展 $new_size"
}
# 使用
safe_extend_lvm "/dev/vg_data/lv_data" "+20G"
重要注意事项:
- 备份数据:扩展分区前务必备份重要数据
- 文件系统检查:扩展后建议运行
fsck检查文件系统完整性 - 在线扩展限制:部分文件系统(如ext2/3)不支持在线扩展
- 分区表类型:GPT和MBR分区表扩展方式不同
- 磁盘对齐:SSD磁盘需要注意分区对齐
检查扩展结果:
# 检查磁盘大小 lsblk # 检查分区大小 fdisk -l /dev/sda # 检查文件系统使用情况 df -h # 检查LVM信息 lvdisplay vgdisplay
根据不同场景选择合适的扩展方法,建议优先使用LVM方式,因为支持在线扩展且风险最低。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播