# Backup and Recovery Strategies for AI Workloads

**Last updated:** 2026-02
**Status:** GA
**Category:** Business Continuity & Disaster Recovery

---

## Introduksjon

Backup- og gjenopprettingsstrategier for AI-arbeidsbelastninger skiller seg vesentlig fra tradisjonelle applikasjoner. En AI-loesning bestar ikke bare av applikasjonskode og databaser, men ogsaa av trenede modeller, datasett, fine-tuning-artefakter, embedding-indekser, agentdefinisjoner, samtalelogger og pipeline-konfigurasjoner. Hvert av disse elementene har ulike krav til backup-frekvens, retensjonstid og gjenopprettingsmetode. Et tap av treningsdata kan bety uker med tapt arbeid, mens et tap av embedding-indekser kan gjenopprettes ved reindeksering fra kildedata.

For norsk offentlig sektor er backup-strategien ogsaa underlagt regulatoriske krav. Arkivloven, Forvaltningsloven og GDPR stiller krav til datalagring, personvern og etterproevbarhet. AI-systemer som prosesserer personopplysninger ma ha backup-rutiner som baade ivaretar gjenopprettingsbehovet og dataminimeringsprinsippet -- man skal ikke oppbevare mer data enn noedvendig, men man ma kunne gjenopprette det som er paakrevd. Azure Backup, Azure Storage-redundans og tjenestespesifikke backup-mekanismer gir et robust verktoeysett for dette.

Denne referansen dekker inkrementell versus full backup, point-in-time recovery for datasett, snapshot-administrasjon og retensjonsregler, off-region backup-lagring, og automatisering og planlegging av backups. Fokus er pa Azure-tjenester som er relevante for AI-arbeidsbelastninger, med konkrete konfigurasjonseksempler og kostnadsoverveielser.

## Inkrementell versus full backup

### Backup-typer for AI-arbeidsbelastninger

| Backup-type | Beskrivelse | Fordeler | Ulemper | Best for |
|-------------|-------------|---------|---------|----------|
| **Full backup** | Komplett kopi av alle data | Enklest gjenoppretting | Stoerst lagringsbehov, lengst tid | Ukentlig baseline |
| **Inkrementell** | Kun endringer siden forrige backup | Minst lagring, raskest | Krever alle inkrementelle + siste fulle | Daglig / flere ganger daglig |
| **Differensiell** | Endringer siden siste fulle backup | Raskere gjenoppretting enn inkrementell | Stoerre enn inkrementell | Daglig supplement til ukentlig full |
| **Continuous** | Lopende replikering av endringer | Lavest RPO (naer sanntid) | Hoeyest kostnad | Virksomhetskritiske data |

### Anbefalt backup-strategi per AI-komponent

| Komponent | Backup-type | Frekvens | Begrunnelse |
|-----------|------------|----------|-------------|
| **Azure OpenAI konfig** | IaC (Git) | Ved endring | Stateless tjeneste, konfig er alt |
| **Cosmos DB (agentdata)** | Continuous | Lopende | Forretningskritisk tilstandsdata |
| **Azure Storage (datasett)** | Inkrementell | Daglig | Store datamengder, lavt endringsvolum |
| **Azure SQL (strukturerte data)** | Full + diff | Full ukentlig, diff daglig | Relasjonelle data med transaksjonslogg |
| **Azure AI Search indekser** | Ingen backup* | Ved behov | Gjenskap fra kildedata |
| **Fine-tuned modellvekter** | Full | Ved ny versjon | Ikke inkrementelt mulig |
| **Treningsdata** | Inkrementell + versjonering | Daglig | Storrelse og endringshastighet |
| **System-prompter** | Git | Ved endring | Tekst, versjonskontroll er nok |
| **Evalueringsresultater** | Full | Etter hver evaluering | Relativt sma data |

> *Azure AI Search-indekser kan ikke backes opp direkte. Gjenopprett ved reindeksering fra originale kildedata i Azure Storage eller Cosmos DB.

### Azure Backup for AI-relaterte ressurser

Azure Backup stoetter foelgende ressurser relevant for AI-arbeidsbelastninger:

```
+------------------------------------------+------------------+------------------+
| Ressurs                                  | Azure Backup     | Nativ backup     |
+------------------------------------------+------------------+------------------+
| Azure Virtual Machines (GPU/compute)     | Ja               | Nei              |
| Azure Managed Disks                      | Ja               | Snapshots        |
| Azure Files (SMB/NFS)                    | Ja               | Snapshots        |
| Azure Blob Storage                       | Ja (operational)  | Versjonering     |
| Azure SQL Database                       | Ja               | Auto-backup      |
| Azure Database for PostgreSQL            | Ja               | Auto-backup      |
| Azure Cosmos DB                          | Nei*             | Continuous/PITR  |
| Microsoft Foundry                         | Nei              | Nei              |
| Azure AI Search                          | Nei              | Nei              |
+------------------------------------------+------------------+------------------+
```

