Proxmox Backup Server 深度实践:GC 清理、性能观测与可靠性设计

标签:Proxmox Backup Server、PBS、备份策略、垃圾回收、去重、SATA RAID、系统设计 背景概述 Proxmox Backup Server(PBS)是一款专为虚拟机和容器环境设计的企业级备份解决方案。在实际部署中,尽管其默认设置已可满足常规使用需求,但为了实现更高效的数据维护和资源利用,定期手动或自动执行 Prune、GC(Garbage Collection)、Verify 等操作成为常态。 本文分享一次完整的 PBS 数据清理流程,包括 GC 执行日志分析、系统资源监控、性能估算,以及对整个备份架构可靠性的深度理解。 系统架构简述 清理任务启动前准备 PBS 中的备份策略采用 每日自动增量备份 + 保留最近一个月快照 的方式进行。每日运行以下任务: 由于长期未执行 GC,此次执行前,系统中累计存在超 300 个旧备份版本,占用空间较大。 GC 操作详解与进度记录 Phase 1:Mark(标记阶段) GC 的第一阶段用于标记当前所有备份索引中引用到的 chunk。本次共有 240 个索引文件。由于硬盘为 SATA,IOPS 较低,导致该阶段耗时显著,总耗时超过 10 小时。 示例进度(部分): makefileCopyEdit2025-07-21T13:44:26+09:00: marked 36% (87 of 240 index files) …

使用 Certbot 管理多个域名的 SSL 证书

在部署网站或服务时,SSL 证书已经成为必不可少的配置项。如果你使用 Nginx 或 Apache 托管多个域名,一个非常常见的问题就是:如何高效管理多个域名的 HTTPS 证书? 幸运的是,Certbot 提供了强大的功能,能够自动为多个域名签发和续期 Let’s Encrypt 的免费 SSL 证书。本文将介绍如何使用 Certbot 管理多个域名的证书,提升安全性同时减轻运维负担。 Certbot 简介 Certbot 是由 EFF(电子前哨基金会)开发的一个开源工具,用于从 Let’s Encrypt 获取免费 SSL/TLS 证书,并自动为 Web 服务器进行配置。 安装 Certbot 以 Ubuntu 为例: sudo apt updatesudo apt install certbot python3-certbot-nginx 单次申请多个域名的证书 Certbot 支持一次为多个域名申请证书。这在多个子域名或绑定多个网站时非常有用。 例如: sudo certbot –nginx -d example.com …

如何手动升级 Nextcloud 的 News 应用并避免完整性检查失败

在 Nextcloud 中,手动升级应用是常见的操作之一。特别是当 Nextcloud 系统要求执行 upgrade 命令时,理解正确的操作顺序至关重要。本文将介绍如何手动升级 News 应用,并分享如何避免在升级过程中出现代码完整性检查失败的问题,同时解决新出现的数据库索引缺失问题。 问题的根源 在升级过程中,Nextcloud 会进行代码完整性检查,确保所有文件都没有被篡改或丢失。如果操作顺序不当,尤其是在备份和删除旧应用目录时,可能会导致完整性检查失败。这种情况通常发生在未先删除旧版本文件的情况下,导致系统检测到不匹配的文件。 正确的操作顺序 为了顺利完成 News 应用的手动升级,并避免完整性检查失败,建议按照以下步骤操作: 遇到的新问题:缺失数据库索引 在升级过程中,可能会出现以下错误提示: Detected some missing optional indices. Occasionally new indices are added (by Nextcloud or installed applications) to improve database performance. Adding indices can sometimes take awhile and temporarily hurt performance so this is …

在 Ubuntu 22.04 上将 PHP 升级到 8.3 并优化 Nextcloud 的完整过程

本文记录了在 Ubuntu 22.04 系统中,将默认的 PHP 8.1 环境升级到 PHP 8.3,并为 Apache + Nextcloud 环境配置相关扩展、性能优化参数、错误修复等完整过程。适用于 Nextcloud 30 及以上版本,尤其推荐用于 Nextcloud 31、32 部署者参考。 🧱 环境说明 🪜 操作步骤详解 1️⃣ 添加 PHP 8.3 PPA 源 Ubuntu 默认软件源不提供 PHP 8.3,可通过 Ondřej Surý 的 PPA 获取: sudo add-apt-repository ppa:ondrej/phpsudo apt update 该 PPA 由 PHP 社区知名前端维护者提供,广泛用于生产环境。 2️⃣ 安装 …

修复 Nextcloud 的 .well-known 检查失败问题(Apache + 反向代理)

