
Ich habe eine VM mit Terraform auf GCP erstellt und auch eine persistente Festplatte separat mit den Ressourcen google_compute_disk , google_compute_resource_policy, google_compute_disk_resource_policy_attachment, um auch einen Snapshot-Zeitplan an die Festplatte anzuhängen
Das war vor zwei Tagen und es wurde kein Snapshot erstellt.
Hatte jemand ähnliche Probleme?
Der Zeitplan ist auf täglich eingestellt.
Dies ist die Terraform-Konfiguration, die ich verwendet habe
resource "google_compute_disk" "fast_storage" {
name = "${var.env}-fast-disk"
type = "pd-ssd"
size = 50 #GiB
zone = var.zone
labels = {
environment = var.env
type = "ssd"
}
physical_block_size_bytes = 4096
}
resource "google_compute_resource_policy" "backup_policy" {
name = "${var.env}-backup-policy"
region = var.region
snapshot_schedule_policy {
schedule {
daily_schedule {
days_in_cycle = 1
start_time = "04:00"
}
}
retention_policy {
max_retention_days = 5
on_source_disk_delete = "KEEP_AUTO_SNAPSHOTS"
}
snapshot_properties {
labels = {
environment = var.env
type = "ssd"
}
storage_locations = ["eu"]
guest_flush = true
}
}
}
resource "google_compute_disk_resource_policy_attachment" "backup_policy_attachment" {
name = google_compute_resource_policy.backup_policy.name
disk = google_compute_disk.fast_storage.name
zone = var.zone
}
resource "google_compute_instance" "main" {
name = "${var.env}-main-server"
machine_type = "custom-2-4096"
zone = var.zone
allow_stopping_for_update = true
desired_status = "RUNNING"
deletion_protection = true
tags = ["${var.env}-main-server"]
boot_disk {
auto_delete = false
mode = "READ_WRITE"
initialize_params {
image = "debian-cloud/debian-10"
type = "pd-ssd"
size = 20
}
}
network_interface {
network = var.network_id
subnetwork = var.subnetwork_id
network_ip = google_compute_address.main_server_internal.address
access_config {
nat_ip = google_compute_address.main_server_external.address
}
}
scheduling {
on_host_maintenance = "MIGRATE"
automatic_restart = true
}
lifecycle {
ignore_changes = [attached_disk]
}
}
resource "google_compute_attached_disk" "fast_storage" {
disk = google_compute_disk.fast_storage.id
instance = google_compute_instance.main.id
device_name = "fast"
mode = "READ_WRITE"
}
Antwort1
Festlegen guest_flush = false
(dies funktioniert nur unter Windows und scheint mit GCP nicht verhandelbar zu sein).
Überprüfen Sie die Stackdriver-Protokolle – Datenträger
Antwort2
das funktioniert nur unter Windows und scheint mit gcp nicht verhandelbar zu sein
Das istnicht wahrBitte folgen Sie dem ArtikelErstellen eines Linux-Anwendungskonsistenten persistenten Datenträger-SnapshotsDort wird erklärt, was notwendig ist. Im Wesentlichen ist dies:
- Fügen Sie mit
[Snapshots]
den Abschnitt hinzu und starten Sie den Agenten mit neu . Der letzte Befehl erstellt ein Verzeichnis, falls es noch nicht existiert./etc/default/instance_configs.cfg
enabled = true
sudo systemctl restart google-guest-agent.service
/etc/google/snapshots
- ErstellenVorUndPostSnapshot-Skripte bei
/etc/google/snapshots/pre.sh
bzw./etc/google/snapshots/post.sh
Stellen Sie sicher, dass die Skripteausführbarals Root (das steht nicht explizit in der Dokumentation, ist aber leicht herauszufinden); und - Erstellen Sie einen Snapshot (oder einen Snapshot-Zeitplan) mit aktiviertem Guest-Flush.
Habe gerade überprüft, dass es in GCP funktioniert.
Wenn Sie Ihre VM-Instanz(en) nicht wie oben beschrieben vorbereitet haben, würden beim Versuch, anwendungskonsistente Snapshots zu erstellen, wie unten beschrieben, Fehler auftreten:
- Wenn 1. oben nicht durchgeführt wird:
Operation type [createSnapshot] failed with message "You can only use guest-flush on disks attached to instances with supported operating systems. Make sure you have the latest image version and agent installed with required services (e.g. VSS for Windows)."
; - Wenn 2. oben nicht durchgeführt wird:
Operation type [createSnapshot] failed with message "Guest Consistent Snapshot failed (Detail: pre_snapshot_script or post_snapshot_script not found). Verify you are running the latest image version and agent. For non-Windows, review settings in /etc/default/instance_configs.cfg on the instance. For more information, see the Guest Consistent Snapshot documentation."
oder Folgendes, wenn Skripte nicht ausführbar gemacht werden:Operation type [createSnapshot] failed with message "Guest Consistent Snapshot failed (Detail: unhandled script return code -1). Verify you are running the latest image version and agent. For non-Windows, review settings in /etc/default/instance_configs.cfg on the instance. For more information, see the Guest Consistent Snapshot documentation."
.
Und wenn Sie Snapshot-Zeitpläne haben, die keine Snapshots erstellen, suchen Sie bitte nach Fehlern wie You can only use guest-flush on disks attached to instances with supported operating systems. Make sure you have the latest image version and agent installed with required services (e.g. VSS for Windows).
im Logs Explorer, die leicht mit einer Abfrage wie gefunden werden können
severity=ERROR`
resource.type="gce_disk"
protoPayload.methodName="ScheduledSnapshots"
Ich meine, Sie haben Ihre VMs nicht wie oben erklärt vorbereitet.