> *Cosmos DB har sin egen continuous backup-mekanisme og bruker ikke Azure Backup.

## Point-in-time Recovery for datasett

### Azure Blob Storage -- Versjonering og Soft Delete

For datasett lagret i Azure Blob Storage er versjonering og soft delete de viktigste mekanismene for point-in-time recovery:

```bash
# Aktiver blob-versjonering pa storage account
az storage account blob-service-properties update \
  --account-name svvaistorage \
  --resource-group rg-ai-prod \
  --enable-versioning true

# Aktiver soft delete for blobs (30 dagers retensjonstid)
az storage account blob-service-properties update \
  --account-name svvaistorage \
  --resource-group rg-ai-prod \
  --delete-retention-days 30 \
  --enable-delete-retention true

# Aktiver soft delete for containere
az storage account blob-service-properties update \
  --account-name svvaistorage \
  --resource-group rg-ai-prod \
  --container-delete-retention-days 30 \
  --enable-container-delete-retention true
```

### Azure Blob -- Operational Backup med Azure Backup

Operational backup for Azure Blobs gir point-in-time restore:

```bash
# Opprett backup vault
az dataprotection backup-vault create \
  --vault-name ddt-ai-backup-vault \
  --resource-group rg-ai-prod \
  --location norwayeast \
  --type SystemAssigned \
  --storage-setting "DataStoreType=VaultStore;Type=LocallyRedundant"

# Opprett backup-policy for blobs (30 dagers retensjon)
az dataprotection backup-policy create \
  --vault-name ddt-ai-backup-vault \
  --resource-group rg-ai-prod \
  --name blob-backup-policy-30d \
  --policy '{
    "policyRules": [{
      "name": "Default",
      "objectType": "AzureRetentionRule",
      "lifecycles": [{
        "deleteAfter": {
          "objectType": "AbsoluteDeleteOption",
          "duration": "P30D"
        },
        "sourceDataStore": {
          "objectType": "DataStoreInfoBase",
          "dataStoreType": "OperationalStore"
        }
      }],
      "isDefault": true
    }],
    "datasourceTypes": ["Microsoft.Storage/storageAccounts/blobServices"]
  }'
```

### Cosmos DB -- Continuous Backup med PITR

Cosmos DB tilbyr to nivaaer av continuous backup:

| Egenskap | Continuous 7-day | Continuous 30-day |
|----------|-----------------|-------------------|
| Retensjonsperiode | 7 dager | 30 dager |
| Backup-lagringskostnad | Gratis | $0.20/GB * antall regioner |
| Restore-kostnad | $0.15/GB | $0.15/GB |
| Granularitet | Vilkaarlig tidspunkt innenfor retensjon | Vilkaarlig tidspunkt innenfor retensjon |
| Restore-mal | Ny konto eller eksisterende konto | Ny konto eller eksisterende konto |

```bash
# Gjenopprett Cosmos DB til et bestemt tidspunkt
az cosmosdb restore \
  --account-name ddt-ai-cosmos-prod \
  --resource-group rg-ai-prod \
  --target-database-account-name ddt-ai-cosmos-restored \
  --restore-timestamp "2026-02-10T14:30:00Z" \
  --location norwayeast
```

> **Viktig:** Ved gjenoppretting opprettes alltid en ny konto. Foelgende konfigurasjoner gjenopprettes IKKE automatisk og ma rekonfigureres: brannmurregler, VNet-innstillinger, RBAC-tildelinger, private endpoints, lagrede prosedyrer, triggere og UDF-er.

### Azure SQL Database -- Point-in-time Restore

For AI-loesninger som bruker Azure SQL for strukturerte data:

```bash
# Gjenopprett Azure SQL til et bestemt tidspunkt
az sql db restore \
  --resource-group rg-ai-prod \
  --server ddt-ai-sqlserver \
  --name ai-metadata-db \
  --dest-name ai-metadata-db-restored \
  --time "2026-02-10T14:30:00Z"
```

| Retensjonsperiode | Standard | Konfigurerbar |
|-------------------|----------|---------------|
| Korttidsretensjon (PITR) | 7 dager | 1-35 dager |
| Langtidsretensjon (LTR) | Ikke aktivert | Opptil 10 aar |

