diff --git a/03.PVE系统调整.md b/03.PVE系统调整.md index b0cd705..0af60f1 100644 --- a/03.PVE系统调整.md +++ b/03.PVE系统调整.md @@ -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.系统清理