Archived
376 lines
11 KiB
Markdown
376 lines
11 KiB
Markdown
## 0.必要条件
|
||
|
||
在上一篇文章 [02.PVE初始化配置](./02.PVE初始化配置.md) 中,我们已经初始化了 PVE 系统,接下来需要对 PVE 系统进一步调整。
|
||
|
||
在 PVE 系统调整之前,请确保必要的软件包已经安装完成。
|
||
|
||
本文后续命令,均在 SSH 终端下完成。
|
||
|
||
```bash
|
||
## 同步镜像仓库
|
||
apt update
|
||
|
||
## 安装系统软件
|
||
apt install htop lm-sensors unzip vim tmux unattended-upgrades powermgmt-base
|
||
|
||
## 安装网络工具
|
||
apt install iperf iperf3 iftop
|
||
|
||
## 安装 CPU 调度调整工具
|
||
apt install cpufrequtils
|
||
|
||
## 根据 CPU 厂商安装 CPU 微码工具
|
||
apt install intel-microcode (amd64-microcode)
|
||
|
||
## 更新 PCI 数据库
|
||
update-pciids
|
||
```
|
||
|
||
## 1.系统时区
|
||
|
||
如果在安装 PVE 系统时选错了时区,导致系统时间和北京时间不一致,可以使用以下命令修正。
|
||
|
||
输出结果如果和北京时间一致,则代表修改正确。
|
||
|
||
```bash
|
||
## 修改系统时区
|
||
timedatectl set-timezone Asia/Shanghai
|
||
|
||
## 检查系统时间
|
||
date -R
|
||
|
||
## 参考输出
|
||
Wed, 20 Jul 2022 16:21:28 +0800
|
||
```
|
||
|
||
Debian 系统常用 `systemd-timesyncd.service` 来同步时间,而 PVE 系统使用 `chrony.service` 来同步时间。
|
||
|
||
为了使用国内的 NTP 服务器,需要对 `chrony.service` 进行配置。
|
||
|
||
执行以下命令对 `chrony` 的配置文件进行修改。
|
||
|
||
```bash
|
||
## 编辑 chrony 配置文件
|
||
nano /etc/chrony/chrony.conf
|
||
```
|
||
|
||
在编辑器对话框中,将 `pool 2.debian.pool.ntp.org iburst` “注释” 掉,并添加国内的 NTP 服务器。
|
||
|
||
```bash
|
||
## chrony 服务配置文件示例
|
||
|
||
# Use Debian vendor zone.
|
||
# pool 2.debian.pool.ntp.org iburst ## 在这行前面增加注释符 # 来注释
|
||
|
||
# Use Custom vendor zone.
|
||
pool ntp.tencent.com iburst
|
||
pool ntp.aliyun.com iburst
|
||
```
|
||
|
||
保存该配置文件后,需重启 `chrony` 服务,并再次检查系统 NTP 服务器地址。
|
||
|
||
```bash
|
||
## 重启 chrony 服务
|
||
systemctl restart chrony.service
|
||
|
||
## 检查系统 NTP 服务器
|
||
chronyc sources -V
|
||
```
|
||
|
||
如果输出以下类似内容,则表示系统 NTP 服务器设置正确。
|
||
|
||
```bash
|
||
## NTP 服务示例输出
|
||
|
||
MS Name/IP address Stratum Poll Reach LastRx Last sample
|
||
===============================================================================
|
||
^+ 106.55.184.199 2 6 17 11 +752us[ +273us] +/- 40ms
|
||
^* 203.107.6.88 2 6 17 11 -1868us[-2348us] +/- 17ms
|
||
```
|
||
|
||
## 2. CPU 调度器
|
||
|
||
安装好 `cpufrequtils` 后,需检查 CPU 当前调度器。
|
||
|
||
```bash
|
||
## 检查 CPU 当前调度器
|
||
cpufreq-info
|
||
```
|
||
**设备 CPU - J4125 参考输出** :
|
||
|
||
```bash
|
||
## J4125 参考输出
|
||
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
|
||
Report errors and bugs to cpufreq@vger.kernel.org, please.
|
||
analyzing CPU 0:
|
||
driver: intel_cpufreq
|
||
CPUs which run at the same hardware frequency: 0
|
||
CPUs which need to have their frequency coordinated by software: 0
|
||
maximum transition latency: 20.0 us.
|
||
hardware limits: 800 MHz - 2.70 GHz
|
||
available cpufreq governors: conservative, ondemand, userspace, powersave, performance, schedutil
|
||
current policy: frequency should be within 800 MHz and 2.70 GHz.
|
||
The governor "ondemand" may decide which speed to use
|
||
within this range.
|
||
current CPU frequency is 1.84 GHz.
|
||
```
|
||
|
||
**设备 CPU - N6005 参考输出** :
|
||
|
||
```bash
|
||
## N6005 参考输出
|
||
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
|
||
Report errors and bugs to cpufreq@vger.kernel.org, please.
|
||
analyzing CPU 0:
|
||
driver: intel_pstate
|
||
CPUs which run at the same hardware frequency: 0
|
||
CPUs which need to have their frequency coordinated by software: 0
|
||
maximum transition latency: 4294.55 ms.
|
||
hardware limits: 800 MHz - 3.30 GHz
|
||
available cpufreq governors: performance, powersave
|
||
current policy: frequency should be within 800 MHz and 3.30 GHz.
|
||
The governor "performance" may decide which speed to use
|
||
within this range.
|
||
current CPU frequency is 2.00 GHz.
|
||
```
|
||
|
||
这里面主要关注两个点:
|
||
|
||
- driver: `intel_cpufreq` 或 `intel_pstate`
|
||
|
||
- current policy: `governor "ondemand"` 或 `governor "performance"`
|
||
|
||
还有另外一个命令可用来显示 CPU 当前调度器。
|
||
|
||
```bash
|
||
## 检查 CPU 当前调度器
|
||
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
||
|
||
## J4125 参考输出
|
||
ondemand
|
||
|
||
## N6005 参考输出
|
||
performance
|
||
```
|
||
|
||
CPU 驱动一般不建议手动调整,而 `governor` 后面的参数表示 CPU 当前调度器设置。
|
||
|
||
接下来,需要了解 CPU 支持的调度器有哪些,使用以下命令。
|
||
|
||
```bash
|
||
## 检查 CPU 调度器支持情况
|
||
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
|
||
|
||
## J4125 参考输出
|
||
conservative ondemand userspace powersave performance schedutil
|
||
|
||
## N6005 参考输出
|
||
performance powersave
|
||
```
|
||
|
||
根据 CPU 所使用的驱动不同,可选调度器也不同,至于每种调度器有什么优劣,欢迎大家深度挖掘。
|
||
|
||
- CPU 驱动为 `intel_cpufreq` 时,推荐使用 `schedutil` 调度器。
|
||
|
||
- CPU 驱动为 `intel_pstate` 时,推荐使用 `powersave` 调度器。
|
||
|
||
本文使用 `powersave` 调度器为演示,使用 `vim` 编辑器来编辑 `cpufrequtils` 的配置文件。
|
||
|
||
因为该配置文件很长,完整的配置文件可查看 [pve_cpufrequtils.conf](./src/pve_cpufrequtils.conf) 以便对比。
|
||
|
||
修改完成后,需要重启 PVE 服务器来使参数生效。
|
||
|
||
`vim` 编辑器,按 `i` 键进入编辑模式,`esc` 键退出编辑模式,`:wq` 命令保存退出。
|
||
|
||
|
||
```bash
|
||
## 修改 cpufrequtils 配置文件
|
||
vim /etc/init.d/cpufrequtils
|
||
|
||
## 在配置文件中修改调度器
|
||
|
||
ENABLE="true"
|
||
GOVERNOR="powersave" ## 修改本行的调度器为 powersave
|
||
MAX_SPEED="0"
|
||
MIN_SPEED="0"
|
||
```
|
||
|
||
PVE 服务器重启完成后需再次查看 CPU 调度器,检验配置文件是否生效。
|
||
|
||
这里提供两个额外命令,方便实时查看 CPU 当前频率和温度状况。
|
||
|
||
```bash
|
||
## 查看 CPU 当前频率
|
||
watch cat /sys/devices/system/cpu/cpu[0-9]*/cpufreq/scaling_cur_freq
|
||
|
||
## 查看内部温度
|
||
watch -d sensors
|
||
```
|
||
|
||
## 3. PVE 定时重启
|
||
|
||
有时需要让 PVE 服务器周期性的定时重启,则可使用以下命令。
|
||
|
||
参数表示每月 `1` 、 `16` 号的 `5` 点 `0` 分执行系统重启命令。
|
||
|
||
```bash
|
||
## 编辑系统 crontab
|
||
crontab -e
|
||
|
||
## 选择 nano 编辑器,粘贴以下内容并保存
|
||
0 5 1,16 * * /usr/sbin/reboot
|
||
```
|
||
|
||
使用以下命令来查看当前系统的计划任务。
|
||
|
||
```bash
|
||
## 显示系统 crontab
|
||
crontab -l
|
||
```
|
||
|
||
## 4. PVE 自动更新
|
||
|
||
### 4.1.系统定时器
|
||
|
||
配置系统自动更新之前,需检查系统当前定时器状态。
|
||
|
||
后续将手动调整该定时器的时间,使其每 `5` 天凌晨 `02:00` 进行触发。
|
||
|
||
```bash
|
||
## 检查系统定时器
|
||
systemctl status apt-daily-upgrade.timer
|
||
|
||
## 示例输出
|
||
● apt-daily-upgrade.timer - Daily apt upgrade and clean activities
|
||
Loaded: loaded (/lib/systemd/system/apt-daily-upgrade.timer; enabled; preset: enabled)
|
||
Active: active (waiting) since Fri 2023-06-23 18:55:58 CST; 1 day 18h ago
|
||
Until: Fri 2023-06-23 18:55:58 CST; 1 day 18h ago
|
||
Trigger: Mon 2023-06-26 06:26:25 CST; 16h left
|
||
Triggers: ● apt-daily-upgrade.service
|
||
|
||
Jun 23 18:55:58 node01 systemd[1]: Started apt-daily-upgrade.timer - Daily apt upgrade and clean activities.
|
||
```
|
||
|
||
### 4.2.配置更新策略
|
||
|
||
使用以下命令,启用系统自动更新。
|
||
|
||
执行命令后,使用 “左右” 方向键进行选择,“回车” 键进行确认。
|
||
|
||
```bash
|
||
## 配置自动更新策略
|
||
dpkg-reconfigure -plow unattended-upgrades
|
||
|
||
## 选择 “是” (“YES”)
|
||
## 示例输出
|
||
Creating config file /etc/apt/apt.conf.d/20auto-upgrades with new version
|
||
```
|
||
|
||
进一步调整 apt 的 `20auto-upgrades` 配置文件。
|
||
|
||
配置文件中,用来控制更新周期的参数为 `APT::Periodic::Unattended-Upgrade` ,`5` 表示更新周期为 `5` 天。
|
||
|
||
```bash
|
||
## 进入 apt 的配置目录
|
||
cd /etc/apt/apt.conf.d
|
||
|
||
## 编辑 20auto-upgrades 配置文件
|
||
vim 20auto-upgrades
|
||
|
||
## 删除里面全部内容并填写以下内容
|
||
APT::Periodic::Update-Package-Lists "1";
|
||
APT::Periodic::Unattended-Upgrade "5";
|
||
APT::Periodic::AutocleanInterval "1";
|
||
APT::Periodic::CleanInterval "1";
|
||
|
||
```
|
||
|
||
进一步调整 apt 的 `50unattended-upgrades` 配置文件,其中被修改的参数解释如下。
|
||
|
||
- 启用了 Debian bullseye-updates 相关更新。
|
||
|
||
- 增加并启用 PVE 自有仓库的更新,确保不会遗漏自有仓库的更新内容。
|
||
|
||
- 自动修复被打断的Dpkg安装。
|
||
|
||
- 自动移除无用的的内核包。
|
||
|
||
- 自动移除因更新而出现的无用依赖包。
|
||
|
||
- 自动移除以前的无用依赖包。
|
||
|
||
- 自动重启:开启。
|
||
|
||
- 自动重启时间:05:00。
|
||
|
||
因为该配置文件很长,完整的配置文件可查看 [pve_50unattended_upgrades.conf](./src/pve_50unattended_upgrades.conf) 以便对比。
|
||
|
||
```bash
|
||
## 编辑 50unattended-upgrades 配置文件
|
||
vim 50unattended-upgrades
|
||
|
||
## 删除以下行前面的注释符 // ,代表启用
|
||
"origin=Debian,codename=${distro_codename}-updates";
|
||
|
||
## 添加 PVE 系统更新项目
|
||
"origin=Proxmox,codename=${distro_codename},label=Proxmox Debian Repository";
|
||
|
||
## 按需添加 PVE Ceph 更新项目
|
||
"origin=Proxmox,codename=${distro_codename},label=Proxmox Ceph Debian Repository";
|
||
|
||
## 在配置文件末尾增加以下配置项,代表启用,并调整参数
|
||
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
|
||
|
||
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
|
||
|
||
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
|
||
|
||
Unattended-Upgrade::Remove-Unused-Dependencies "true";
|
||
|
||
Unattended-Upgrade::Automatic-Reboot "true";
|
||
|
||
Unattended-Upgrade::Automatic-Reboot-Time "05:00";
|
||
|
||
```
|
||
|
||
### 4.3.重设触发器
|
||
|
||
完整的配置文件可查看 [pve_apt_daily_upgrade.conf](./src/pve_apt_daily_upgrade.conf) 以便对比。
|
||
|
||
```bash
|
||
## 重设自动更新触发器时间为凌晨 02:00
|
||
systemctl edit apt-daily-upgrade.timer
|
||
|
||
## 根据文件中的提示,在中间空白处填入以下内容
|
||
[Timer]
|
||
OnCalendar=
|
||
OnCalendar=02:00
|
||
RandomizedDelaySec=0
|
||
```
|
||
|
||
设置完成后重启自动更新的触发器:
|
||
|
||
```bash
|
||
## 重启触发器
|
||
systemctl restart apt-daily-upgrade.timer
|
||
|
||
## 再次检查触发器状态
|
||
systemctl status apt-daily-upgrade.timer
|
||
|
||
## 参考输出
|
||
● apt-daily-upgrade.timer - Daily apt upgrade and clean activities
|
||
Loaded: loaded (/lib/systemd/system/apt-daily-upgrade.timer; enabled; preset: enabled)
|
||
Drop-In: /etc/systemd/system/apt-daily-upgrade.timer.d
|
||
└─override.conf
|
||
Active: active (waiting) since Sun 2023-06-25 14:35:06 CST; 9s ago
|
||
Until: Sun 2023-06-25 14:35:06 CST; 9s ago
|
||
Trigger: Mon 2023-06-26 02:00:00 CST; 11h left
|
||
Triggers: ● apt-daily-upgrade.service
|
||
|
||
Jun 25 14:35:06 node01 systemd[1]: Stopped apt-daily-upgrade.timer - Daily apt upgrade and clean activities.
|
||
Jun 25 14:35:06 node01 systemd[1]: Stopping apt-daily-upgrade.timer - Daily apt upgrade and clean activities...
|
||
Jun 25 14:35:06 node01 systemd[1]: Started apt-daily-upgrade.timer - Daily apt upgrade and clean activities.
|
||
```
|
||
|
||
至此 PVE 的系统调整已经完成。
|