使用 Systemd 定時器可靠地執行 ownCloud 後台作業
將按需作業運行替換為 systemd 定時器,該定時器每 15 分鐘執行一次 ownCloud 支援的 occ system:cron 命令。
若要讓 SLES 15 KVM 虛擬機器在主機重新啟動後自動啟動,請安裝 KVM 和 libvirt 管理元件,將該虛擬機器標記為自動啟動virsh autostart VM_NAME,並確保主機的 libvirt 守護程式在啟動期間啟動。自動啟動是針對每個虛擬機器的設定;單獨安裝 KVM 或啟動 libvirt 並不會自動啟動每個虛擬機器。
以下命令遵循 SUSE SLES 15 SP7 虛擬化指南。早期版本的服務包可能有所不同,因此在執行服務命令之前,請查閱相應的指南和已安裝的 systemd 單元。
對於將透過 libvirt 運作和管理虛擬機器的宿主機,需要同時安裝 KVM 伺服器和 KVM 工具。 SUSE 將 KVM 伺服器定義為最小的 QEMU/KVM 環境,將 KVM 工具定義為基於 libvirt 的管理堆疊,其中包括virsh本文所使用的工作流程。
安裝前,請確認機器的處理器和韌體支援硬體虛擬化。 SUSE 在其SLES 15 SP7 虛擬化指南中提供了 CPU 支援和所需軟體的文件。如果驗證報告硬體或設定問題,請在嘗試定義虛擬機器之前,先在韌體或主機配置中解決該問題;自動啟動標誌無法彌補主機無法執行 KVM 的情況。


在已安裝 YaST 的伺服器上,開啟 YaST 並選擇「虛擬化」>「安裝虛擬機器管理程式和工具」。如果缺少 YaST 虛擬化模組,SUSE 會提示該模組已包含在yast2-vm軟體包中。
選擇KVM 伺服器和KVM 工具,然後接受軟體包變更。 YaST 可能會提示您設定網路橋接。僅當該選項符合主機網路設計時才選擇它。更改生產主機的網路可能會中斷遠端訪問,因此請在應用更改之前規劃並安排橋接更改。
設定完成後,建立或匯入虛擬機,並確保將其定義為持久性 libvirt 網域。 SUSE 的指南指出,透過 YaST 設定 KVM 不需要重新啟動主機。
或者,SUSE 文件中提供了使用 Zypper 安裝模式的說明:sudo zypper install -t pattern kvm_server kvm_tools。選擇一種安裝方式,並在確認之前檢查軟體包事務。如果主機是從頭開始安裝的,KVM 虛擬化主機系統角色會在 SLES 安裝過程中安裝並設定相應的選項。
首先,透過系統 libvirt 連接列出網域,以便您可以使用準確的虛擬機器名稱:

sudo virsh -c qemu:///system list --all
此--all選項包含目前已關閉的虛擬機器。從輸出結果中選擇所需的持久虛擬機器。然後為該網域啟用自動啟動:

sudo virsh autostart VM_NAME
若要稍後撤銷此設置,請執行命令sudo virsh autostart --disable VM_NAME。這並非記憶體恢復:主機啟動後,虛擬機器將從其配置的磁碟正常啟動。此外,它不會自動選擇所有虛擬機器。請僅將此命令套用至應在此主機上執行的虛擬機器。
這取決於 SLES 主機使用的是 libvirt 的模組化守護程序還是傳統的單體式部署libvirtd。 SUSE 文件指出,SLES 15 SP7 預設啟用模組化守護進程,並建議將虛擬機器配置為自動啟動時,啟動相關的驅動程式服務。 QEMU 驅動程式服務是 [此處應填寫驅動程式服務名稱] virtqemud.service。在單體式部署中,SUSE 建議libvirtd.service使用 [此處應填入驅動程式服務名稱]。不要因為兩個單元名稱都存在就同時啟用兩種部署模式。
更改設備前,請先檢查主機上的設備設定:

