更新 PVE 系统调整

This commit is contained in:
CallMeR
2023-06-26 18:43:18 +08:00
parent cc41053e85
commit 90d8bccd46
+83 -30
View File
@@ -1,6 +1,6 @@
## 0.必要条件
在上一篇文章 [02.PVE初始化配置](./02.PVE初始化配置.md) 中,我们已经初始化了 PVE 系统,接下来需要对 PVE 系统进一步调整。
在上一篇文章 [02.PVE初始化配置](./02.PVE初始化配置.md) 中,初始化了 PVE 系统,接下来需要对 PVE 系统进一步调整。
在 PVE 系统调整之前,请确认必要的软件包已经安装完成,本文后续命令均在 SSH 终端下执行。
@@ -38,7 +38,9 @@ timedatectl set-timezone Asia/Shanghai
date -R
## 参考输出
Sun, 25 Jun 2023 12:12:12 +0800
```
Debian 系统常用 `systemd-timesyncd.service` 来同步时间,而 PVE 系统使用 `chrony.service` 来同步时间。
@@ -55,7 +57,7 @@ nano /etc/chrony/chrony.conf
在编辑器对话框中,将 `pool 2.debian.pool.ntp.org iburst` “注释” 掉,并添加国内的 NTP 服务器。
```bash
## chrony 服务配置文件示例
## chrony 配置项
# Use Debian vendor zone.
# pool 2.debian.pool.ntp.org iburst ## 在这行前面增加注释符 # 来注释
@@ -63,6 +65,7 @@ nano /etc/chrony/chrony.conf
# Use Custom vendor zone.
pool ntp.tencent.com iburst
pool ntp.aliyun.com iburst
```
保存该配置文件后,需重启 `chrony` 服务,并再次检查系统 NTP 服务器地址。
@@ -84,6 +87,7 @@ 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 调度器
@@ -98,6 +102,7 @@ cpufreq-info
```bash
## J4125 参考输出
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
@@ -111,12 +116,14 @@ analyzing CPU 0:
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:
@@ -130,6 +137,7 @@ analyzing CPU 0:
The governor "performance" may decide which speed to use
within this range.
current CPU frequency is 2.00 GHz.
```
这里面主要关注两个点:
@@ -145,10 +153,13 @@ analyzing CPU 0:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
## J4125 参考输出
ondemand
## N6005 参考输出
performance
```
CPU 驱动一般不建议手动调整,而 `governor` 后面的参数表示 CPU 当前调度器设置。
@@ -160,10 +171,13 @@ CPU 驱动一般不建议手动调整,而 `governor` 后面的参数表示 CPU
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
## J4125 参考输出
conservative ondemand userspace powersave performance schedutil
## N6005 参考输出
performance powersave
```
根据 CPU 所使用的驱动不同,可选调度器也不同,至于每种调度器有什么优劣,欢迎大家深度挖掘。
@@ -172,19 +186,21 @@ performance powersave
- CPU 驱动为 `intel_pstate` 时,推荐使用 `powersave` 调度器。
本文使用 `powersave` 调度器为演示,使用 `vim` 编辑器来编辑 `cpufrequtils` 的配置文件。
本文使用 `powersave` 调度器为演示,使用 `nano` 编辑器来编辑 `cpufrequtils` 的配置文件。
因为该配置文件很长,完整的配置文件可查看 [pve_cpufrequtils.conf](./src/pve_cpufrequtils.conf) 以便对比。
修改完成后,需要重启 PVE 服务器来使参数生效。
`vim` 编辑器,按 `i` 键进入编辑模式,`esc` 键退出编辑模式,`:wq` 命令保存退出。
```bash
## 编辑 cpufrequtils 配置文件
nano /etc/init.d/cpufrequtils
```
在配置文件中修改以下配置项,并保存。
```bash
## 修改 cpufrequtils 配置文件
vim /etc/init.d/cpufrequtils
## 在配置文件中修改调度器
## cpufrequtils 配置
ENABLE="true"
GOVERNOR="powersave" ## 修改本行的调度器为 powersave
@@ -212,18 +228,16 @@ watch -d sensors
参数表示每月 `1``16` 号的 `5``0` 分执行系统重启命令。
```bash
## 编辑系统 crontab
## 查看系统定时任务
crontab -l
## 编辑系统定时任务,编辑器选择 nano
crontab -e
## 选择 nano 编辑器,粘贴以下内容并保存
## 在配置文件末尾增加以下配置项
0 5 1,16 * * /usr/sbin/reboot
```
使用以下命令来查看当前系统的计划任务。
```bash
## 显示系统 crontab
crontab -l
```
## 4. PVE 自动更新
@@ -239,6 +253,7 @@ crontab -l
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
@@ -247,6 +262,7 @@ systemctl status apt-daily-upgrade.timer
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.配置更新策略
@@ -260,22 +276,29 @@ Jun 23 18:55:58 node01 systemd[1]: Started apt-daily-upgrade.timer - Daily apt u
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
nano /etc/apt/apt.conf.d/20auto-upgrades
```
## 删除里面全部内容并填写以下内容
删除里面全部内容,添加以下配置项,并保存。
配置文件中,用来控制更新周期的参数为 `APT::Periodic::Unattended-Upgrade` `5` 表示更新周期为 `5` 天。
```bash
## 系统更新周期配置项
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "5";
@@ -284,7 +307,14 @@ APT::Periodic::CleanInterval "1";
```
进一步调整 apt 的 `50unattended-upgrades` 配置文件,其中被修改的参数解释如下
进一步调整 apt 的 `50unattended-upgrades` 配置文件。
```bash
## 编辑 50unattended-upgrades 配置文件
nano /etc/apt/apt.conf.d/50unattended-upgrades
```
配置文件中,被修改的参数解释如下:
- 启用了 Debian `bookworm-updates` 相关更新。
@@ -307,18 +337,21 @@ APT::Periodic::CleanInterval "1";
因为该配置文件很长,完整的配置文件可查看 [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";
@@ -337,13 +370,19 @@ 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
```
## 根据文件中的提示,在中间空白处填入以下内容
根据配置文件中的提示,在中间空白处填入以下配置项。
```bash
## 定时器配置项
[Timer]
OnCalendar=
@@ -362,6 +401,7 @@ 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
@@ -374,6 +414,7 @@ systemctl status apt-daily-upgrade.timer
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.
```
## 5.硬件直通
@@ -386,21 +427,25 @@ Jun 25 14:35:06 node01 systemd[1]: Started apt-daily-upgrade.timer - Daily apt u
```bash
## 编辑 Grub 配置文件
vim /etc/default/grub
nano /etc/default/grub
```
`vim` 编辑器对话框中修改 `GRUB_CMDLINE_LINUX_DEFAULT` 参数,注意命令中间的空格。
在编辑器对话框中修改 `GRUB_CMDLINE_LINUX_DEFAULT` 参数,注意命令中间的空格。
```bash
## Intel 处理器添加参数
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
```
根据官方文档的说明,AMD 处理器下硬件直通功能将会自动打开,否则需要手动修改 `Grub` 配置文件。
```bash
## AMD 处理器添加参数
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"
```
修改并保存后,需要更新系统 `Grub`
@@ -416,9 +461,13 @@ update-grub
```bash
## 编辑系统配置文件
vim /etc/modules
nano /etc/modules
```
## 添加以下系统模块
在配置文件中添加以下配置项,并保存。
```bash
## 硬件直通配置项
vfio
vfio_iommu_type1
@@ -444,6 +493,7 @@ PVE 服务器重启完成后,再次使用 SSH 工具登录,并使用以下
dmesg | grep -e DMAR -e IOMMU -e AMD-Vi
## N6005 示例输出
[ 0.017937] ACPI: DMAR 0x00000000746C2000 000088 (v02 INTEL EDK2 00000002 01000013)
[ 0.017965] ACPI: Reserving DMAR table memory at [mem 0x746c2000-0x746c2087]
[ 0.047812] DMAR: IOMMU enabled
@@ -473,6 +523,7 @@ dmesg | grep -e DMAR -e IOMMU -e AMD-Vi
[ 2.290126] DMAR: dmar0: Using Queued invalidation
[ 2.290129] DMAR: dmar1: Using Queued invalidation
[ 2.290568] DMAR: Intel(R) Virtualization Technology for Directed I/O
```
检查系统 `IOMMU` 分组,使用以下命令。
@@ -482,6 +533,7 @@ dmesg | grep -e DMAR -e IOMMU -e AMD-Vi
find /sys/kernel/iommu_groups/ -type l
## N6005 示例输出
/sys/kernel/iommu_groups/7/devices/0000:00:1c.4
/sys/kernel/iommu_groups/15/devices/0000:04:00.0
/sys/kernel/iommu_groups/5/devices/0000:00:17.0
@@ -505,6 +557,7 @@ find /sys/kernel/iommu_groups/ -type l
/sys/kernel/iommu_groups/10/devices/0000:00:1c.7
/sys/kernel/iommu_groups/0/devices/0000:00:02.0
/sys/kernel/iommu_groups/9/devices/0000:00:1c.6
```
## 6.系统清理