原创作者:运维工程师 谢晋
Centos自动扩容centos-root卷空间
- 因为经常给客户扩容卷空间,所以为了方便编写了个脚本。
# vi resize_root.sh
#!/bin/bash
# CentOS7 自动扩容 centos-root 卷空间脚本
# 需要以root用户运行
# 检查是否以root用户运行
if [ "$(id -u)" -ne 0 ]; then
echo "此脚本必须以root用户运行" >&2
exit 1
fi
# 检查操作系统是否为CentOS7
if ! grep -q "CentOS Linux 7" /etc/redhat-release; then
echo "此脚本仅适用于CentOS 7系统" >&2
exit 1
fi
# 检查是否使用LVM
if ! command -v lvs >/dev/null 2>&1; then
echo "未找到LVM工具,系统可能未使用LVM" >&2
exit 1
fi
# 检查是否存在centos-root逻辑卷
if ! lvs | grep -q "centos-root"; then
echo "未找到centos-root逻辑卷" >&2
exit 1
fi
# 获取当前VG名称
VG_NAME=$(lvs --noheadings -o vg_name centos-root | sed 's/^[ \t]*//;s/[ \t]*$//')
# 检查是否有可用的物理卷空间
FREE_SPACE=$(vgs --noheadings -o vg_free --units g ${VG_NAME} | sed 's/^[ \t]*//;s/[ \t]*$//' | cut -d'.' -f1)
if [ "${FREE_SPACE}" -eq 0 ]; then
echo "没有可用的空间可以扩展" >&2
exit 1
fi
echo "当前可用空间: ${FREE_SPACE}GB"
# 扩展逻辑卷
echo "正在扩展centos-root逻辑卷..."
lvextend -l +100%FREE /dev/mapper/${VG_NAME}-centos-root
# 检查文件系统类型并调整大小
FS_TYPE=$(df -Th / | tail -n 1 | awk '{print $2}')
case ${FS_TYPE} in
xfs)
echo "检测到XFS文件系统,正在调整大小..."
xfs_growfs /
;;
ext*)
echo "检测到ext文件系统,正在调整大小..."
resize2fs /dev/mapper/${VG_NAME}-centos-root
;;
*)
echo "未知的文件系统类型: ${FS_TYPE}" >&2
echo "逻辑卷已扩展,但文件系统需要手动调整大小" >&2
exit 1
;;
esac
echo "centos-root卷扩展完成"
df -h /
- 赋权脚本
# chmod +x resize_root.sh
- 说明
此脚本仅适用于CentOS7系统
系统必须使用LVM并且有名为centos-root的逻辑卷
卷组(VG)中必须有可用空间