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分卷的全流程自动化运维,减少手动操作风险,提升管理效率。