Provisioning
Il provisioning in Trident prevede due fasi principali. La prima fase associa una classe di storage all'insieme di pool di storage di back-end adatti e si verifica come preparazione necessaria prima del provisioning. La seconda fase include la creazione stessa di un volume e richiede la scelta di un pool di storage tra quelli associati alla classe di storage del volume in sospeso.
Associazione di classe storage
L'associazione di pool di archiviazione backend a una classe di archiviazione si basa sia sugli attributi richiesti della classe di archiviazione sia sugli storagePools
elenchi , additionalStoragePools
e excludeStoragePools
. Quando si crea una classe di storage, Trident confronta gli attributi e i pool offerti da ciascun backend con quelli richiesti dalla classe di storage. Se gli attributi e il nome di un pool di storage corrispondono a tutti gli attributi e i nomi dei pool richiesti, Trident aggiunge tale pool di storage all'insieme di pool di storage adatti per tale classe di storage. Inoltre, Trident aggiunge al set tutti i pool di storage additionalStoragePools
elencati, anche se i relativi attributi non soddisfano tutti o alcuni degli attributi richiesti dalla classe di storage. È necessario utilizzare l' `excludeStoragePools`elenco per ignorare e rimuovere i pool di archiviazione da utilizzare per una classe di archiviazione. Ogni volta che si aggiunge un nuovo backend, Trident esegue un processo simile, controllando se i propri pool di storage soddisfano quelli delle classi di storage esistenti e rimuovendo quelli contrassegnati come esclusi.
Creazione di volumi
Quindi, Trident utilizza le associazioni tra classi di storage e pool di storage per determinare dove eseguire il provisioning dei volumi. Quando si crea un volume, Trident ottiene per primo il set di pool di storage per la classe di storage di tale volume e, se si specifica un protocollo per il volume, Trident rimuove i pool di storage che non possono fornire il protocollo richiesto (ad esempio, un backend NetApp HCI/SolidFire non può fornire un volume basato su file mentre un backend NAS ONTAP non può fornire un volume basato su blocchi). Trident casualmente crea l'ordine del set risultante, per facilitare una distribuzione uniforme dei volumi, quindi esegue un'iterazione, tentando di eseguire il provisioning del volume su ogni pool di storage, a sua volta. Se riesce su uno, ritorna con successo, registrando gli eventuali errori riscontrati nel processo. Trident restituisce un errore solo se non riesce a fornire su tutti i pool di archiviazione disponibili per la classe e il protocollo di archiviazione richiesti.