diff --git a/content/de/developer/integration/backup/images/veeam-backup-job-success.webp b/content/de/developer/integration/backup/images/veeam-backup-job-success.webp new file mode 100644 index 000000000..33a0a9480 Binary files /dev/null and b/content/de/developer/integration/backup/images/veeam-backup-job-success.webp differ diff --git a/content/de/developer/integration/backup/images/veeam-repository-added.webp b/content/de/developer/integration/backup/images/veeam-repository-added.webp new file mode 100644 index 000000000..4e251255f Binary files /dev/null and b/content/de/developer/integration/backup/images/veeam-repository-added.webp differ diff --git a/content/de/developer/integration/backup/images/veeam-repository-bucket.webp b/content/de/developer/integration/backup/images/veeam-repository-bucket.webp new file mode 100644 index 000000000..f5f11a04b Binary files /dev/null and b/content/de/developer/integration/backup/images/veeam-repository-bucket.webp differ diff --git a/content/de/developer/integration/backup/images/veeam-restore-complete.webp b/content/de/developer/integration/backup/images/veeam-restore-complete.webp new file mode 100644 index 000000000..fd5af84dd Binary files /dev/null and b/content/de/developer/integration/backup/images/veeam-restore-complete.webp differ diff --git a/content/de/developer/integration/backup/index.md b/content/de/developer/integration/backup/index.md index 1eef57c41..8c7323814 100644 --- a/content/de/developer/integration/backup/index.md +++ b/content/de/developer/integration/backup/index.md @@ -11,5 +11,6 @@ Verwenden Sie **RustFS** als Objektspeicher-Backend für Backup-Tools, die Repos - [Velero](./velero.md) - [Kopia](./kopia.md) - [Longhorn](./longhorn.md) +- [Veeam](./veeam.md) Halten Sie Backup-Jobs in einem eigenen Bucket und Präfix und verwenden Sie Zugangsdaten, die auf die erforderlichen Bucket-Operationen beschränkt sind. \ No newline at end of file diff --git a/content/de/developer/integration/backup/meta.json b/content/de/developer/integration/backup/meta.json index dac5156cd..f09cf9599 100644 --- a/content/de/developer/integration/backup/meta.json +++ b/content/de/developer/integration/backup/meta.json @@ -4,6 +4,7 @@ "kopia", "longhorn", "restic", - "velero" + "velero", + "veeam" ] } diff --git a/content/de/developer/integration/backup/veeam.md b/content/de/developer/integration/backup/veeam.md new file mode 100644 index 000000000..408149f51 --- /dev/null +++ b/content/de/developer/integration/backup/veeam.md @@ -0,0 +1,162 @@ +--- +title: "Veeam Backup & Replication mit RustFS" +description: "Konfigurieren Sie RustFS als S3-kompatibles Veeam-Backup-Repository, bereiten Sie eine Enterprise- oder Testlizenz für einen POC vor und prüfen Sie Windows-Backup und Dateiwiederherstellung." +--- + +Veeam Backup & Replication (VBR) ist eine Enterprise-Backup-Plattform, die Sicherungsdaten in S3-kompatiblem Objektspeicher ablegt. Diese Anleitung zeigt, wie Sie RustFS als VBR-Objektspeicher-Repository registrieren, mit dem Veeam Agent einen gesamten Windows-Computer sichern und eine Datei aus dem gespeicherten Backup wiederherstellen. + +Sie benötigen eine über HTTPS erreichbare RustFS-Instanz, einen dedizierten Backup-Bucket, einen Windows-Computer mit VBR 13 und eine Veeam-Lizenz mit Objektspeicher-Backup. Laden Sie VBR von der [offiziellen Veeam-Downloadseite](https://www.veeam.com/products/downloads.html) herunter. Dimensionieren Sie den Backup-Server nach den [Veeam-Systemanforderungen](https://helpcenter.veeam.com/docs/vbr/userguide/system_requirements_backup_server.html?ver=13), nicht nach der Ausstattung einer kleinen Labor-VM. + +:::note[Lizenzanforderung] + +Backups auf S3-kompatiblen Objektspeicher sind eine Enterprise-Funktion von Veeam. Kaufen Sie für den Produktivbetrieb eine Veeam-Enterprise-Lizenz oder eine andere kostenpflichtige Lizenz, die diese Funktion umfasst. Für einen Proof of Concept (POC) können Sie eine [kostenlose 30-Tage-Testlizenz für Veeam Data Platform anfordern](https://www.veeam.com/products/data-platform-trial.html) und vor dem Job installieren. Der Download oder die Installation von VBR allein aktiviert diese Funktion nicht. In der geprüften Konfiguration konnte Community Edition das Repository hinzufügen, verweigerte jedoch ohne die erforderliche Lizenz den Objektspeicher-Backup-Job. + +::: + +## Geprüfte Konfiguration + +Der berichtete Test verwendete VBR **13.1.2.57**, RustFS **1.0.1**, ein Windows-Agent-Backup und ein Repository im Verbindungsmodus **Direct**. Ein Backup-Job und eine Dateiwiederherstellung waren erfolgreich. Dies ist ein Integrationstest, keine Veeam-Zertifizierung oder Prüfung von Bare-Metal-Wiederherstellung, erzwungener Aufbewahrung oder sämtlichen Veeam-Workloads. Die beobachteten Objekte von ungefähr 1 MiB sind keine Zusicherung einer festen Blockgröße. + +## Architektur + +```mermaid +flowchart LR + Computer["Windows-Computer + (Veeam Agent)"] -.->|Verwaltung / TLS| VBR["VBR-Server"] + Computer -->|S3 / SigV4 HTTPS| Traefik["Ingress / TLS"] + VBR -.->|Repository-Konfiguration / S3 HTTPS| Traefik + Traefik --> RustFS["RustFS"] + RustFS --> Bucket["veeam-repo + (Versionierung + Object Lock)"] +``` + +Im Modus Direct sendet der Agent Backup-Daten an RustFS; VBR verwaltet Job und Repository. Bei einer Gateway-Konfiguration laufen die Daten über den ausgewählten Gateway- oder Mount-Server. Der übertragende Agent oder Gateway muss den RustFS-HTTPS-Endpunkt erreichen und dessen Zertifikat vertrauen können. Siehe [Verbindungsmodi für Veeam Agent](https://helpcenter.veeam.com/docs/vbr/userguide/agents_object_storage.html?ver=13). Das Objektschlüsselpräfix lautet `veeam`, der Bucket `veeam-repo`. + +## 1. Bucket und Zugangsdaten vorbereiten + +Erstellen Sie einen dedizierten Bucket mit Versionierung und Object Lock (Objektsperre). Versionierung ist Voraussetzung für Object Lock und damit für unveränderliche Veeam-Backups: + +```bash +rc bucket create /veeam-repo --with-lock +rc bucket version info /veeam-repo +``` + +Verwenden Sie die folgende auf den Bucket beschränkte Ausgangsrichtlinie und prüfen Sie sie für Ihren Veeam-Modus. Bucket- und Objektaktionen haben unterschiedliche Ressourcenbereiche. `s3:CreateBucket` entfällt, weil der Bucket bereits existiert. Dies ist keine nachgewiesene Minimalrichtlinie: Die Laborrichtlinie enthält Legal-Hold-Verwaltung und das Umgehen der Governance-Aufbewahrung. Prüfen Sie diese Rechte vor dem Produktivbetrieb und entfernen Sie unnötige Berechtigungen. Insbesondere erlaubt `s3:BypassGovernanceRetention` das Umgehen des Governance-Schutzes; diese Zugangsdaten garantieren daher keinen Schutz vor dem Löschen geschützter Versionen. + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": ["s3:GetObject","s3:PutObject","s3:DeleteObject", + "s3:GetObjectVersion","s3:DeleteObjectVersion", + "s3:AbortMultipartUpload","s3:ListMultipartUploadParts", + "s3:PutObjectRetention","s3:GetObjectRetention", + "s3:PutObjectLegalHold","s3:GetObjectLegalHold", + "s3:BypassGovernanceRetention"], + "Resource": ["arn:aws:s3:::veeam-repo/*"] + }, + { + "Effect": "Allow", + "Action": ["s3:ListBucket","s3:ListBucketVersions","s3:GetBucketLocation", + "s3:GetBucketVersioning","s3:GetBucketObjectLockConfiguration", + "s3:ListBucketMultipartUploads"], + "Resource": ["arn:aws:s3:::veeam-repo"] + } + ] +} +``` + +```bash +rc admin policy create veeam-repo-rw +rc admin user add veeam +rc admin policy attach veeam-repo-rw --user veeam +``` + +Veeam verlangt HTTPS für S3-kompatiblen Objektspeicher. Sie können TLS mit Traefik oder Nginx vor RustFS terminieren. Der SAN muss den Endpunkt-Hostnamen abdecken; VBR und der übertragende Agent oder Gateway müssen der Zertifikatskette vertrauen. Installieren Sie bei einer privaten CA deren Stammzertifikat in den entsprechenden Vertrauensspeichern. Importieren Sie kein beliebiges Endpunktzertifikat als vertrauenswürdige CA und deaktivieren Sie die Prüfung nicht. + +Konfigurieren Sie für diesen Backup-Bucket keine Lifecycle-Ablauf- oder Übergangsregeln; Veeam soll die Backup-Aufbewahrung verwalten. Siehe [Objektspeicher-Einschränkungen für Veeam Agent](https://helpcenter.veeam.com/docs/agentforwindows/userguide/backup_to_object_storage.html). + +## 2. RustFS-Repository in VBR hinzufügen + +Gehen Sie in der VBR-Konsole zu **Backup Infrastructure → Backup Repositories → Add Repository → Object storage → S3 Compatible**: + +1. Service point: Ihr RustFS-HTTPS-Endpunkt, Region: `us-east-1`. +2. Credentials: Access Key und Secret Key des Benutzers `veeam`. Wählen Sie **Direct** für den dargestellten Datenpfad oder einen Gateway, wenn direkter Zugriff ungeeignet ist. +3. Bucket: `veeam-repo`, Folder: `veeam`. +4. Falls ein neuer Bucket noch keine Präfixe enthält, erstellen Sie mit einem S3-Client ein Objekt unter `veeam/` und wählen Sie Folder über **Browse**. +5. Aktivieren Sie für einen Test unveränderlicher Backups **Make backups immutable** und prüfen Sie die Objektaufbewahrung separat. Object Lock im Bucket allein macht nicht jedes Backup unveränderlich. + +![Repository-Assistent: Auswahl von veeam-repo, Ordner und optionaler Einstellung für unveränderliche Backups](./images/veeam-repository-bucket.webp) + +Wenn Veeam meldet, dass die automatische Bucket-Bereitstellung mit Access Denied fehlschlägt, wählen Sie **Yes**, um sie zu deaktivieren und fortzufahren — der Bucket existiert bereits, und der IAM-Benutzer kann absichtlich keine Buckets anlegen. + +Konfigurieren Sie für Agent-Backups ausdrücklich **Set Access Permissions → Security** gemäß [Veeams Anleitung für S3-kompatiblen Repository-Zugriff](https://helpcenter.veeam.com/docs/vbr/userguide/access_permissions.html?ver=13). **Provided by the backup server** verwendet einen Gateway- oder Mount-Server, auch wenn das Repository Direct anzeigt. Tatsächlicher Direct-Zugriff erfordert eine kompatible IAM/STS-Konfiguration oder **Agents share credentials to object storage repository**. Letzteres gibt Repository-Zugangsdaten an geschützte Computer weiter und ist weniger sicher; nutzen Sie es nur bei Bedarf in einem isolierten POC. Allgemeine IAM/STS-Unterstützung belegt nicht die Kompatibilität mit Veeams Zugangsdatenverfahren; prüfen Sie den Modus vor dem Produktivbetrieb. + +Der Laborbericht dokumentiert die Security-Auswahl nicht und bestätigt daher nicht unabhängig, dass die Daten einen Gateway umgingen. + +Bei Erfolg erscheint das Repository als **S3-compatible**. Used Space ist eine Veeam-Verbrauchsangabe, keine unabhängige Messung der RustFS-Kapazität: + +![RustFS-Repository unter Backup Repositories als S3-compatible aufgeführt](./images/veeam-repository-added.webp) + +## 3. Geschützten Computer registrieren + +Der Backup-Job allein installiert den Veeam Agent nicht. Verwenden Sie eine Protection Group: + +1. **Inventory → Physical and Cloud Infrastructure → Add protection group…** +2. Typ **Individual computers**: Fügen Sie den Computer mit seinem tatsächlichen Hostnamen und lokalen Administrator-Zugangsdaten in der Form `HOSTNAME\user` hinzu. +3. Lassen Sie **Install Veeam Backup & Replication Agent** aktiviert und klicken Sie auf Apply. + +:::warning[Windows-UAC-Remoteeinschränkungen] + +Prüfen Sie zuerst Hostname, Zugangsdaten, Erreichbarkeit und Firewall. Nur bei bestätigter UAC-Remotefilterung eines lokalen Kontos sollte ein Administrator erwägen, `LocalAccountTokenFilterPolicy` unter `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System` auf `1` zu setzen. Dies erlaubt erhöhte Remotetoken für lokale Administratoren und ist keine allgemeine Lösung für Zugriffsfehler. Beschränken Sie den Zugriff auf ein vertrauenswürdiges Verwaltungsnetz, dokumentieren Sie den vorherigen Wert und stellen Sie ihn wieder her, sobald er nicht mehr benötigt wird; prüfen Sie anschließend die Agent-Verwaltung. Siehe [Microsofts UAC-Remoteeinschränkungen](https://learn.microsoft.com/en-us/troubleshoot/windows-server/windows-security/user-account-control-and-remote-restriction). Starten Sie nach der Installation neu, wenn Backup agent **Reboot required** anzeigt. + +::: + +## 4. Backup-Job ausführen + +1. **Home → Backup Job → Windows computer…** +2. Computers: **From protection group**, Backup Mode: **Entire computer**. +3. Storage: Backup repository = **RustFS**, Aufbewahrung nach Bedarf. +4. Finish, dann klicken Sie mit der rechten Maustaste auf den Job und wählen **Start**. + +Nach Abschluss des Jobs zeigt die Jobliste **Last Result: Success**, und der Wiederherstellungspunkt erscheint unter **Home → Backups → Object Storage → RustFS Veeam Backup**: + +![Windows-Agent-Backup-Job mit Last Result Success](./images/veeam-backup-job-success.webp) + +Prüfen Sie die Objekte in RustFS: + +```bash +rc object find /veeam-repo/ | tail -1 +``` + +Im Test wurden Datenobjekte unter `Veeam/Backup/veeam/Clients/{agent-id}/…` beobachtet. Das Auflisten eines Objekts allein bestätigt weder die Vollständigkeit des Backups noch einen Wiederherstellungspunkt oder unveränderliche Aufbewahrung. + +## 5. Dateien wiederherstellen + +1. **Home → Backups → Object Storage → RustFS Veeam Backup → **. +2. Klicken Sie mit der rechten Maustaste auf den Wiederherstellungspunkt → **Restore guest files…** → Browse. +3. Wählen Sie im Backup Browser eine Datei aus, stellen Sie sie in einen Zielordner wieder her und prüfen Sie den Inhalt. + +![Dateiwiederherstellung aus dem RustFS-Backup über den Backup Browser](./images/veeam-restore-complete.webp) + +Eine erfolgreiche Wiederherstellung mit übereinstimmendem Inhalt prüft den Backup- und Dateiwiederherstellungsablauf für diese Datei, nicht sämtliche Wiederherstellungspunkte. Prüfen Sie für einen POC mit unveränderlichen Backups zusätzlich Aufbewahrungsmodus und Ablaufdatum sowie mit kontrollierten Testdaten, dass geschützte Versionen während der Aufbewahrung nicht gelöscht werden können. Führen Sie keine destruktiven Prüfungen an produktiven Backups aus. + +## Fehlerbehebung + +| Symptom | Lösung | +|---|---| +| "Backup to object storage requires a valid Enterprise edition license" | Installieren Sie eine Lizenz mit Objektspeicher-Backup (Trial oder kostenpflichtig); Community Edition kann solche Jobs nicht ausführen | +| "backup agent is missing" während des Jobs | Registrieren Sie die Maschine über eine Protection Group (Schritt 3); der Job-Assistent installiert keine Agents | +| Agent-Push schlägt mit Access Denied fehl | Prüfen Sie zuerst Zugangsdaten, Hostname und Firewall; beachten Sie die UAC-Warnung nur bei bestätigter Remotefilterung | +| Spalte Backup agent zeigt "Reboot required" | Starten Sie die Maschine neu, um die Agent-Installation abzuschließen | +| Konsole zeigt HTTP 502 direkt nach dem Boot | Die Veeam-Dienste starten noch; wiederholen Sie, wenn `VeeamBackupSvc` und der PostgreSQL-Dienst Running sind | +| Folder-Liste im Assistenten ist leer | Die Folder-Auswahl listet bestehende Präfixe; legen Sie zuerst ein Platzhalter-Objekt unter dem Präfix an, dann Browse | +| Repository-Kapazität zeigt N/A | SOSAPI-Berichte sind für das Backup nicht erforderlich; der Support wird in [rustfs/rustfs#1511](https://github.com/rustfs/rustfs/issues/1511) verfolgt | + +## Nächste Schritte + +- [Veeam-Downloads](https://www.veeam.com/products/downloads.html) und [POC-Testlizenz](https://www.veeam.com/products/data-platform-trial.html). +- [Objektspeicher-Anforderungen für Veeam Agent](https://helpcenter.veeam.com/docs/agentforwindows/userguide/backup_to_object_storage.html). +- [RustFS Object Lock](../../../administration/data/object/object-lock.md) und [Bucket-Versionierung](../../../administration/data/object/versioning.md). diff --git a/content/en/developer/integration/backup/images/veeam-backup-job-success.webp b/content/en/developer/integration/backup/images/veeam-backup-job-success.webp new file mode 100644 index 000000000..33a0a9480 Binary files /dev/null and b/content/en/developer/integration/backup/images/veeam-backup-job-success.webp differ diff --git a/content/en/developer/integration/backup/images/veeam-repository-added.webp b/content/en/developer/integration/backup/images/veeam-repository-added.webp new file mode 100644 index 000000000..4e251255f Binary files /dev/null and b/content/en/developer/integration/backup/images/veeam-repository-added.webp differ diff --git a/content/en/developer/integration/backup/images/veeam-repository-bucket.webp b/content/en/developer/integration/backup/images/veeam-repository-bucket.webp new file mode 100644 index 000000000..f5f11a04b Binary files /dev/null and b/content/en/developer/integration/backup/images/veeam-repository-bucket.webp differ diff --git a/content/en/developer/integration/backup/images/veeam-restore-complete.webp b/content/en/developer/integration/backup/images/veeam-restore-complete.webp new file mode 100644 index 000000000..fd5af84dd Binary files /dev/null and b/content/en/developer/integration/backup/images/veeam-restore-complete.webp differ diff --git a/content/en/developer/integration/backup/index.md b/content/en/developer/integration/backup/index.md index b4208b6e8..dc926997d 100644 --- a/content/en/developer/integration/backup/index.md +++ b/content/en/developer/integration/backup/index.md @@ -11,5 +11,6 @@ Use **RustFS** as the object storage backend for backup tools that store reposit - [Velero](./velero.md) - [Kopia](./kopia.md) - [Longhorn](./longhorn.md) +- [Veeam](./veeam.md) Keep backup jobs in a dedicated bucket and prefix, and use credentials scoped to the required bucket operations. \ No newline at end of file diff --git a/content/en/developer/integration/backup/meta.json b/content/en/developer/integration/backup/meta.json index dac5156cd..f09cf9599 100644 --- a/content/en/developer/integration/backup/meta.json +++ b/content/en/developer/integration/backup/meta.json @@ -4,6 +4,7 @@ "kopia", "longhorn", "restic", - "velero" + "velero", + "veeam" ] } diff --git a/content/en/developer/integration/backup/veeam.md b/content/en/developer/integration/backup/veeam.md new file mode 100644 index 000000000..1d33524a1 --- /dev/null +++ b/content/en/developer/integration/backup/veeam.md @@ -0,0 +1,162 @@ +--- +title: "Veeam Backup & Replication with RustFS" +description: "Configure RustFS as a Veeam S3-compatible backup repository, prepare an Enterprise or trial license for a POC, and validate Windows backup and file recovery." +--- + +Veeam Backup & Replication (VBR) is an enterprise backup platform that stores backup data in S3-compatible object storage. This guide shows how to register RustFS as a VBR object storage repository, back up an entire Windows computer with the Veeam Agent, and restore a file from the stored backup. + +You need a running RustFS instance reachable over HTTPS, a bucket dedicated to backups, a Windows machine with VBR 13 installed, and a Veeam license that includes object storage backup. Download VBR from the [official Veeam download page](https://www.veeam.com/products/downloads.html) and size the backup server according to [Veeam's system requirements](https://helpcenter.veeam.com/docs/vbr/userguide/system_requirements_backup_server.html?ver=13), not a small lab VM configuration. + +:::note[License requirement] + +Backing up to S3-compatible object storage is an enterprise feature of Veeam. Purchase a Veeam Enterprise edition license, or another paid license that includes this feature, for production use. For a proof of concept (POC), [request a free 30-day Veeam Data Platform trial license](https://www.veeam.com/products/data-platform-trial.html) and install it before running the job. Downloading or installing VBR alone does not enable this feature. In the validated configuration, Community Edition could add the repository but refused to run the object storage backup job without the required license. + +::: + +## Validated configuration + +The reported test used VBR **13.1.2.57**, RustFS **1.0.1**, a Windows Agent backup, and a repository configured for **Direct** connection. A backup job and one file-level restore completed successfully. This is an integration test, not a Veeam certification or a validation of bare-metal recovery, retention enforcement, or every Veeam workload. The roughly 1 MiB objects observed in this test are not a fixed block-size guarantee. + +## Architecture + +```mermaid +flowchart LR + Computer["Windows computer + (Veeam Agent)"] -.->|Management / TLS| VBR["VBR server"] + Computer -->|S3 / SigV4 HTTPS| Traefik["Ingress / TLS"] + VBR -.->|Repository setup / S3 HTTPS| Traefik + Traefik --> RustFS["RustFS"] + RustFS --> Bucket["veeam-repo + (versioning + Object Lock)"] +``` + +In Direct mode, the Agent sends backup data to RustFS; VBR manages the job and repository. A gateway configuration instead sends data through the selected gateway or mount server. The Agent or gateway that actually transfers data must be able to reach and trust the RustFS HTTPS endpoint. See [Veeam Agent connection modes](https://helpcenter.veeam.com/docs/vbr/userguide/agents_object_storage.html?ver=13). The object-key prefix in this guide is `veeam`, and the bucket is `veeam-repo`. + +## 1. Prepare the bucket and credentials + +Create a dedicated bucket with versioning and Object Lock enabled. Versioning is a prerequisite for the Object Lock that Veeam immutability relies on: + +```bash +rc bucket create /veeam-repo --with-lock +rc bucket version info /veeam-repo +``` + +Use the following bucket-scoped starting policy and validate it with your selected Veeam mode. Bucket operations and object operations use separate resource scopes. The policy omits `s3:CreateBucket` because the bucket already exists. This is not a proven minimum-permission policy: the lab policy includes legal-hold management and governance-retention bypass. Review whether those permissions are required and remove unnecessary privileges before production use. In particular, `s3:BypassGovernanceRetention` permits bypassing governance-mode protection; do not assume this credential cannot delete protected versions. + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": ["s3:GetObject","s3:PutObject","s3:DeleteObject", + "s3:GetObjectVersion","s3:DeleteObjectVersion", + "s3:AbortMultipartUpload","s3:ListMultipartUploadParts", + "s3:PutObjectRetention","s3:GetObjectRetention", + "s3:PutObjectLegalHold","s3:GetObjectLegalHold", + "s3:BypassGovernanceRetention"], + "Resource": ["arn:aws:s3:::veeam-repo/*"] + }, + { + "Effect": "Allow", + "Action": ["s3:ListBucket","s3:ListBucketVersions","s3:GetBucketLocation", + "s3:GetBucketVersioning","s3:GetBucketObjectLockConfiguration", + "s3:ListBucketMultipartUploads"], + "Resource": ["arn:aws:s3:::veeam-repo"] + } + ] +} +``` + +```bash +rc admin policy create veeam-repo-rw +rc admin user add veeam +rc admin policy attach veeam-repo-rw --user veeam +``` + +Veeam requires HTTPS for S3-compatible object storage. You can terminate TLS in front of RustFS with Traefik or Nginx. Use a certificate whose SAN covers the endpoint hostname and whose chain is trusted by the VBR server and the Agent or gateway that transfers data. For a private CA, install its root CA certificate in the appropriate trusted-root stores; do not import an arbitrary endpoint certificate as a trusted CA or disable verification. + +Keep lifecycle expiration and transition rules off this dedicated backup bucket; let Veeam manage backup retention. See [Veeam Agent object storage limitations](https://helpcenter.veeam.com/docs/agentforwindows/userguide/backup_to_object_storage.html). + +## 2. Add the RustFS repository in VBR + +In the VBR console, go to **Backup Infrastructure → Backup Repositories → Add Repository → Object storage → S3 Compatible**: + +1. Service point: your RustFS HTTPS endpoint, Region: `us-east-1`. +2. Credentials: the `veeam` access key and secret key. Select **Direct** for the illustrated data path; choose a gateway when direct access is unsuitable. +3. Bucket: `veeam-repo`, Folder: `veeam`. +4. Before selecting Folder, create an object under `veeam/` with an S3 client if the fresh bucket has no prefixes, then use **Browse**. +5. If testing immutable backups, enable **Make backups immutable** and validate object retention separately. Enabling Object Lock on a bucket alone does not make every backup immutable. + +![Repository wizard: select veeam-repo, a folder, and the optional immutable-backup setting](./images/veeam-repository-bucket.webp) + +When Veeam reports that automatic bucket provisioning fails with Access Denied, choose **Yes** to disable it and proceed — the bucket exists and the IAM user intentionally cannot create buckets. + +For Agent backups, explicitly configure **Set Access Permissions → Security** as described in [Veeam's S3-compatible repository access instructions](https://helpcenter.veeam.com/docs/vbr/userguide/access_permissions.html?ver=13). **Provided by the backup server** uses a gateway or mount server, even when the repository says Direct. True Direct access requires a compatible IAM/STS configuration or **Agents share credentials to object storage repository**. The latter exposes the repository credentials to protected machines and is less secure; use it only in an isolated POC if needed. Generic IAM/STS support is not proof that Veeam's credential workflow is compatible; validate the selected mode before production use. + +The lab report does not record the Security selection, so it does not independently confirm that data bypassed a gateway. + +On success, the repository is listed as **S3-compatible**. Used Space is Veeam's reported usage, not an independent measurement of RustFS capacity: + +![RustFS repository listed under Backup Repositories as S3-compatible](./images/veeam-repository-added.webp) + +## 3. Enroll the protected computer + +The backup job alone does not install the Veeam agent. Use a protection group: + +1. **Inventory → Physical and Cloud Infrastructure → Add protection group…** +2. Type **Individual computers**, add the machine with its real hostname and local administrator credentials in `HOSTNAME\user` form. +3. Keep **Install Veeam Backup & Replication Agent** enabled, then Apply. + +:::warning[Windows UAC remote restrictions] + +First check the hostname, credentials, connectivity, and firewall. Only if the failure is confirmed to be local-account UAC remote filtering should an administrator consider setting `LocalAccountTokenFilterPolicy` to `1` under `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System`. This allows elevated remote tokens for local administrators; it is not a general access-denied fix. Restrict access to a trusted management network, record the previous setting, and restore it when no longer required, checking that agent management still works. See [Microsoft's UAC remote restrictions](https://learn.microsoft.com/en-us/troubleshoot/windows-server/windows-security/user-account-control-and-remote-restriction). After installation, reboot if the Backup agent column shows **Reboot required**. + +::: + +## 4. Run the backup job + +1. **Home → Backup Job → Windows computer…** +2. Computers: **From protection group**, Backup Mode: **Entire computer**. +3. Storage: Backup repository = **RustFS**, retention as needed. +4. Finish, then right-click the job and select **Start**. + +After the job completes, the job list shows **Last Result: Success** and the restore point appears under **Home → Backups → Object Storage → RustFS Veeam Backup**: + +![Windows Agent backup job with Last Result shown as Success](./images/veeam-backup-job-success.webp) + +Verify the objects in RustFS: + +```bash +rc object find /veeam-repo/ | tail -1 +``` + +The test observed data objects under `Veeam/Backup/veeam/Clients/{agent-id}/…`. Listing an object alone does not verify backup completeness, a restore point, or immutable retention. + +## 5. Restore files + +1. **Home → Backups → Object Storage → RustFS Veeam Backup → **. +2. Right-click the restore point → **Restore guest files…** → Browse. +3. Pick a file in the Backup Browser, restore it to a target folder, and verify its content. + +![File-level restore from the RustFS-backed backup via the Backup Browser](./images/veeam-restore-complete.webp) + +A successful restore with matching file content validates the backup-to-file-recovery workflow for that file. It does not prove every restore point is recoverable. For an immutable-backup POC, also inspect retention mode and expiry and verify that protected versions cannot be deleted during retention using controlled test data; do not run destructive checks against production backups. + +## Troubleshooting + +| Symptom | Fix | +|---|---| +| "Backup to object storage requires a valid Enterprise edition license" | Install a license that includes object storage (trial or paid); Community Edition cannot run object storage jobs | +| "backup agent is missing" during the job | Enroll the machine through a protection group (step 3); the job wizard does not push-install agents | +| Agent push fails with access denied | Check credentials, hostname, and firewall first; use the UAC warning above only for a confirmed remote-filtering issue | +| Backup agent column shows "Reboot required" | Reboot the machine to complete the agent installation | +| Console shows HTTP 502 right after boot | Veeam services are still starting; retry after `VeeamBackupSvc` and the PostgreSQL service are Running | +| Folder list is empty in the wizard | The folder picker lists existing prefixes; create a placeholder object under the prefix first, then Browse | +| Repository capacity shows N/A | SOSAPI reporting is not required for backup; support is tracked in [rustfs/rustfs#1511](https://github.com/rustfs/rustfs/issues/1511) | + +## Next steps + +- [Veeam downloads](https://www.veeam.com/products/downloads.html) and [POC trial license](https://www.veeam.com/products/data-platform-trial.html). +- [Veeam Agent object storage requirements](https://helpcenter.veeam.com/docs/agentforwindows/userguide/backup_to_object_storage.html). +- [RustFS Object Lock](../../../administration/data/object/object-lock.md) and [bucket versioning](../../../administration/data/object/versioning.md). diff --git a/content/fr/developer/integration/backup/images/veeam-backup-job-success.webp b/content/fr/developer/integration/backup/images/veeam-backup-job-success.webp new file mode 100644 index 000000000..33a0a9480 Binary files /dev/null and b/content/fr/developer/integration/backup/images/veeam-backup-job-success.webp differ diff --git a/content/fr/developer/integration/backup/images/veeam-repository-added.webp b/content/fr/developer/integration/backup/images/veeam-repository-added.webp new file mode 100644 index 000000000..4e251255f Binary files /dev/null and b/content/fr/developer/integration/backup/images/veeam-repository-added.webp differ diff --git a/content/fr/developer/integration/backup/images/veeam-repository-bucket.webp b/content/fr/developer/integration/backup/images/veeam-repository-bucket.webp new file mode 100644 index 000000000..f5f11a04b Binary files /dev/null and b/content/fr/developer/integration/backup/images/veeam-repository-bucket.webp differ diff --git a/content/fr/developer/integration/backup/images/veeam-restore-complete.webp b/content/fr/developer/integration/backup/images/veeam-restore-complete.webp new file mode 100644 index 000000000..fd5af84dd Binary files /dev/null and b/content/fr/developer/integration/backup/images/veeam-restore-complete.webp differ diff --git a/content/fr/developer/integration/backup/index.md b/content/fr/developer/integration/backup/index.md index 6b837c021..7bf2d4c9a 100644 --- a/content/fr/developer/integration/backup/index.md +++ b/content/fr/developer/integration/backup/index.md @@ -11,5 +11,6 @@ Utilisez **RustFS** comme backend de stockage objet pour les outils de sauvegard - [Velero](./velero.md) - [Kopia](./kopia.md) - [Longhorn](./longhorn.md) +- [Veeam](./veeam.md) Conservez les tâches de sauvegarde dans un compartiment et un préfixe dédiés, et utilisez des identifiants limités aux opérations de compartiment nécessaires. \ No newline at end of file diff --git a/content/fr/developer/integration/backup/meta.json b/content/fr/developer/integration/backup/meta.json index 6634f8368..add260c1a 100644 --- a/content/fr/developer/integration/backup/meta.json +++ b/content/fr/developer/integration/backup/meta.json @@ -4,6 +4,7 @@ "kopia", "longhorn", "restic", - "velero" + "velero", + "veeam" ] } diff --git a/content/fr/developer/integration/backup/veeam.md b/content/fr/developer/integration/backup/veeam.md new file mode 100644 index 000000000..d8757f3e3 --- /dev/null +++ b/content/fr/developer/integration/backup/veeam.md @@ -0,0 +1,162 @@ +--- +title: "Veeam Backup & Replication avec RustFS" +description: "Configurez RustFS comme dépôt de sauvegarde S3 pour Veeam, préparez une licence Enterprise ou d’essai pour un POC et validez la sauvegarde Windows et la restauration de fichiers." +--- + +Veeam Backup & Replication (VBR) est une plateforme de sauvegarde d’entreprise qui stocke les données de sauvegarde dans un stockage objet compatible S3. Ce guide montre comment enregistrer RustFS comme dépôt de stockage objet VBR, sauvegarder un ordinateur Windows entier avec l’agent Veeam et restaurer un fichier depuis la sauvegarde. + +Vous avez besoin d’une instance RustFS accessible via HTTPS, d’un compartiment dédié aux sauvegardes, d’un ordinateur Windows avec VBR 13 et d’une licence Veeam incluant la sauvegarde vers le stockage objet. Téléchargez VBR depuis la [page officielle de téléchargement Veeam](https://www.veeam.com/products/downloads.html). Dimensionnez le serveur selon la [configuration requise par Veeam](https://helpcenter.veeam.com/docs/vbr/userguide/system_requirements_backup_server.html?ver=13), et non selon une petite machine virtuelle de laboratoire. + +:::note[Exigence de licence] + +La sauvegarde vers le stockage objet compatible S3 est une fonctionnalité d’entreprise de Veeam. Pour la production, achetez une licence Veeam Enterprise ou une autre licence payante incluant cette fonctionnalité. Pour une preuve de concept (POC), [demandez une licence d’essai gratuite de Veeam Data Platform de 30 jours](https://www.veeam.com/products/data-platform-trial.html) et installez-la avant de lancer la tâche. Le téléchargement ou l’installation de VBR seul n’active pas cette fonctionnalité. Dans la configuration validée, Community Edition pouvait ajouter le dépôt, mais refusait la tâche de sauvegarde vers le stockage objet sans la licence requise. + +::: + +## Configuration validée + +Le test rapporté utilisait VBR **13.1.2.57**, RustFS **1.0.1**, une sauvegarde avec l’agent Windows et un dépôt en mode de connexion **Direct**. Une tâche de sauvegarde et une restauration de fichier ont réussi. Il s’agit d’un test d’intégration, pas d’une certification Veeam ni d’une validation de la restauration bare metal, de l’application de la rétention ou de toutes les charges de travail Veeam. Les objets d’environ 1 Mio observés ne garantissent pas une taille de bloc fixe. + +## Architecture + +```mermaid +flowchart LR + Computer["Ordinateur Windows + (agent Veeam)"] -.->|Gestion / TLS| VBR["Serveur VBR"] + Computer -->|S3 / SigV4 HTTPS| Traefik["Ingress / TLS"] + VBR -.->|Configuration du dépôt / S3 HTTPS| Traefik + Traefik --> RustFS["RustFS"] + RustFS --> Bucket["veeam-repo + (gestion des versions + verrouillage)"] +``` + +En mode Direct, l’agent envoie les données de sauvegarde à RustFS ; VBR gère la tâche et le dépôt. En mode passerelle, les données transitent par la passerelle ou le serveur de montage choisi. L’agent ou la passerelle qui transfère les données doit pouvoir joindre le point de terminaison HTTPS RustFS et faire confiance à son certificat. Consultez les [modes de connexion de Veeam Agent](https://helpcenter.veeam.com/docs/vbr/userguide/agents_object_storage.html?ver=13). Le préfixe de clé d’objet est `veeam` et le compartiment est `veeam-repo`. + +## 1. Préparer le compartiment et les identifiants + +Créez un compartiment dédié avec la gestion des versions et le verrouillage d’objet (Object Lock). La gestion des versions est un prérequis du verrouillage d’objet nécessaire aux sauvegardes immuables Veeam : + +```bash +rc bucket create /veeam-repo --with-lock +rc bucket version info /veeam-repo +``` + +Utilisez cette politique initiale limitée au compartiment et validez-la pour le mode Veeam choisi. Les opérations sur compartiments et sur objets utilisent des portées de ressources distinctes. `s3:CreateBucket` est omis puisque le compartiment existe déjà. Ce n’est pas une politique minimale démontrée : la politique du laboratoire inclut la gestion des conservations légales et le contournement de la rétention en mode gouvernance. Avant la production, examinez ces autorisations et supprimez celles qui sont inutiles. En particulier, `s3:BypassGovernanceRetention` permet de contourner la protection en mode gouvernance ; ces identifiants ne garantissent donc pas l’impossibilité de supprimer des versions protégées. + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": ["s3:GetObject","s3:PutObject","s3:DeleteObject", + "s3:GetObjectVersion","s3:DeleteObjectVersion", + "s3:AbortMultipartUpload","s3:ListMultipartUploadParts", + "s3:PutObjectRetention","s3:GetObjectRetention", + "s3:PutObjectLegalHold","s3:GetObjectLegalHold", + "s3:BypassGovernanceRetention"], + "Resource": ["arn:aws:s3:::veeam-repo/*"] + }, + { + "Effect": "Allow", + "Action": ["s3:ListBucket","s3:ListBucketVersions","s3:GetBucketLocation", + "s3:GetBucketVersioning","s3:GetBucketObjectLockConfiguration", + "s3:ListBucketMultipartUploads"], + "Resource": ["arn:aws:s3:::veeam-repo"] + } + ] +} +``` + +```bash +rc admin policy create veeam-repo-rw +rc admin user add veeam +rc admin policy attach veeam-repo-rw --user veeam +``` + +Veeam exige HTTPS pour le stockage objet compatible S3. Vous pouvez terminer TLS devant RustFS avec Traefik ou Nginx. Le SAN doit couvrir le nom d’hôte du point de terminaison ; le serveur VBR et l’agent ou la passerelle doivent faire confiance à la chaîne du certificat. Pour une autorité de certification privée, installez son certificat racine dans les magasins de confiance appropriés. N’importez pas un certificat de serveur quelconque comme autorité de confiance et ne désactivez pas la vérification. + +Ne configurez pas de règles de cycle de vie d’expiration ou de transition dans ce compartiment de sauvegarde ; laissez Veeam gérer la rétention. Consultez les [limitations du stockage objet pour Veeam Agent](https://helpcenter.veeam.com/docs/agentforwindows/userguide/backup_to_object_storage.html). + +## 2. Ajouter le dépôt RustFS dans VBR + +Dans la console VBR, allez dans **Backup Infrastructure → Backup Repositories → Add Repository → Object storage → S3 Compatible** : + +1. Service point : votre point de terminaison HTTPS RustFS, Region : `us-east-1`. +2. Credentials : la clé d’accès et la clé secrète de `veeam`. Choisissez **Direct** pour le chemin de données illustré, ou une passerelle si l’accès direct ne convient pas. +3. Bucket : `veeam-repo`, Folder : `veeam`. +4. Si le compartiment neuf n’a aucun préfixe, créez un objet sous `veeam/` avec un client S3, puis sélectionnez Folder avec **Browse**. +5. Pour tester les sauvegardes immuables, activez **Make backups immutable** et vérifiez séparément la rétention des objets. Activer le verrouillage du compartiment ne rend pas toutes les sauvegardes immuables. + +![Assistant de dépôt : choix de veeam-repo, du dossier et de l’option de sauvegarde immuable](./images/veeam-repository-bucket.webp) + +Lorsque Veeam signale que le provisionnement automatique du compartiment échoue avec Access Denied, choisissez **Yes** pour le désactiver et continuer — le compartiment existe déjà et l’utilisateur IAM ne peut volontairement pas en créer. + +Pour les sauvegardes avec agent, configurez explicitement **Set Access Permissions → Security** selon les [instructions Veeam d’accès aux dépôts compatibles S3](https://helpcenter.veeam.com/docs/vbr/userguide/access_permissions.html?ver=13). **Provided by the backup server** utilise une passerelle ou un serveur de montage, même si le dépôt affiche Direct. Un véritable accès Direct exige une configuration IAM/STS compatible ou **Agents share credentials to object storage repository**. Cette dernière option transmet les identifiants du dépôt aux ordinateurs protégés et offre moins de sécurité ; utilisez-la seulement si nécessaire dans un POC isolé. Une prise en charge générique d’IAM/STS ne prouve pas la compatibilité avec le mécanisme d’identifiants Veeam ; validez le mode avant la production. + +Le rapport de laboratoire ne précise pas l’option Security et ne confirme donc pas indépendamment que les données ne transitaient pas par une passerelle. + +En cas de succès, le dépôt apparaît comme **S3-compatible**. Used Space est l’utilisation rapportée par Veeam, pas une mesure indépendante de la capacité RustFS : + +![Dépôt RustFS listé sous Backup Repositories comme S3-compatible](./images/veeam-repository-added.webp) + +## 3. Enregistrer l’ordinateur protégé + +La tâche de sauvegarde seule n’installe pas l’agent Veeam. Utilisez un groupe de protection : + +1. **Inventory → Physical and Cloud Infrastructure → Add protection group…** +2. Type **Individual computers**, ajoutez la machine avec son vrai nom d’hôte et des identifiants d’administrateur local sous la forme `HOSTNAME\user`. +3. Laissez **Install Veeam Backup & Replication Agent** coché, puis Apply. + +:::warning[Restrictions UAC Windows à distance] + +Vérifiez d’abord le nom d’hôte, les identifiants, la connectivité et le pare-feu. Un administrateur ne doit envisager de définir `LocalAccountTokenFilterPolicy` à `1` sous `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System` que si le filtrage UAC à distance d’un compte local est confirmé. Ce réglage autorise des jetons élevés à distance pour les administrateurs locaux ; ce n’est pas une solution générale aux refus d’accès. Limitez l’accès à un réseau d’administration de confiance, notez la valeur précédente et rétablissez-la lorsqu’elle n’est plus nécessaire, en vérifiant la gestion de l’agent. Consultez les [restrictions UAC à distance de Microsoft](https://learn.microsoft.com/en-us/troubleshoot/windows-server/windows-security/user-account-control-and-remote-restriction). Après l’installation, redémarrez si Backup agent affiche **Reboot required**. + +::: + +## 4. Exécuter la tâche de sauvegarde + +1. **Home → Backup Job → Windows computer…** +2. Computers : **From protection group**, Backup Mode : **Entire computer**. +3. Storage : Backup repository = **RustFS**, rétention selon les besoins. +4. Finish, puis faites un clic droit sur la tâche et sélectionnez **Start**. + +Une fois la tâche terminée, la liste des tâches affiche **Last Result: Success** et le point de restauration apparaît sous **Home → Backups → Object Storage → RustFS Veeam Backup** : + +![Tâche de sauvegarde de l’agent Windows avec Last Result Success](./images/veeam-backup-job-success.webp) + +Vérifiez les objets dans RustFS : + +```bash +rc object find /veeam-repo/ | tail -1 +``` + +Le test a observé des objets de données sous `Veeam/Backup/veeam/Clients/{agent-id}/…`. Lister un objet ne prouve ni l’intégrité complète de la sauvegarde, ni la présence d’un point de restauration, ni une rétention immuable. + +## 5. Restaurer des fichiers + +1. **Home → Backups → Object Storage → RustFS Veeam Backup → **. +2. Clic droit sur le point de restauration → **Restore guest files…** → Browse. +3. Choisissez un fichier dans le Backup Browser, restaurez-le vers un dossier cible et vérifiez son contenu. + +![Restauration d’un fichier depuis la sauvegarde RustFS via le Backup Browser](./images/veeam-restore-complete.webp) + +Une restauration réussie avec un contenu identique valide le parcours de sauvegarde et de récupération pour ce fichier, pas tous les points de restauration. Pour un POC de sauvegarde immuable, vérifiez aussi le mode et l’expiration de rétention, puis confirmez avec des données de test contrôlées que les versions protégées ne peuvent pas être supprimées pendant la rétention. N’effectuez pas de tests destructifs sur les sauvegardes de production. + +## Dépannage + +| Symptôme | Solution | +|---|---| +| "Backup to object storage requires a valid Enterprise edition license" | Installez une licence incluant la sauvegarde vers le stockage objet (essai ou payante) ; Community Edition ne peut pas exécuter ces tâches | +| "backup agent is missing" pendant la tâche | Enregistrez la machine via un groupe de protection (étape 3) ; l’assistant de tâche n’installe pas les agents | +| L’installation de l’agent échoue avec une erreur d’accès | Vérifiez d’abord les identifiants, le nom d’hôte et le pare-feu ; consultez l’avertissement UAC uniquement si le filtrage à distance est confirmé | +| La colonne Backup agent affiche "Reboot required" | Redémarrez la machine pour terminer l’installation de l’agent | +| La console affiche HTTP 502 juste après le démarrage | Les services Veeam démarrent encore ; réessayez lorsque `VeeamBackupSvc` et le service PostgreSQL sont Running | +| La liste des dossiers est vide dans l’assistant | Le sélecteur liste les préfixes existants ; créez d’abord un objet sous le préfixe, puis utilisez Browse | +| La capacité du dépôt affiche N/A | Les rapports SOSAPI ne sont pas requis pour la sauvegarde ; leur prise en charge est suivie dans [rustfs/rustfs#1511](https://github.com/rustfs/rustfs/issues/1511) | + +## Étapes suivantes + +- [Téléchargements Veeam](https://www.veeam.com/products/downloads.html) et [licence d’essai pour un POC](https://www.veeam.com/products/data-platform-trial.html). +- [Exigences du stockage objet pour Veeam Agent](https://helpcenter.veeam.com/docs/agentforwindows/userguide/backup_to_object_storage.html). +- [Verrouillage d’objet RustFS](../../../administration/data/object/object-lock.md) et [gestion des versions](../../../administration/data/object/versioning.md). diff --git a/content/ja/developer/integration/backup/images/veeam-backup-job-success.webp b/content/ja/developer/integration/backup/images/veeam-backup-job-success.webp new file mode 100644 index 000000000..33a0a9480 Binary files /dev/null and b/content/ja/developer/integration/backup/images/veeam-backup-job-success.webp differ diff --git a/content/ja/developer/integration/backup/images/veeam-repository-added.webp b/content/ja/developer/integration/backup/images/veeam-repository-added.webp new file mode 100644 index 000000000..4e251255f Binary files /dev/null and b/content/ja/developer/integration/backup/images/veeam-repository-added.webp differ diff --git a/content/ja/developer/integration/backup/images/veeam-repository-bucket.webp b/content/ja/developer/integration/backup/images/veeam-repository-bucket.webp new file mode 100644 index 000000000..f5f11a04b Binary files /dev/null and b/content/ja/developer/integration/backup/images/veeam-repository-bucket.webp differ diff --git a/content/ja/developer/integration/backup/images/veeam-restore-complete.webp b/content/ja/developer/integration/backup/images/veeam-restore-complete.webp new file mode 100644 index 000000000..fd5af84dd Binary files /dev/null and b/content/ja/developer/integration/backup/images/veeam-restore-complete.webp differ diff --git a/content/ja/developer/integration/backup/index.md b/content/ja/developer/integration/backup/index.md index 4b3e717f3..f487ae168 100644 --- a/content/ja/developer/integration/backup/index.md +++ b/content/ja/developer/integration/backup/index.md @@ -11,5 +11,6 @@ description: "S3 互換のオブジェクトストレージ経由でバックア - [Velero](./velero.md) - [Kopia](./kopia.md) - [Longhorn](./longhorn.md) +- [Veeam](./veeam.md) バックアップジョブは専用のバケットとプレフィックスにまとめ、必要なバケット操作だけに絞った認証情報を使用します。 \ No newline at end of file diff --git a/content/ja/developer/integration/backup/meta.json b/content/ja/developer/integration/backup/meta.json index e7421b9ca..1fc9431c7 100644 --- a/content/ja/developer/integration/backup/meta.json +++ b/content/ja/developer/integration/backup/meta.json @@ -4,6 +4,7 @@ "kopia", "longhorn", "restic", - "velero" + "velero", + "veeam" ] } diff --git a/content/ja/developer/integration/backup/veeam.md b/content/ja/developer/integration/backup/veeam.md new file mode 100644 index 000000000..195fab057 --- /dev/null +++ b/content/ja/developer/integration/backup/veeam.md @@ -0,0 +1,162 @@ +--- +title: "Veeam Backup & Replication と RustFS の連携" +description: "RustFS を Veeam の S3 互換バックアップリポジトリに設定し、POC 用の Enterprise または試用ライセンスを準備して、Windows バックアップとファイル復元を検証します。" +--- + +Veeam Backup & Replication(VBR)は、バックアップデータを S3 互換オブジェクトストレージに保存するエンタープライズ向けバックアッププラットフォームです。このページでは、RustFS を VBR のオブジェクトストレージリポジトリとして登録し、Veeam Agent で Windows コンピューター全体をバックアップし、保存されたバックアップからファイルを復元する方法を説明します。 + +HTTPS でアクセスできる RustFS インスタンス、バックアップ専用バケット、VBR 13 をインストールした Windows マシン、オブジェクトストレージバックアップを含む Veeam ライセンスが必要です。[Veeam 公式ダウンロードページ](https://www.veeam.com/products/downloads.html)から VBR を取得してください。バックアップサーバーは小規模な検証用 VM の構成ではなく、[Veeam のシステム要件](https://helpcenter.veeam.com/docs/vbr/userguide/system_requirements_backup_server.html?ver=13)に従って設計してください。 + +:::note[ライセンス要件] + +S3 互換オブジェクトストレージへのバックアップは Veeam のエンタープライズ向け機能です。本番利用には Veeam Enterprise ライセンス、またはこの機能を含む別の有償ライセンスを購入してください。概念実証(POC)では、[Veeam Data Platform の無料 30 日間試用ライセンスを申請](https://www.veeam.com/products/data-platform-trial.html)し、ジョブの実行前にインストールできます。VBR のダウンロードやインストールだけではこの機能は有効になりません。検証構成では Community Edition でリポジトリを追加できましたが、必要なライセンスがなければオブジェクトストレージへのバックアップジョブは実行できませんでした。 + +::: + +## 検証済みの構成 + +報告されたテストでは、VBR **13.1.2.57**、RustFS **1.0.1**、Windows Agent のバックアップ、および **Direct** 接続モードのリポジトリを使用し、バックアップジョブと 1 件のファイル復元が成功しました。これは連携テストであり、Veeam の認定や、ベアメタル復元、保持期間の強制適用、すべての Veeam ワークロードの検証ではありません。観測された約 1 MiB のオブジェクトは、固定ブロックサイズを保証するものではありません。 + +## アーキテクチャ + +```mermaid +flowchart LR + Computer["Windows コンピューター + (Veeam Agent)"] -.->|管理 / TLS| VBR["VBR サーバー"] + Computer -->|S3 / SigV4 HTTPS| Traefik["Ingress / TLS"] + VBR -.->|リポジトリ設定 / S3 HTTPS| Traefik + Traefik --> RustFS["RustFS"] + RustFS --> Bucket["veeam-repo + (バージョニング + オブジェクトロック)"] +``` + +Direct モードでは Agent がバックアップデータを RustFS に送信し、VBR はジョブとリポジトリを管理します。ゲートウェイ構成では、選択したゲートウェイまたはマウントサーバーを経由します。実際にデータを転送する Agent またはゲートウェイが RustFS の HTTPS エンドポイントに到達でき、証明書を信頼できる必要があります。[Veeam Agent の接続モード](https://helpcenter.veeam.com/docs/vbr/userguide/agents_object_storage.html?ver=13)を参照してください。オブジェクトキーのプレフィックスは `veeam`、バケットは `veeam-repo` です。 + +## 1. バケットと認証情報を準備する + +バージョニングとオブジェクトロック(Object Lock)を有効にした専用バケットを作成します。バージョニングは、Veeam の変更不可バックアップで使用するオブジェクトロックの前提条件です。 + +```bash +rc bucket create /veeam-repo --with-lock +rc bucket version info /veeam-repo +``` + +次のバケット限定の初期ポリシーを使用し、選択した Veeam モードで検証してください。バケット操作とオブジェクト操作ではリソースの範囲が異なります。バケットが既に存在するため `s3:CreateBucket` は省略しています。これは最小権限と確認されたポリシーではありません。検証用ポリシーにはリーガルホールドの管理とガバナンスモードの保持を回避する権限が含まれます。本番利用前に必要性を確認し、不要な権限を削除してください。特に `s3:BypassGovernanceRetention` はガバナンスモードの保護を回避できるため、この認証情報では保護されたバージョンを削除できないとは限りません。 + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": ["s3:GetObject","s3:PutObject","s3:DeleteObject", + "s3:GetObjectVersion","s3:DeleteObjectVersion", + "s3:AbortMultipartUpload","s3:ListMultipartUploadParts", + "s3:PutObjectRetention","s3:GetObjectRetention", + "s3:PutObjectLegalHold","s3:GetObjectLegalHold", + "s3:BypassGovernanceRetention"], + "Resource": ["arn:aws:s3:::veeam-repo/*"] + }, + { + "Effect": "Allow", + "Action": ["s3:ListBucket","s3:ListBucketVersions","s3:GetBucketLocation", + "s3:GetBucketVersioning","s3:GetBucketObjectLockConfiguration", + "s3:ListBucketMultipartUploads"], + "Resource": ["arn:aws:s3:::veeam-repo"] + } + ] +} +``` + +```bash +rc admin policy create veeam-repo-rw +rc admin user add veeam +rc admin policy attach veeam-repo-rw --user veeam +``` + +Veeam は S3 互換オブジェクトストレージに HTTPS を要求します。Traefik や Nginx で RustFS の前段の TLS を終端できます。SAN はエンドポイントのホスト名を含み、VBR サーバーおよび転送を行う Agent またはゲートウェイが証明書チェーンを信頼する必要があります。プライベート CA の場合は、そのルート CA 証明書を適切な信頼済みルートストアにインストールしてください。任意のエンドポイント証明書を信頼済み CA として扱ったり、検証を無効にしたりしないでください。 + +この専用バックアップバケットにはライフサイクルの有効期限や移行ルールを設定せず、Veeam に保持期間を管理させてください。[Veeam Agent のオブジェクトストレージ制限](https://helpcenter.veeam.com/docs/agentforwindows/userguide/backup_to_object_storage.html)を参照してください。 + +## 2. VBR に RustFS リポジトリを追加する + +VBR コンソールで **Backup Infrastructure → Backup Repositories → Add Repository → Object storage → S3 Compatible** に進みます: + +1. Service point: RustFS の HTTPS エンドポイント、Region: `us-east-1`。 +2. Credentials: `veeam` のアクセスキーとシークレットキー。図のデータ経路には **Direct** を選択します。直接アクセスが適さない場合はゲートウェイを選択してください。 +3. Bucket: `veeam-repo`、Folder: `veeam`。 +4. 新しいバケットにプレフィックスがない場合、S3 クライアントで `veeam/` 配下にオブジェクトを作成してから **Browse** で Folder を選択します。 +5. 変更不可バックアップをテストする場合は **Make backups immutable** を有効にし、オブジェクトの保持を別途検証します。バケットのオブジェクトロックを有効にするだけでは、すべてのバックアップが変更不可になるわけではありません。 + +![リポジトリウィザードで veeam-repo、フォルダー、変更不可バックアップのオプションを選択](./images/veeam-repository-bucket.webp) + +自動バケットプロビジョニングが Access Denied で失敗したというメッセージが表示された場合は、**Yes** を選んで無効化して先へ進みます。バケットは既に存在し、IAM ユーザーは意図的にバケットを作成できません。 + +Agent バックアップでは、[Veeam の S3 互換リポジトリのアクセス手順](https://helpcenter.veeam.com/docs/vbr/userguide/access_permissions.html?ver=13)に従い **Set Access Permissions → Security** を明示的に設定してください。**Provided by the backup server** はリポジトリが Direct と表示されてもゲートウェイまたはマウントサーバーを使用します。実際の Direct アクセスには互換性のある IAM/STS 構成、または **Agents share credentials to object storage repository** が必要です。後者は保護対象マシンにリポジトリ認証情報を渡すため安全性が低く、必要な場合にのみ隔離した POC で使用してください。一般的な IAM/STS 対応だけでは Veeam の認証情報処理との互換性は証明できません。本番利用前に選択したモードを検証してください。 + +検証報告には Security の選択が記録されていないため、データがゲートウェイを経由しなかったことを独立に確認するものではありません。 + +成功するとリポジトリは **S3-compatible** として表示されます。Used Space は Veeam が報告する使用量であり、RustFS 容量の独立した測定ではありません。 + +![Backup Repositories に S3-compatible として表示された RustFS リポジトリ](./images/veeam-repository-added.webp) + +## 3. 保護対象コンピューターを登録する + +バックアップジョブだけでは Veeam Agent はインストールされません。プロテクショングループを使用します: + +1. **Inventory → Physical and Cloud Infrastructure → Add protection group…** +2. タイプは **Individual computers** を選び、実際のホスト名と `HOSTNAME\user` 形式のローカル管理者認証情報でマシンを追加します。 +3. **Install Veeam Backup & Replication Agent** を有効のままにして Apply をクリックします。 + +:::warning[Windows UAC のリモート制限] + +まずホスト名、認証情報、接続性、ファイアウォールを確認してください。ローカルアカウントの UAC リモートフィルタリングが原因と確認された場合にのみ、管理者が `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System` の `LocalAccountTokenFilterPolicy` を `1` にすることを検討してください。この設定はローカル管理者に昇格したリモートトークンを許可するもので、アクセス拒否全般の対処ではありません。アクセスを信頼できる管理ネットワークに制限し、元の値を記録して、不要になったら戻し、Agent 管理が正常に動作することを確認してください。[Microsoft の UAC リモート制限](https://learn.microsoft.com/en-us/troubleshoot/windows-server/windows-security/user-account-control-and-remote-restriction)を参照してください。インストール後、Backup agent 列に **Reboot required** と表示されたら再起動します。 + +::: + +## 4. バックアップジョブを実行する + +1. **Home → Backup Job → Windows computer…** +2. Computers: **From protection group**、Backup Mode: **Entire computer**。 +3. Storage: Backup repository = **RustFS**、保持期間は必要に応じて設定。 +4. Finish の後、ジョブを右クリックして **Start** を選択します。 + +ジョブ完了後、ジョブ一覧には **Last Result: Success** が表示され、復元ポイントは **Home → Backups → Object Storage → RustFS Veeam Backup** の下に現れます。 + +![Windows Agent バックアップジョブの Last Result が Success と表示](./images/veeam-backup-job-success.webp) + +RustFS 内のオブジェクトを確認します: + +```bash +rc object find /veeam-repo/ | tail -1 +``` + +テストでは `Veeam/Backup/veeam/Clients/{agent-id}/…` 配下にデータオブジェクトが観測されました。オブジェクトの一覧表示だけでは、バックアップの完全性、復元ポイント、変更不可の保持設定は検証できません。 + +## 5. ファイルを復元する + +1. **Home → Backups → Object Storage → RustFS Veeam Backup → **。 +2. 復元ポイントを右クリック → **Restore guest files…** → Browse。 +3. Backup Browser でファイルを選択し、復元先フォルダーに復元して内容を確認します。 + +![Backup Browser による RustFS バックアップからのファイルレベル復元](./images/veeam-restore-complete.webp) + +復元が成功し内容が一致すれば、そのファイルのバックアップからファイル復元までの処理を検証できますが、すべての復元ポイントが復元可能とは限りません。変更不可バックアップの POC では、保持モードと期限も確認し、管理されたテストデータで保持期間中に保護されたバージョンを削除できないことを検証してください。本番バックアップに対して破壊的なテストを実施しないでください。 + +## トラブルシューティング + +| 症状 | 対処 | +|---|---| +| "Backup to object storage requires a valid Enterprise edition license" | オブジェクトストレージバックアップを含むライセンス(試用または有料)をインストールしてください。Community Edition では実行できません | +| ジョブ中に "backup agent is missing" | プロテクショングループでマシンを登録してください(ステップ 3)。ジョブウィザードはエージェントをプッシュインストールしません | +| エージェントのプッシュがアクセス拒否で失敗する | まず認証情報、ホスト名、ファイアウォールを確認し、リモートフィルタリングが確認された場合のみ上記の UAC 警告を参照してください | +| Backup agent 列に "Reboot required" と表示される | エージェントのインストールを完了するためにマシンを再起動します | +| 起動直後にコンソールが HTTP 502 を表示 | Veeam サービスがまだ起動中です。`VeeamBackupSvc` と PostgreSQL サービスが Running になってから再試行します | +| ウィザードの Folder 一覧が空 | フォルダーの選択肢には既存のプレフィックスのみ表示されます。先にプレフィックス配下にプレースホルダーオブジェクトを作成してから Browse してください | +| リポジトリの容量が N/A と表示される | SOSAPI レポートはバックアップに必須ではありません。対応状況は [rustfs/rustfs#1511](https://github.com/rustfs/rustfs/issues/1511) で追跡されています | + +## 次のステップ + +- [Veeam 公式ダウンロード](https://www.veeam.com/products/downloads.html)と [POC 用試用ライセンス](https://www.veeam.com/products/data-platform-trial.html)。 +- [Veeam Agent のオブジェクトストレージ要件](https://helpcenter.veeam.com/docs/agentforwindows/userguide/backup_to_object_storage.html)。 +- [RustFS オブジェクトロック](../../../administration/data/object/object-lock.md)と[バケットのバージョニング](../../../administration/data/object/versioning.md)。 diff --git a/content/zh/developer/integration/backup/images/veeam-backup-job-success.webp b/content/zh/developer/integration/backup/images/veeam-backup-job-success.webp new file mode 100644 index 000000000..33a0a9480 Binary files /dev/null and b/content/zh/developer/integration/backup/images/veeam-backup-job-success.webp differ diff --git a/content/zh/developer/integration/backup/images/veeam-repository-added.webp b/content/zh/developer/integration/backup/images/veeam-repository-added.webp new file mode 100644 index 000000000..4e251255f Binary files /dev/null and b/content/zh/developer/integration/backup/images/veeam-repository-added.webp differ diff --git a/content/zh/developer/integration/backup/images/veeam-repository-bucket.webp b/content/zh/developer/integration/backup/images/veeam-repository-bucket.webp new file mode 100644 index 000000000..f5f11a04b Binary files /dev/null and b/content/zh/developer/integration/backup/images/veeam-repository-bucket.webp differ diff --git a/content/zh/developer/integration/backup/images/veeam-restore-complete.webp b/content/zh/developer/integration/backup/images/veeam-restore-complete.webp new file mode 100644 index 000000000..fd5af84dd Binary files /dev/null and b/content/zh/developer/integration/backup/images/veeam-restore-complete.webp differ diff --git a/content/zh/developer/integration/backup/index.md b/content/zh/developer/integration/backup/index.md index 4b8779616..2d7ca70fe 100644 --- a/content/zh/developer/integration/backup/index.md +++ b/content/zh/developer/integration/backup/index.md @@ -11,5 +11,6 @@ description: "通过兼容 S3 的对象存储接口将备份工具连接到 Rust - [Velero](./velero.md) - [Kopia](./kopia.md) - [Longhorn](./longhorn.md) +- [Veeam](./veeam.md) 请将备份作业放在专用的存储桶和前缀中,并使用仅限所需存储桶操作的凭据。 \ No newline at end of file diff --git a/content/zh/developer/integration/backup/meta.json b/content/zh/developer/integration/backup/meta.json index 0fb87d00d..37358859d 100644 --- a/content/zh/developer/integration/backup/meta.json +++ b/content/zh/developer/integration/backup/meta.json @@ -4,6 +4,7 @@ "kopia", "longhorn", "restic", - "velero" + "velero", + "veeam" ] } diff --git a/content/zh/developer/integration/backup/veeam.md b/content/zh/developer/integration/backup/veeam.md new file mode 100644 index 000000000..00b4e88e6 --- /dev/null +++ b/content/zh/developer/integration/backup/veeam.md @@ -0,0 +1,162 @@ +--- +title: "Veeam Backup & Replication 与 RustFS 集成" +description: "配置 RustFS 作为 Veeam S3 兼容备份仓库,准备 Enterprise 或试用许可证开展 POC,并验证 Windows 备份和文件恢复。" +--- + +Veeam Backup & Replication(VBR)是一个企业级备份平台,可将备份数据存储在 S3 兼容的对象存储中。本页演示如何将 RustFS 注册为 VBR 对象存储仓库、使用 Veeam Agent 备份整台 Windows 计算机,并从备份中恢复文件。 + +你需要一个可以通过 HTTPS 访问的 RustFS 实例、一个专用于备份的存储桶、一台安装了 VBR 13 的 Windows 机器,以及包含对象存储备份功能的 Veeam 许可证。请从 [Veeam 官方下载页面](https://www.veeam.com/products/downloads.html) 下载 VBR,并按 [Veeam 系统要求](https://helpcenter.veeam.com/docs/vbr/userguide/system_requirements_backup_server.html?ver=13) 配置备份服务器,不要将小型实验虚拟机的配置视为正式部署要求。 + +:::note[许可证要求] + +备份到 S3 兼容对象存储是 Veeam 的企业级功能。生产使用需购买 Veeam Enterprise 版许可证,或其他包含该功能的付费许可证。概念验证(POC)可[申请免费的 30 天 Veeam Data Platform 试用许可证](https://www.veeam.com/products/data-platform-trial.html),并在运行作业前安装。仅下载或安装 VBR 不会启用该功能。在已验证配置中,Community Edition 可以添加仓库,但未安装所需许可证时无法运行对象存储备份作业。 + +::: + +## 已验证配置 + +作者报告的测试使用 VBR **13.1.2.57**、RustFS **1.0.1**、Windows Agent 备份和 **Direct** 连接模式的仓库,完成了备份作业及一次文件级恢复。这是集成测试,不是 Veeam 认证,也未验证裸机恢复、保留期强制执行或全部 Veeam 工作负载。测试中观察到的约 1 MiB 对象不是固定块大小承诺。 + +## 架构 + +```mermaid +flowchart LR + Computer["Windows 计算机 + (Veeam Agent)"] -.->|管理 / TLS| VBR["VBR 服务器"] + Computer -->|S3 / SigV4 HTTPS| Traefik["Ingress / TLS"] + VBR -.->|仓库配置 / S3 HTTPS| Traefik + Traefik --> RustFS["RustFS"] + RustFS --> Bucket["veeam-repo + (版本控制 + 对象锁定)"] +``` + +Direct 模式下,Agent 将备份数据发送至 RustFS,VBR 管理作业和仓库。网关模式则通过指定的网关或挂载服务器传输数据。实际传输数据的 Agent 或网关必须能够访问并信任 RustFS HTTPS 端点。参见 [Veeam Agent 连接模式](https://helpcenter.veeam.com/docs/vbr/userguide/agents_object_storage.html?ver=13)。本页使用的对象键前缀为 `veeam`,存储桶为 `veeam-repo`。 + +## 1. 准备存储桶和凭据 + +创建启用版本控制和对象锁定的专用存储桶。版本控制是 Veeam 不可变备份所依赖的对象锁定的前提: + +```bash +rc bucket create /veeam-repo --with-lock +rc bucket version info /veeam-repo +``` + +以下是限定到该存储桶的初始策略,需结合所选 Veeam 模式验证。存储桶操作与对象操作使用不同资源范围。存储桶已存在,因此省略 `s3:CreateBucket`。这不是已经证明的最小权限策略:实验策略包含法律保留管理及绕过治理模式保留期的权限。生产使用前应审核并移除不必要的权限。尤其是 `s3:BypassGovernanceRetention` 允许绕过治理模式保护,不能假定持有此凭据的客户端无法删除受保护版本。 + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": ["s3:GetObject","s3:PutObject","s3:DeleteObject", + "s3:GetObjectVersion","s3:DeleteObjectVersion", + "s3:AbortMultipartUpload","s3:ListMultipartUploadParts", + "s3:PutObjectRetention","s3:GetObjectRetention", + "s3:PutObjectLegalHold","s3:GetObjectLegalHold", + "s3:BypassGovernanceRetention"], + "Resource": ["arn:aws:s3:::veeam-repo/*"] + }, + { + "Effect": "Allow", + "Action": ["s3:ListBucket","s3:ListBucketVersions","s3:GetBucketLocation", + "s3:GetBucketVersioning","s3:GetBucketObjectLockConfiguration", + "s3:ListBucketMultipartUploads"], + "Resource": ["arn:aws:s3:::veeam-repo"] + } + ] +} +``` + +```bash +rc admin policy create veeam-repo-rw +rc admin user add veeam +rc admin policy attach veeam-repo-rw --user veeam +``` + +Veeam 要求 S3 兼容对象存储通过 HTTPS 访问。可使用 Traefik 或 Nginx 在 RustFS 前终结 TLS。证书 SAN 必须覆盖端点主机名,证书链必须被 VBR 服务器及实际传输数据的 Agent 或网关信任。使用私有 CA 时,将其根 CA 证书安装到相应受信任根证书存储区;不要把任意端点证书当作可信 CA 导入,也不要关闭验证。 + +不要在这个专用备份桶配置生命周期过期或迁移规则,应由 Veeam 管理备份保留期。参见 [Veeam Agent 对象存储限制](https://helpcenter.veeam.com/docs/agentforwindows/userguide/backup_to_object_storage.html)。 + +## 2. 在 VBR 中添加 RustFS 仓库 + +在 VBR 控制台中,进入 **Backup Infrastructure → Backup Repositories → Add Repository → Object storage → S3 Compatible**: + +1. Service point:你的 RustFS HTTPS 端点,Region:`us-east-1`。 +2. Credentials:`veeam` 访问密钥和秘密密钥。图示数据路径使用 **Direct**;不适合直接访问时选择网关。 +3. Bucket:`veeam-repo`,Folder:`veeam`。 +4. 新桶没有前缀时,先用 S3 客户端在 `veeam/` 下创建一个对象,再用 **Browse** 选择 Folder。 +5. 测试不可变备份时,启用 **Make backups immutable** 并单独验证对象保留期。仅在桶上启用对象锁定,不代表每份备份都不可变。 + +![仓库向导:选择 veeam-repo、文件夹及可选的不可变备份设置](./images/veeam-repository-bucket.webp) + +当 Veeam 提示自动创建存储桶因 Access Denied 失败时,选择 **Yes** 禁用该功能并继续——存储桶已经存在,且 IAM 用户有意无法创建存储桶。 + +Agent 备份还需按 [Veeam S3 兼容仓库访问说明](https://helpcenter.veeam.com/docs/vbr/userguide/access_permissions.html?ver=13) 配置 **Set Access Permissions → Security**。**Provided by the backup server** 通过网关或挂载服务器传输,即使仓库显示 Direct。真正的 Direct 访问需要兼容的 IAM/STS 配置,或 **Agents share credentials to object storage repository**。后者会把仓库凭据交给受保护机器,安全性较低,仅在隔离 POC 中按需使用。通用 IAM/STS 支持不等于兼容 Veeam 凭据流程,生产使用前必须验证所选模式。 + +实验记录未说明 Security 的选项,因此不能独立证明数据未经过网关。 + +成功后,仓库以 **S3-compatible** 类型列出。Used Space 是 Veeam 报告的用量,并非独立的 RustFS 容量测量: + +![RustFS 仓库以 S3-compatible 类型列于 Backup Repositories](./images/veeam-repository-added.webp) + +## 3. 登记受保护的计算机 + +仅创建备份作业不会安装 Veeam Agent。请使用保护组: + +1. **Inventory → Physical and Cloud Infrastructure → Add protection group…** +2. 类型选择 **Individual computers**,使用真实主机名和 `HOSTNAME\user` 形式的本地管理员凭据添加机器。 +3. 保持 **Install Veeam Backup & Replication Agent** 勾选,然后 Apply。 + +:::warning[Windows UAC 远程限制] + +先检查主机名、凭据、连通性和防火墙。只有确认原因是本地账户 UAC 远程令牌过滤时,管理员才应考虑将 `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System` 下的 `LocalAccountTokenFilterPolicy` 设为 `1`。这会允许本地管理员获得提升权限的远程令牌,不是通用的访问被拒修复。应限制到可信管理网络、记录原值,在不再需要时恢复并检查 Agent 管理仍正常。参见 [Microsoft UAC 远程限制](https://learn.microsoft.com/en-us/troubleshoot/windows-server/windows-security/user-account-control-and-remote-restriction)。安装后,Backup agent 列显示 **Reboot required** 时重启机器。 + +::: + +## 4. 运行备份作业 + +1. **Home → Backup Job → Windows computer…** +2. Computers:**From protection group**,Backup Mode:**Entire computer**。 +3. Storage:Backup repository = **RustFS**,保留策略按需设置。 +4. Finish 后,右键作业选择 **Start**。 + +作业完成后,作业列表显示 **Last Result: Success**,还原点出现在 **Home → Backups → Object Storage → RustFS Veeam Backup** 下: + +![Windows Agent 备份作业的 Last Result 显示 Success](./images/veeam-backup-job-success.webp) + +验证 RustFS 中的对象: + +```bash +rc object find /veeam-repo/ | tail -1 +``` + +测试在 `Veeam/Backup/veeam/Clients/{agent-id}/…` 下观察到数据对象。仅列出对象不能证明备份完整、还原点可用或已设置不可变保留期。 + +## 5. 恢复文件 + +1. **Home → Backups → Object Storage → RustFS Veeam Backup → **。 +2. 右键还原点 → **Restore guest files…** → Browse。 +3. 在 Backup Browser 中选择一个文件,将其恢复到目标文件夹,并核对内容。 + +![通过 Backup Browser 从 RustFS 备份中进行文件级恢复](./images/veeam-restore-complete.webp) + +恢复成功且内容一致,验证的是该文件的备份至文件恢复流程,不代表所有还原点均可恢复。不可变备份 POC 还应检查保留模式和到期时间,并用受控测试数据验证保留期内无法删除受保护版本;不要对生产备份执行破坏性检查。 + +## 故障排查 + +| 现象 | 处理方法 | +|---|---| +| "Backup to object storage requires a valid Enterprise edition license" | 安装包含对象存储功能的许可证(试用或付费);Community Edition 无法运行对象存储作业 | +| 作业报 "backup agent is missing" | 通过保护组登记机器(步骤 3);作业向导不会推送安装 Agent | +| Agent 推送失败并报访问被拒 | 先检查凭据、主机名和防火墙;仅在确认是远程过滤问题时参考上方 UAC 警告 | +| Backup agent 列显示 "Reboot required" | 重启机器以完成 Agent 安装 | +| 控制台在开机后显示 HTTP 502 | Veeam 服务仍在启动;待 `VeeamBackupSvc` 和 PostgreSQL 服务处于 Running 后重试 | +| 向导中 Folder 列表为空 | Folder 选择器只列出现有前缀;先在前缀下创建一个占位对象,再 Browse | +| 仓库容量显示 N/A | SOSAPI 报告并非备份所必需;支持情况见 [rustfs/rustfs#1511](https://github.com/rustfs/rustfs/issues/1511) | + +## 后续步骤 + +- [Veeam 官方下载](https://www.veeam.com/products/downloads.html)和 [POC 试用许可证](https://www.veeam.com/products/data-platform-trial.html)。 +- [Veeam Agent 对象存储要求](https://helpcenter.veeam.com/docs/agentforwindows/userguide/backup_to_object_storage.html)。 +- [RustFS 对象锁定](../../../administration/data/object/object-lock.md)和[存储桶版本控制](../../../administration/data/object/versioning.md)。