在部署 Nextcloud 时,管理后台有时会提示如下错误: Could not check that your web server serves .well-known correctly.Please check manually. To allow this check to run you have to make sure that your Web server can connect to itself… 这类警告常见于使用 HTTPS 的场景,尤其是通过反向代理(如 Nginx)为 Apache 后端提供 TLS 加密时。其根本原因多半在于 .well-known 路径未正确配置,或其返回了错误的协议(HTTP 而非 HTTPS)。 错误表现 使用 curl 测试发现: …

Nextcloud 提示“Missing Optional Indices”的解决方法

在一次 Nextcloud 运维过程中,系统后台出现了如下提示: Detected some missing optional indices.Occasionally new indices are added (by Nextcloud or installed applications) to improve database performance… 这类提示并不表示系统出现了严重错误,而是提醒数据库中缺少某些非强制性的索引。虽然这些索引不是必需的,但它们可以显著提高系统在处理相关数据时的性能,尤其是在数据量较大的时候。 🧾 问题详情 Nextcloud 提示缺失以下索引: 这两个索引与系统标签和联系人模块相关,缺失时可能会导致某些操作变慢,特别是在系统有大量标签或联系人数据时。 🛠 解决步骤 为了解决这个问题,只需使用 Nextcloud 提供的 occ 命令行工具执行以下命令: sudo -u www-data php occ db:add-missing-indices 这条命令会扫描数据库结构,并自动添加缺失的索引。实际运行时,输出日志如下: Adding additional systag_objecttype index to the oc_systemtag_object_mapping table, this …

使用 occ maintenance:repair –include-expensive 解决 Nextcloud MIME 类型迁移提示问题

在维护或升级 Nextcloud 实例时,系统可能会提示如下警告信息: One or more mimetype migrations are available.Occasionally new mimetypes are added to better handle certain file types. Migrating the mimetypes take a long time on larger instances so this is not done automatically during upgrades.Use the command occ maintenance:repair –include-expensive to perform the migrations. 该提示说明系统中存在尚未迁移的 MIME 类型(用于识别不同文件格式),这是由于新版 …

解决 Nextcloud Talk 报错:“No High-performance backend configured”

在部署 Nextcloud 过程中,可能会遇到如下警告信息: No High-performance backend configured – Running Nextcloud Talk without the High-performance backend only scales for very small calls (max. 2–3 participants). Please set up the High-performance backend to ensure calls with multiple participants work seamlessly. 该提示来源于 Nextcloud Talk 应用,用于提醒管理员:若未配置高性能后端(High-performance backend),多人视频/语音通话将受到限制,最多支持 2–3 人。 📌 原因分析 Nextcloud Talk 默认使用浏览器端的点对点通信(peer-to-peer)。该模式无需额外服务器支持,但扩展性差,尤其在多用户会议中会带来性能瓶颈。 …

修复 Nextcloud occ setupchecks 卡顿问题:一处配置引发的阻塞

在管理 Nextcloud 实例时,使用命令行运行以下指令以检查系统配置是否正确,是一项常规操作: php occ setupchecks 但在某一部署环境中,这条命令卡在执行状态,迟迟无输出,也无错误提示;Web 页面上“后台设置”中的系统检查同样无法完成,界面持续转圈。 最终,这一问题仅由一处配置项引起:trusted_domains。 问题表现 一切看似运行良好,但检查命令却始终无法完成。 问题分析 Nextcloud 在执行 setupchecks 时,会验证 Web 服务器是否能正确响应特定文件(如 JavaScript 模块 .mjs),这通常通过内部 HTTP 请求实现。 此过程使用了 Nextcloud 的 CheckServerResponseTrait,其行为为: 遍历所有配置在 trusted_domains 中的域名和 IP,对每一个地址发起 HTTP 请求(如访问 .mjs 文件)。 如果某些地址无法访问、证书无效、反向代理未配置,或请求超时,这些失败会直接影响 CLI 工具的运行,导致整个 setupchecks 阻塞。 配置示例(问题前) 在配置文件 config.php 中,trusted_domains 项原本包含了大量条目: ‘trusted_domains’ => array ( 0 …

使用 yt-dlp 下载 YouTube 受限视频时遇到登录验证的解决方案

在使用 yt-dlp 下载 YouTube 视频的过程中,有时会遇到如下报错信息: ERROR: [youtube] <video_id>: Sign in to confirm you’re not a bot. Use –cookies-from-browser or –cookies for the authentication. 这是由于视频被 YouTube 标记为需要登录身份验证才能访问,可能包括以下情况: 为了解决这一问题,需要向 yt-dlp 提供一个有效的登录会话,也就是“cookies”。 一、解决思路 通过将浏览器中登录 YouTube 后的 cookies 导出为文件,并在 yt-dlp 中使用 –cookies 参数,可以模拟已登录的访问环境,绕过人机验证或访问限制。 二、导出 YouTube Cookies 的方法 推荐使用浏览器插件 Get cookies.txt: 三、使用 cookies.txt 下载视频 将导出的 …