## Snapshot-administrasjon og retensjon

### Snapshot-strategi for AI-infrastruktur

Snapshots er raske, kostnadseffektive kopier av data pa et bestemt tidspunkt. For AI-arbeidsbelastninger er de spesielt nyttige for VM-baserte compute-noder og managed disks.

| Ressurs | Snapshot-type | Maks snapshots | Anbefalt retensjon |
|---------|--------------|----------------|-------------------|
| Azure Managed Disks | Inkrementell | 500 per disk | 30-90 dager |
| Azure Files | Share snapshot | 200 per share | 30 dager |
| Azure Blob | Blob versjon | Ubegrenset* | 30-365 dager |
| VM (via Azure Backup) | App-consistent | Avhenger av policy | 30-90 dager |

> *Ubegrenset antall versjoner, men lagringskostnader oeker. Bruk lifecycle management for a haandtere retensjon.

### Azure Managed Disk Backup

For GPU-VM-er og compute-intensive AI-arbeidsbelastninger:

```bash
# Opprett backup-policy for managed disks
# Daglig backup med 30 dagers retensjon
az dataprotection backup-policy create \
  --vault-name ddt-ai-backup-vault \
  --resource-group rg-ai-prod \
  --name disk-backup-daily-30d \
  --policy '{
    "policyRules": [
      {
        "name": "BackupDaily",
        "objectType": "AzureBackupRule",
        "trigger": {
          "objectType": "ScheduleBasedTriggerContext",
          "schedule": {
            "repeatingTimeIntervals": ["R/2026-01-01T02:00:00+00:00/P1D"]
          }
        },
        "dataStore": {
          "objectType": "DataStoreInfoBase",
          "dataStoreType": "OperationalStore"
        }
      },
      {
        "name": "Default",
        "objectType": "AzureRetentionRule",
        "lifecycles": [{
          "deleteAfter": {
            "objectType": "AbsoluteDeleteOption",
            "duration": "P30D"
          },
          "sourceDataStore": {
            "objectType": "DataStoreInfoBase",
            "dataStoreType": "OperationalStore"
          }
        }],
        "isDefault": true
      }
    ],
    "datasourceTypes": ["Microsoft.Compute/disks"]
  }'
```

> **Merk:** Azure Disk Backup bruker inkrementelle snapshots som er begrenset til 500 per disk. Med daglig backup betyr dette maks ~450 dagers retensjon (50 reservert for on-demand backups).

### Lifecycle Management for Azure Blob Storage

Automatisk haandtering av eldre datasett og backup-data:

```json
{
  "rules": [
    {
      "name": "dataset-lifecycle",
      "type": "Lifecycle",
      "definition": {
        "filters": {
          "blobTypes": ["blockBlob"],
          "prefixMatch": ["datasets/", "training-data/"]
        },
        "actions": {
          "baseBlob": {
            "tierToCool": {
              "daysAfterModificationGreaterThan": 30
            },
            "tierToArchive": {
              "daysAfterModificationGreaterThan": 90
            },
            "delete": {
              "daysAfterModificationGreaterThan": 365
            }
          },
          "snapshot": {
            "tierToCool": {
              "daysAfterCreationGreaterThan": 30
            },
            "delete": {
              "daysAfterCreationGreaterThan": 90
            }
          },
          "version": {
            "tierToCool": {
              "daysAfterCreationGreaterThan": 30
            },
            "delete": {
              "daysAfterCreationGreaterThan": 90
            }
          }
        }
      }
    }
  ]
}
```

## Off-region backup-lagring

### Azure Storage-redundans for backup

| Redundanstype | Regioner | Tilgjengelighet | Kostnad (relativ) | Anbefaling |
|---------------|---------|-----------------|-------------------|------------|
| **LRS** | 1 region, 3 kopier | 99.999999999% (11 niere) | 1x | Kun utvikling |
| **ZRS** | 1 region, 3 soner | 99.9999999999% (12 niere) | ~1.25x | Produksjon uten DR |
| **GRS** | 2 regioner, 6 kopier | 99.99999999999999% (16 niere) | ~2x | Standard DR |
| **GZRS** | 2 regioner, 6 kopier (3 soner + 3) | Hoeyest | ~2.5x | **Anbefalt for AI prod** |
| **RA-GRS/RA-GZRS** | Som GRS/GZRS + lesetilgang | Hoeyest + lestilgang | ~2.5-3x | Lese-intensiv DR |

### Konfigurering av geo-redundant backup

