一、U盘做PVE系统启动盘

 第1步:下载工具和镜像

  • 启动盘制作工具:下载 balenaEtcher(官网:etcher.balena.io),这是一个跨平台的免费工具,界面非常直观。官网下载太慢,点私有地址

  • PVE 系统镜像:去 Proxmox 官网地址你需要的版本,注意核对文件名,官网下载很慢,这里有加速版本 南京大学镜像加速

  • 第2步:插入U盘并打开软件

    • 插入你的U盘(注意:U盘里的所有数据都会被清空,请提前备份好重要文件)。

    • 打开下载好的 balenaEtcher 软件。

  • 第3步:开始制作(核心三步)

    • 点击“从文件烧录”,选择你刚下载好的 PVE 镜像文件(.iso)。

    • 点击“选择目标磁盘”,选中你的U盘。

    • 点击“现在烧录”,软件就会自动完成写入和验证,等待提示完成即可。

  • 第4步:从U盘启动服务器

    • 把制作好的U盘插到你的服务器上,开机并进入BIOS(通常开机时按 Delete 或 F11 键)。

    • 在 BIOS 中将U盘设置为第一启动项,保存退出后重启,就会自动进入 Proxmox VE 的安装界面了。

⚠️ 注意事项

  • 数据备份:在制作启动盘之前,务必提前备份好U盘内的重要数据

  • BIOS设置:如果从U盘启动失败或出现错误,请进入主板BIOS,尝试关闭“Secure Boot”(安全启动) 功能,这通常是问题的原因。

  • 其他工具提醒:如果你以后改用 Rufus 工具,写入 PVE 镜像时,在弹出提示窗里一定要选择“DD 模式”,否则制作的U盘无法启动。


二、PRID矩阵配置

2.0、硬件环境

  1. 服务器设备(需支持 PRAID 配置,配备 RJ45 网络接口)
  2. 具备 RJ45 网络接口的显示屏及配套数据线
  3. 系统引导盘(U 盘介质,已写入 Proxmox VE 系统镜像)
  4. 适配服务器的硬盘(含 2 块 446.625GB SATA 接口 SSD、3 块 3.637TB SATA 接口HDD)

2.1、硬件磁盘确认

 2个ssd固态硬盘,3个机械磁盘,状态是Online状态,若监测不到5个磁盘,说明状态不对,联系技术厂家

 2.2、设备连接与启动

等待服务器启动过程中,当屏幕提示 “按 Ctrl + R” 时,迅速按下该组合键

进入 MegaRAID SAS-MFI BIOS 的 PRAID 配置页面

若未及时按下导致错过配置页面,需按下 Ctrl + Alt + Del 组合键重启服务器后重新操作

