OpenNIT

Quelltext des aktuellen Standes

Fassung 1.1.1

215_vm_snapshots_datastores.sql

2 KB
-- Virtualisierung: Snapshots je VM und die einzelnen Speicherorte je Host.
--
-- Die Gesamtkapazitaet steht schon an vm_hosts.storage_gb - erst die einzelnen
-- Datastores zeigen, welcher davon vollaeuft. Snapshots waren bisher gar nicht
-- sichtbar, obwohl ein vergessener alter Snapshot Speicher frisst und die
-- Wiederherstellung erschwert.
--
-- Beide Tabellen spiegeln den Stand des Hypervisors: Was er nicht mehr meldet,
-- raeumt der Abgleich hier wieder ab. Anders als bei einer VM gibt es dafuer
-- nichts zu entscheiden - ein geloeschter Snapshot ist geloescht.

CREATE TABLE IF NOT EXISTS `vm_snapshots` (
    `id`            INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    `vm_id`         INT UNSIGNED NOT NULL,
    `external_id`   VARCHAR(255) NOT NULL COMMENT 'Kennung des Snapshots beim Hypervisor',
    `name`          VARCHAR(255) NOT NULL,
    `description`   TEXT         NULL,
    `created_at_hv` DATETIME     NULL COMMENT 'Zeitpunkt der Aufnahme laut Hypervisor',
    `size_gb`       DECIMAL(12,2) NULL,
    `is_current`    TINYINT(1)   NOT NULL DEFAULT 0 COMMENT 'Aktueller Stand der VM haengt an diesem Snapshot',
    `last_seen_at`  DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `created_at`    DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
    UNIQUE KEY `uniq_vmsnap_vm_ext` (`vm_id`, `external_id`),
    KEY `idx_vmsnap_created` (`created_at_hv`),
    CONSTRAINT `fk_vmsnap_vm` FOREIGN KEY (`vm_id`) REFERENCES `vm_vms`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `vm_datastores` (
    `id`           INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    `host_id`      INT UNSIGNED NOT NULL,
    `external_id`  VARCHAR(255) NOT NULL COMMENT 'Kennung des Speicherorts beim Hypervisor',
    `name`         VARCHAR(255) NOT NULL,
    `type`         VARCHAR(60)  NULL COMMENT 'z. B. nfs, lvm-thin, VMFS',
    `capacity_gb`  DECIMAL(14,2) NULL,
    `free_gb`      DECIMAL(14,2) NULL,
    `last_seen_at` DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `created_at`   DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
    UNIQUE KEY `uniq_vmds_host_ext` (`host_id`, `external_id`),
    CONSTRAINT `fk_vmds_host` FOREIGN KEY (`host_id`) REFERENCES `vm_hosts`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Ab wie vielen Tagen ein Snapshot als alt gilt. Betreiberseitig anpassbar
-- unter /admin/vms/hypervisor.
INSERT IGNORE INTO `system_settings` (`key`, `value`)
VALUES ('vm_snapshot_warn_days', '30');