CentOS分卷自动化运维实现指南
在CentOS系统中,分卷的自动化运维主要依赖LVM(逻辑卷管理)的工具链(如pvcreate、vgcreate、lvcreate等)和脚本化任务调度(如Shell脚本+cron),实现从分卷创建到后续维护的全流程自动化。以下是具体实现步骤:
LVM是CentOS分卷自动化的基础,需先确保系统安装了lvm2软件包。若未安装,可通过以下命令完成:
sudo yum install -y lvm2 # CentOS 7/8/Stream均适用
通过Shell脚本封装LVM命令,实现物理卷创建→卷组创建→逻辑卷创建→格式化→挂载→自动挂载的全流程自动化。以下是一个通用脚本示例(可根据需求调整参数):
#!/bin/bash
set -e # 遇到错误立即退出
# 定义变量(根据实际情况修改)
VG_NAME="my_vg" # 卷组名称
LV_NAME="my_lv" # 逻辑卷名称
DISK="/dev/sdb" # 待初始化的物理磁盘
LV_SIZE="10G" # 逻辑卷大小
MOUNT_DIR="/mnt/my_lv" # 挂载点
FS_TYPE="ext4" # 文件系统类型(可选ext4/xfs)
# 1. 安装LVM工具(若未安装)
if ! command -v pvcreate &>/dev/null; then
sudo yum install -y lvm2
fi
# 2. 创建物理卷(PV)
if ! pvs | grep -qw "$DISK"; then
sudo pvcreate "$DISK"
echo "[INFO] 物理卷 $DISK 创建成功"
else
echo "[WARN] 物理卷 $DISK 已存在,跳过创建"
fi
# 3. 创建卷组(VG)
if ! vgs | grep -qw "$VG_NAME"; then
sudo vgcreate "$VG_NAME" "$DISK"
echo "[INFO] 卷组 $VG_NAME 创建成功"
else
echo "[WARN] 卷组 $VG_NAME 已存在,跳过创建"
fi
# 4. 创建逻辑卷(LV)
if ! lvs | grep -qw "$LV_NAME"; then
sudo lvcreate -L "$LV_SIZE" -n "$LV_NAME" "$VG_NAME"
echo "[INFO] 逻辑卷 $VG_NAME/$LV_NAME 创建成功"
else
echo "[WARN] 逻辑卷 $VG_NAME/$LV_NAME 已存在,跳过创建"
fi
# 5. 格式化逻辑卷
LV_PATH="/dev/$VG_NAME/$LV_NAME"
if ! blkid | grep -qw "$LV_PATH"; then
sudo mkfs.$FS_TYPE "$LV_PATH"
echo "[INFO] 逻辑卷 $LV_PATH 格式化为 $FS_TYPE 成功"
else
echo "[WARN] 逻辑卷 $LV_PATH 已格式化,跳过格式化"
fi
# 6. 创建挂载点并挂载
if [ ! -d "$MOUNT_DIR" ]; then
sudo mkdir -p "$MOUNT_DIR"
fi
sudo mount "$LV_PATH" "$MOUNT_DIR"
echo "[INFO] 逻辑卷 $LV_PATH 挂载到 $MOUNT_DIR 成功"
# 7. 设置开机自动挂载
if ! grep -qw "$LV_PATH" /etc/fstab; then
UUID=$(sudo blkid -s UUID -o value "$LV_PATH")
echo "UUID=$UUID $MOUNT_DIR $FS_TYPE defaults 0 2" | sudo tee -a /etc/fstab
echo "[INFO] 已添加 $LV_PATH 到 /etc/fstab 实现开机自动挂载"
else
echo "[WARN] $LV_PATH 已在 /etc/fstab 中,跳过添加"
fi
若需定期扩展逻辑卷(如数据增长),可编写如下脚本(需替换VG_NAME、LV_NAME为实际值):
#!/bin/bash
set -e
# 定义变量
VG_NAME="my_vg" # 卷组名称
LV_NAME="my_lv" # 逻辑卷名称
MOUNT_DIR="/mnt/my_lv" # 挂载点
# 扩展逻辑卷(使用卷组所有剩余空间)
sudo lvextend -l +100%FREE "/dev/$VG_NAME/$LV_NAME"
echo "[INFO] 逻辑卷 $VG_NAME/$LV_NAME 扩展成功"
# 调整文件系统大小(ext4/xfs均适用)
if command -v xfs_growfs &>/dev/null; then
sudo xfs_growfs "$MOUNT_DIR" # XFS文件系统
elif command -v resize2fs &>/dev/null; then
sudo resize2fs "/dev/$VG_NAME/$LV_NAME" # ext4文件系统
else
echo "[ERROR] 未找到文件系统调整工具(xfs_growfs/resize2fs),请手动调整"
exit 1
fi
echo "[INFO] 文件系统已扩展至逻辑卷大小"
注意:扩展逻辑卷前需确保卷组有足够剩余空间(可通过vgdisplay查看)。
若需定期执行分卷维护(如每天凌晨扩展逻辑卷),可通过cron调度脚本:
crontab -e
0 1 * * * /path/to/extend_lv.sh >> /var/log/extend_lv.log 2>&1
注:
/path/to/extend_lv.sh需替换为脚本实际路径,>> /var/log/extend_lv.log 2>&1用于将输出日志保存到/var/log/extend_lv.log。
VG_NAME、LV_SIZE)提取到单独的配置文件(如/etc/lvm_config.conf),便于统一修改。echo "$(date '+%Y-%m-%d %H:%M:%S') [INFO] 操作描述" >> /var/log/lvm_auto.log),便于排查问题。set -e让脚本在遇到错误时立即退出,避免继续执行导致更严重的问题;也可添加trap捕获信号(如Ctrl+C)。lvextend、mkfs等关键操作前,备份/etc/fstab和重要数据(如cp /etc/fstab /etc/fstab.bak)。通过以上步骤,可实现CentOS分卷的全流程自动化运维,减少手动操作风险,提升管理效率。