Provisionamento
O provisionamento no Trident tem duas fases principais. A primeira fase associa uma classe de armazenamento ao conjunto de conjuntos de armazenamento de back-end adequados e ocorre como uma preparação necessária antes do provisionamento. A segunda fase inclui a própria criação de volume e requer a escolha de um pool de armazenamento daqueles associados à classe de armazenamento do volume pendente.
Associação de classe de armazenamento
A associação de pools de storage de back-end a uma classe de armazenamento depende dos atributos solicitados da classe de armazenamento e storagePools
das listas , additionalStoragePools
e excludeStoragePools
. Quando você cria uma classe de storage, o Trident compara os atributos e pools oferecidos por cada um de seus back-ends aos solicitados pela classe de storage. Se os atributos e o nome de um pool de armazenamento corresponderem a todos os atributos e nomes de pool solicitados, o Trident adicionará esse pool de armazenamento ao conjunto de pools de armazenamento adequados para essa classe de armazenamento. Além disso, o Trident adiciona todos os pools de storage listados na additionalStoragePools
lista a esse conjunto, mesmo que seus atributos não preencham todos ou nenhum dos atributos solicitados da classe de armazenamento. Você deve usar a excludeStoragePools
lista para substituir e remover pools de armazenamento de uso para uma classe de armazenamento. O Trident executa um processo semelhante toda vez que você adiciona um novo back-end, verificando se seus pools de armazenamento atendem aos das classes de armazenamento existentes e removendo quaisquer que tenham sido marcados como excluídos.
Criação de volume
Em seguida, o Trident usa as associações entre classes de armazenamento e pools de armazenamento para determinar onde provisionar volumes. Quando você cria um volume, o Trident primeiro obtém o conjunto de pools de armazenamento para a classe de armazenamento desse volume e, se você especificar um protocolo para o volume, o Trident removerá esses pools de armazenamento que não podem fornecer o protocolo solicitado (por exemplo, um back-end do NetApp HCI/SolidFire não pode fornecer um volume baseado em arquivo enquanto um back-end do ONTAP nas não pode fornecer um volume baseado em bloco). O Trident aleatoriza a ordem desse conjunto resultante, para facilitar uma distribuição uniforme de volumes e, em seguida, iterar através dele, tentando provisionar o volume em cada pool de armazenamento por sua vez. Se for bem-sucedido em um, ele retorna com sucesso, registrando quaisquer falhas encontradas no processo. O Trident retorna uma falha somente se falhar em provisionar em todos os pools de armazenamento disponíveis para a classe de armazenamento e protocolo solicitados.