```bash
# Opprett Recovery Services vault med GRS for VM-backup
az backup vault create \
  --name ddt-ai-recovery-vault \
  --resource-group rg-ai-prod \
  --location norwayeast

# Sett storage-redundans til geo-redundant
az backup vault backup-properties set \
  --name ddt-ai-recovery-vault \
  --resource-group rg-ai-prod \
  --backup-storage-redundancy GeoRedundant

# Aktiver Cross Region Restore
az backup vault backup-properties set \
  --name ddt-ai-recovery-vault \
  --resource-group rg-ai-prod \
  --cross-region-restore-flag Enabled
```

### Off-region backup-arkitektur for AI-data

```
Norway East (primaer)                    Sweden Central (sekundaer)
+---------------------------+            +---------------------------+
|  AI Foundry Project       |            |  (Replikert data)         |
|  +---------------------+ |  async     |  +---------------------+ |
|  | Storage (GZRS)      |------copy--->|  | Storage (read)      | |
|  +---------------------+ |            |  +---------------------+ |
|  +---------------------+ |  auto      |  +---------------------+ |
|  | Cosmos DB            |---failover->|  | Cosmos DB (replica)  | |
|  +---------------------+ |            |  +---------------------+ |
|  +---------------------+ |  geo-rep   |  +---------------------+ |
|  | Container Registry  |------copy--->|  | Container Registry   | |
|  +---------------------+ |            |  +---------------------+ |
|  +---------------------+ |  auto      |  +---------------------+ |
|  | Key Vault            |---failover->|  | Key Vault (replica)  | |
|  +---------------------+ |            |  +---------------------+ |
+---------------------------+            +---------------------------+
```

### Datasuverenitetshensyn

For norsk offentlig sektor er det viktig at off-region backup forblir innenfor EU/EOeS:

| Primaer region | Anbefalt sekundaer | Paringstype | Datasuverenitet |
|----------------|-------------------|-------------|-----------------|
| Norway East | Norway West* | Paret region | Norge |
| Norway East | Sweden Central | Manuell | EU/EOeS |
| Sweden Central | Norway East | Manuell | EU/EOeS |

> *Norway West har begrenset tjenestestotte. Bruk Sweden Central som alternativ sekundaer region.

## Automatisering og planlegging av backups

### Azure Policy for automatisk backup

```json
{
  "type": "Microsoft.Authorization/policyAssignments",
  "properties": {
    "displayName": "Automatisk backup for AI VM-er",
    "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/013e242c-8828-4970-87b3-ab247555486d",
    "parameters": {
      "vaultLocation": { "value": "norwayeast" },
      "backupPolicyId": {
        "value": "/subscriptions/{sub}/resourceGroups/rg-ai-prod/providers/Microsoft.RecoveryServices/vaults/ddt-ai-recovery-vault/backupPolicies/DefaultPolicy"
      }
    }
  }
}
```

### Backup-planlegging for AI-arbeidsbelastninger

| Komponent | Planlagt tid | Frekvens | Vindu | Automatisert |
|-----------|-------------|----------|-------|-------------|
| VM-snapshots (GPU) | 02:00 UTC | Daglig | 2 timer | Azure Backup Policy |
| Blob Storage operational | Kontinuerlig | Lopende | N/A | Azure Backup |
| Cosmos DB | Kontinuerlig | Lopende | N/A | Nativ (innebygd) |
| Azure SQL | 00:00 UTC (full) | Full ukentlig, diff daglig | 4 timer | Automatisk |
| Azure Files | 03:00 UTC | Daglig | 1 time | Azure Backup Policy |
| IaC + kode (Git) | Ved push | Hendelsesbasert | N/A | Git + pipeline |
| Modelleksport | Etter deploy | Ved ny versjon | 1 time | CI/CD pipeline |

### Automatisert backup-overvaking

```kusto
// KQL-query for Azure Monitor -- Sjekk backup-status for siste 24 timer
AzureDiagnostics
| where Category == "AzureBackupReport"
| where TimeGenerated > ago(24h)
| where OperationName == "Job"
| summarize
    SuccessCount = countif(ResultType == "Succeeded"),
    FailedCount = countif(ResultType == "Failed"),
    InProgressCount = countif(ResultType == "InProgress")
| extend HealthStatus = iff(FailedCount > 0, "UNHEALTHY", "HEALTHY")
```

### Varsling ved backup-feil