2.3、创建 RAID-1 阵列(系统盘

 VD Mgmt --  通过键盘上下箭头键移动光标到最顶部 -- 回车

 "Create New VD"(创建新虚拟磁盘) -- 回车 -- 下拉框选择 "RAID-1" 

在Drivers列表中,回车勾选 2 块标识为 "SSD-SATA"、容量为 446.625GB 的硬盘(ID 分别为 P0:01:00、P0:01:01),确保 "Capable"列显示为 “512e”。

RAID-1 为镜像模式,实际可用容量为总容量的 50%,用于系统安装与数据备份

选择OK,回车

 

2.4、创建 RAID-5 阵列(存储盘)

 VD Mgmt --  通过键盘上下箭头键移动光标到最顶部 -- 回车

 "Create New VD"(创建新虚拟磁盘) -- 回车 -- 下拉框选择 "RAID-5"   

  1. 在Driver列表中,通过空格键勾选 3 块标识为 “HDD-SATA”、容量为 3.637TB 的硬盘(ID 分别为 P0:01:02、P0:01:03、P1:01:04)。
  2. 确认 “Basic Settings” 中,容量自动计算为 7.276TB(RAID-5 采用分布式校验机制,可用容量 =(硬盘数量 - 1)× 单盘容量,即 2×3.637TB=7.276TB)。

  1. 移动光标至 “OK” 选项,回车确认。
  2. 按 ESC 键返回 PRAID 主配置页面,再次按 ESC 键,屏幕弹出 “Are you sure you want to exit?” 提示框,选择 “OK” 回车退出配置界面,服务器自动重启。

然后按ESC退出

三、PVE系统安装

U盘插在服务器上,重启服务器,按F11进入BIOS页面,选择U盘启动盘,回车

等待 Proxmox VE 安装界面加载完成后,点击右下角 “I agree” 按钮,同意最终用户许可协议。

  1. 进入 “Location and Time Zone selection”(位置与时区设置)页面:
    1. “Country”(国家)选择 “China”;
    2. “Time Zone”(时区)默认自动识别为 “Asia/Shanghai”,无需修改;
    3. “Keyboard Layout”(键盘布局)选择 “US English”,点击 “Next” 进入下一步。
  2. 进入 “Management Network Configuration”(管理网络配置)页面:
    1. “Management Interface”(管理接口)选择 “eno2 (igb)”(接口标识为 3c:ec:ef:9a:b1:31);
    2. “Hostname (FQDN)”(主机名)填写格式为 “pve1.example.invalid”;
    3. “IP Address (CIDR)”(IP 地址 / 子网掩码)设置为 “10.80.20.10/24”;
    4. “Gateway”(网关)填写 “192.168.100.1”;
    5. “DNS Server”(DNS 服务器)填写 “127.0.0.1”;确认配置无误后,点击 “Next”。

系统安装成功后,会提示重启服务器,此时拔掉 U 盘,等待服务器自动重启,Proxmox VE 系统部署完成。


四、服务器软件部分

4.1、服务器时间设置无效

先正确设置时区为越南

sudo timedatectl set-timezone Asia/Ho_Chi_Minh

确保当前 shell 没有 TZ 环境变量干扰

unset TZ

设置正确的本地时间(越南时间 13:01)

sudo date -s "2026-04-10 13:01:00"

此时输出应该显示 +07 时区,例如:

Fri Apr 10 13:01:00 +07 2026

将系统时间写入硬件时钟

sudo hwclock --systohc

验证时间正确性

timedatectl status

期望输出:

  • Local timeFri 2026-04-10 13:01:xx +07

  • Universal timeFri 2026-04-10 06:01:xx UTC(比本地时间少7小时)

  • Time zoneAsia/Ho_Chi_Minh (+07, +0700)

  • RTC time: 应该接近 Universal time

同步时间到docker容器

# 格式:docker cp /etc/localtime <容器名或ID>:/etc/localtime
docker cp /etc/localtime your-node-red-container:/etc/localtime

五、定时备份快照

进入在宿主机的Shell里面,不是虚拟机里面

创建目录 mkdir /home/sh

创建脚本 touch back-100.sh

脚本内容如下,需要注意VMID = 100 ,这里是快照虚拟机的ID

默认只保留7天的快照记录

cat > /home/sh/snapshots.sh << 'EOF'
#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

# ==================== 配置区域 ====================
SNAPSHOT_PREFIX="juxin"        # 快照名称前缀(实际会加下划线和日期,如 juxin_20260429_000001)
RETENTION_DAYS=7               # 保留天数
LOG_FILE="/var/log/pve-snapshot.log"   # 日志文件路径
# =================================================

# 日志函数(同时输出到终端和日志文件)
log() {
    local msg="[$(date '+%Y-%m-%d %H:%M:%S')] $1"
    echo "$msg" | tee -a "$LOG_FILE"
}

# 清理指定 VM 的旧快照
cleanup_old_snapshots() {
    local vmid=$1
    log "开始清理 VM $vmid 中超过 ${RETENTION_DAYS} 天的旧快照..."

    # 获取所有匹配前缀的快照名称(使用已验证的 grep -o 提取)
    local snap_names
    snap_names=$(qm listsnapshot "$vmid" 2>/dev/null | grep -o "${SNAPSHOT_PREFIX}_[0-9_]*")

    if [ -z "$snap_names" ]; then
        log "VM $vmid 未找到前缀为 '${SNAPSHOT_PREFIX}_' 的快照,无需清理"
        return 0
    fi

    local current_epoch=$(date +%s)
    local keep_before_epoch=$((current_epoch - RETENTION_DAYS * 86400))
    local deleted_count=0

    echo "$snap_names" | while read -r snap_name; do
        # 从快照名称中提取 8 位日期(YYYYMMDD)
        local snap_date=$(echo "$snap_name" | grep -oE '[0-9]{8}')
        if [ -z "$snap_date" ]; then
            log "警告: 快照 $snap_name 不含8位日期,跳过"
            continue
        fi

        # 转换为时间戳
        local year=${snap_date:0:4}
        local month=${snap_date:4:2}
        local day=${snap_date:6:2}
        local snap_epoch
        if ! snap_epoch=$(date -d "$year-$month-$day" +%s 2>/dev/null); then
            log "警告: 快照 $snap_name 的日期 $snap_date 无效,跳过"
            continue
        fi

        local age_days=$(( (current_epoch - snap_epoch) / 86400 ))

        if [ "$snap_epoch" -lt "$keep_before_epoch" ]; then
            log "发现过期快照: $snap_name (已保留 ${age_days} 天),准备删除"
            if qm delsnapshot "$vmid" "$snap_name" --force >/dev/null 2>&1; then
                log "成功删除: $snap_name"
                ((deleted_count++))
            else
                log "错误: 删除失败 $snap_name"
            fi
        else
            log "保留快照: $snap_name (已保留 ${age_days} 天)"
        fi
    done

    log "VM $vmid 旧快照清理完成,共删除 $deleted_count 个"
}

# 为指定 VM 创建新快照
create_snapshot() {
    local vmid=$1
    local snap_name="${SNAPSHOT_PREFIX}_$(date +%Y%m%d_%H%M%S)"

    log "正在为 VM $vmid 创建快照: $snap_name"
    if qm snapshot "$vmid" "$snap_name" --description "Auto backup snapshot created at $(date)" >/dev/null 2>&1; then
        log "快照 $snap_name 创建成功"
        return 0
    else
        log "错误: 快照 $snap_name 创建失败!"
        return 1
    fi
}

# 主函数:对每个 VM 执行创建 + 清理
main() {
    if [ $# -eq 0 ]; then
        echo "用法: $0 <VMID> [VMID2 ...]"
        echo "示例: $0 100 101 102"
        exit 1
    fi

    log "========== 自动快照任务开始 =========="

    for vmid in "$@"; do
        # 检查虚拟机是否存在
        if ! qm status "$vmid" &>/dev/null; then
            log "错误: 虚拟机 $vmid 不存在或无法访问,跳过"
            continue
        fi

        log ">>> 处理 VM $vmid <<<"
        
        # 1. 创建新快照
        if create_snapshot "$vmid"; then
            # 2. 删除旧快照(仅在创建成功后才清理,避免因创建失败误删)
            cleanup_old_snapshots "$vmid"
        else
            log "警告: VM $vmid 快照创建失败,跳过清理步骤"
        fi
        
        echo ""  # 空行分隔不同 VM 的日志
    done

    log "========== 自动快照任务结束 =========="
}

# 执行主函数,传入所有命令行参数
main "$@"
EOF

chmod  777  /home/sh/snapshots.sh

crontab -e  加入定时任务

# m h  dom mon dow   command
0 0 * * * /home/sh/snapshots.sh 100
10 0 * * * /home/sh/snapshots.sh 101
20 0 * * * /home/sh/snapshots.sh 102

观察几天,查看快照这里,能看到记录


六、备份虚拟机到nas服务器

1、虚拟机备份

选中虚拟机 -- Backup -- 选择Backup now 等待备份结束

INFO: Include disk 'scsi0' 'local-lvm:vm-101-disk-0' 200G
INFO: backup mode: snapshot
INFO: ionice priority: 7
INFO: creating vzdump archive '/var/lib/vz/dump/vzdump-qemu-101-2026_06_24-16_13_08.vma.zst'
INFO: started backup task 'f0d9aa53-c5d8-4932-90bb-6140c9c8cda2'
INFO: resuming VM again
INFO:  5% (10.9 GiB of 200.0 GiB) in 3s, read: 3.6 GiB/s, write: 114.2 MiB/s

2、上传备份文件到NAS文件服务器

* 虚拟机备份结束时,会提示导出目录  /var/lib/vz/dump/****.zst

* 选择虚拟机pve1 -- shell -- cd  /var/lib/vz/dump/

   ls -la   查看备份的文件

2.1、注释企业源

# 注释企业源
sed -i 's/^deb/#deb/' /etc/apt/sources.list.d/pve-enterprise.list
sed -i 's/^deb/#deb/' /etc/apt/sources.list.d/ceph.list
# 添加免费社区源
echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
# 导入密钥
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
# 更新源
apt update

2.2、安装cifs

apt install cifs-utils -y

2.3、上传虚拟机备份文件

# 创建挂载目录

mkdir -p /mnt/nas_backup

# 临时挂载 NAS(重启失效)
mount -t cifs //192.168.1.42/ActiveBackupforBusiness/vmk /mnt/nas_backup -o 
username=vnhftd,password=Vnhf2026,vers=3.0,iocharset=utf8

执行命令结束以后,验证是否挂载成功

在nas文件服务器的/ActiveBackupforBusiness/vmk目录下创建一个记事本

查看/mnt/nas_backup/下是否也同步了这个记事本

拷贝虚拟机镜像到共享目录下

root@pve1:/mnt/nas_backup# cp /var/lib/vz/dump/vzdump-qemu-101-2026_06_24-16_13_08.vma.zst /mnt/nas_backup/

等待命令执行结束,到nas文件服务器上查看

2.4、上传镜像文件到NAS服务

界面里 local(pve1)ISO Images 对应的真实目录  /var/lib/vz/template/iso/

 cp CentOS-7-x86_64-Minimal-2009.iso /mnt/nas_backup/

等待执行结束,去NAS服务器上查看


3、从NAS文件服务器上下载备份的虚拟机文件

  和2.2 上传备份文件到NAS文件服务器的步骤一致

  区别是

root@pve1:/mnt/nas_backup# cp /mnt/nas_backup/vzdump-qemu-101-2026_06_24-16_13_08.vma.zst  /var/lib/vz/dump/

反过来,从NAS共享目录拷贝到pve备份虚拟机的目录!!!

从local(vm)可以看到备份的文件,然后还原虚拟机即可


七、越南服务器问题总结

1、PVE宿主机禁用更新

  • systemctl disable --now pve-daily-update.timer

2、服务器一关机系统就崩溃

  • 先手动停 InfluxDB:systemctl stop influxdb
  • 实时看日志 journalctl -u influxdb -f,出现shutdown complete再执关机,要给缓存数据预留固化时间;
  • 不要备份虚拟机,会加剧问题,高I/O读写

 *  必须安装 QEMU Guest Agent,防止虚拟机关机被 PVE 误判超时强制杀掉(关键)启用QEMU Guest Agent

虚拟机内部安装qemu-guest

# 清理旧缓存
yum clean all && yum makecache
# 正确完整包名安装
yum install qemu-guest-agent -y

# 开机自启并立刻运行
systemctl enable --now qemu-guest-agent
# 查看运行状态,必须显示 active (running)
systemctl status qemu-guest-agent
  • 磁盘缓存改为DirectSync:绕过宿主机内存缓存,每次写入直接落盘,不管 Windows 还是 Linux,断电安全性拉平;

  • Linux 挂载分区加上barrier=1参数,强制开启写入屏障,避免文件系统元数据错乱;
  • InfluxDB 缩短 WAL 日志刷盘间隔( /etc/influxdb/influxdb.conf),不要海量数据堆内存;
[data]
  # 将 0s 改为 1s 或 100ms
  # 推荐值:1s (对于大多数工业数采场景足够,能降低 90% 以上的 fsync 次数)
  # 如果数采频率极高(如毫秒级),可改为 100ms 或 500ms
  wal-fsync-delay = "1s" 

  # 配合调整:适当增大内存缓存,减少落盘频率
  # 默认通常是 1GB,如果物理机内存充足(如 8G/16G),可设为 2GB
  cache-max-memory-size = "512m"

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