systemctl status virtqemud.service libvirtd.service
如果主機使用模組化 libvirt 並且已安裝 QEMU 單元,請使用下列命令啟用它:
sudo systemctl enable --now virtqemud.service
如果主機已刻意配置為使用單體守護進程,請改用以下指令:

sudo systemctl enable --now libvirtd.service

使用模組化的 libvirt,虛擬網路和儲存管理可以使用獨立的驅動程式守護程式或套接字。如果虛擬機器依賴 libvirt 管理的網絡,則應使該網路也自動啟動;例如,SUSE 文件sudo virsh net-autostart default中提供了預定義default網路的說明。僅當虛擬機器實際使用該網路時才執行此操作。在主機層級配置的網橋不使用此 libvirt 網路設定。請驗證實際連接到虛擬機器的網絡,而不是假定其名稱default。
如果虛擬機器使用外部或網路掛載的磁碟,請確保其後端儲存可在啟動時可用。 SUSE 指出,libvirt 儲存池的活動狀態不會改變已連接到虛擬機器的磁碟區的可用性,但當儲存池必須處於活動狀態以進行主機端池管理或後續磁碟區操作時,啟用池自動啟動非常有用:sudo virsh pool-autostart POOL。請將 `<pool_name>` 替換POOL為實際的池名稱;請勿僅為了設定虛擬機器自動啟動而建立新池。

在規劃維護重新啟動之前,請檢查網域配置和守護程式狀態。使用sudo virsh dominfo VM_NAME指令確認自動啟動已啟用,並systemctl is-enabled virtqemud.service使用systemctl is-enabled libvirtd.service指令檢查您選擇的守護程式模式。如果第一個命令因找不到虛擬機器而失敗,請確保您正在查詢建立虛擬機器時使用的相同 libvirt 連線。
然後,在已批准的維護窗口期間進行測試。主機恢復後,執行命令sudo virsh -c qemu:///system list --all。選定的虛擬機器應顯示為正在運作;分別確認其網路和服務狀態。如果虛擬機器仍處於關閉狀態,請使用journalctl -b -u virtqemud.service或journalctl -b -u libvirtd.service(視情況而定)檢查活動守護程序的啟動日誌,並檢查是否有無法使用的儲存空間或所需的虛擬網路。這些情況取決於主機配置,因此守護程式日誌和虛擬機器的實際裝置配置將決定下一步的修復方案。
有關特定版本的服務詳細資訊、網路設定和客戶機管理,請參閱 SUSE 的SLES 15 SP7 libvirt 守護程序文件和VM 主機準備章節。
將按需作業運行替換為 systemd 定時器,該定時器每 15 分鐘執行一次 ownCloud 支援的 occ system:cron 命令。
透過 Apache、Nginx 或反向代理程式追蹤 WebDAV 請求,然後使用經過驗證的 PROPFIND 測試確認 ownCloud 同步功能正常。
透過設定其規範 URL 並從伺服器本身檢查 DNS、HTTPS 和反向代理路由,修復 Nextcloud 缺少出站位址警告的問題。
透過本機 Unix 套接字配置 APCu 和 Redis,以實現 Nextcloud 快取和檔案鎖定,並提供目前和舊版 Nextcloud 的步驟。
檢查 Nextcloud 的 cron 模式,修復其 systemd 服務和計時器,並驗證後台作業在啟動後以及每隔五分鐘運行一次。
啟用可靠的 Nextcloud 檔案鎖定,選擇適當的 Redis 或 Valkey 後端,並驗證警告是否清除,同時避免並發檔案變更的風險。
使用最新更新、HTTPS 和 HSTS、精確的反向代理信任以及針對公共伺服器的檢查,修復 Nextcloud 掃描中常見的錯誤。
為需要加密的儲存配置 Nextcloud SSE,保護加密金鑰,並在加密現有文件之前測量傳輸和 CPU 影響。
將 Nextcloud 的檔案搜尋連接到 Elasticsearch,索引文件內容,並選擇適合您的伺服器和安全需求的設定。
配置 Nextcloud 在規定的保留期後刪除已刪除的文件,可靠地安排後台作業,並避免執行清除所有使用者回收站的命令。