```json
{
  "type": "Microsoft.Insights/scheduledQueryRules",
  "properties": {
    "displayName": "AI Backup Failure Alert",
    "description": "Varsler ved feil i backup for AI-arbeidsbelastninger",
    "severity": 1,
    "enabled": true,
    "evaluationFrequency": "PT1H",
    "windowSize": "PT1H",
    "criteria": {
      "allOf": [{
        "query": "AzureDiagnostics | where Category == 'AzureBackupReport' | where OperationName == 'Job' | where ResultType == 'Failed' | where TimeGenerated > ago(1h)",
        "threshold": 0,
        "operator": "GreaterThan",
        "timeAggregation": "Count"
      }]
    },
    "actions": {
      "actionGroups": ["/subscriptions/{sub}/resourceGroups/rg-ai-prod/providers/Microsoft.Insights/actionGroups/ai-ops-team"]
    }
  }
}
```

## Kostnadsstyring for backup

### Estimert backup-kostnad per komponent

| Komponent | Datavolum | Backup-type | Estimert kostnad (NOK/maned) |
|-----------|-----------|------------|------------------------------|
| Cosmos DB (30-day continuous) | 50 GB, 2 regioner | Continuous | ~210 |
| Azure Blob (operational) | 500 GB | PITR | ~250 |
| Azure Managed Disk | 1 TB (GPU VM) | Daglig snapshot | ~400 |
| Azure SQL (PITR + LTR) | 100 GB | Auto + LTR | ~150 |
| Azure Files | 200 GB | Daglig snapshot | ~100 |
| Recovery Services vault | N/A | GRS | ~80 |
| **Totalt estimat** | | | **~1 190** |

> **Tips:** Bruk Azure Cost Management for a overvake faktiske backup-kostnader. Sett budsjettvarslinger for a unnga overraskelser.

## Sjekkliste for backup-strategi

- [ ] Kartlegg alle AI-komponenter og deres backup-behov
- [ ] Definer RPO for hver komponent basert pa forretningskritikalitet
- [ ] Aktiver Cosmos DB continuous backup med PITR
- [ ] Konfigurer Azure Blob Storage med versjonering og soft delete
- [ ] Sett opp Azure Backup for VM-er og managed disks
- [ ] Implementer lifecycle management for kostnadsoptimalisering
- [ ] Konfigurer geo-redundant lagring (GZRS) for produksjonsdata
- [ ] Automatiser backup gjennom Azure Policy
- [ ] Sett opp overvaking og varsling for backup-feil
- [ ] Dokumenter og test gjenopprettingsprosedyrer kvartalsvis
- [ ] Verifiser at backup-strategi er i samsvar med regulatoriske krav

## Referanser

- [Azure Backup Overview](https://learn.microsoft.com/en-us/azure/backup/backup-overview)
- [Azure Blob operational backup](https://learn.microsoft.com/en-us/azure/backup/blob-backup-overview)
- [Azure Storage redundancy](https://learn.microsoft.com/en-us/azure/storage/common/storage-redundancy)
- [Continuous backup with point-in-time restore in Azure Cosmos DB](https://learn.microsoft.com/en-us/azure/cosmos-db/continuous-backup-restore-introduction)
- [Azure Disk Backup overview](https://learn.microsoft.com/en-us/azure/backup/disk-backup-overview)
- [Management recommendations for AI workloads on Azure infrastructure](https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/scenarios/ai/infrastructure/management)
- [Azure security baseline for Microsoft Foundry - Backup and recovery](https://learn.microsoft.com/en-us/security/benchmark/azure/baselines/azure-ai-foundry-security-baseline#backup-and-recovery)
- [Manage AI business continuity](https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/scenarios/ai/manage#manage-ai-business-continuity)

## For Cosmo

- **Bruk denne referansen** nar kunden trenger en helhetlig backup-strategi for AI-arbeidsbelastninger -- fra datasett og modeller til infrastruktur og agentdata.
- **Start med a kartlegge komponentene** -- mange kunder tenker bare pa "backup av modellen" men glemmer Cosmos DB, AI Search-indekser, og pipeline-konfigurasjoner som ogsaa er kritiske.
- **Anbefal Cosmos DB Continuous 30-day** for agentdata og Azure Blob GZRS for datasett som standardkonfigurasjon for norsk offentlig sektor.
- **Bruk kostnadstabellene** for a vise at backup for AI-arbeidsbelastninger er relativt rimelig sammenlignet med konsekvensene av datatap -- dette hjelper med a bygge business case.
- **Paapek regulatoriske krav** -- Arkivloven og Forvaltningsloven kan kreve lengre retensjon enn teknisk noedvendig, og dette ma fanges opp tidlig i planleggingen.
