clonage : serialise par stockage, le parallelisme reste par sequence
Proxmox tient un verrou PAR STOCKAGE pendant l allocation du disque. Les clones partaient a quatre de front (`flotte-creer PARALLELE`), se le disputaient, et celui qui attendait trop rendait « clone failed: can't lock file … - got timeout » — un message qui nomme le verrou, jamais le parallelisme qui l a provoque. A deux VM rien ne paraissait ; a cinq, une creation sur cinq echouait et la reconstruction s arretait. La cle du verrou porte le noeud ET le stockage : deux stockages distincts clonent toujours de front, et seule la section qui contend est prise une a la fois, dans l ordre ou la sequence du plan la demande. Assisted-by: Claude Opus 5
This commit is contained in:
parent
1cb85094ea
commit
a6907fed19
1 changed files with 14 additions and 1 deletions
15
Makefile
15
Makefile
|
|
@ -1456,6 +1456,18 @@ verifier-deploiement: ansible-runtime ## Verifie l'etat de la flotte apres deplo
|
|||
ansible-playbook -i $(INVENTAIRE_PRODUCTION) "$$playbook" --limit "$(HOTE)" --check --diff; \
|
||||
done
|
||||
|
||||
# LE CLONAGE SE SERIALISE PAR STOCKAGE, et c'est la granularite de Proxmox
|
||||
# lui-meme : il tient un verrou PAR STOCKAGE pendant l'allocation du disque. Deux
|
||||
# clones simultanes sur le meme stockage se le disputent, et celui qui attend trop
|
||||
# rend « clone failed: can't lock file '/var/lock/pve-manager/pve-storage-<nom>' -
|
||||
# got timeout » — un message qui nomme le verrou, jamais le parallelisme qui l'a
|
||||
# provoque. A deux VM rien ne parait ; a cinq, une creation sur cinq echoue, et la
|
||||
# reconstruction s'arrete sans que rien ne dise pourquoi elle tenait a deux.
|
||||
#
|
||||
# LA CLE PORTE LE NOEUD ET LE STOCKAGE, donc deux stockages distincts clonent
|
||||
# TOUJOURS en parallele : `flotte-creer PARALLELE=n` garde tout son sens, et seule
|
||||
# la section qui contend est prise un a la fois, dans l'ordre ou la sequence du
|
||||
# plan la demande.
|
||||
cloner-vm: ansible-runtime ## Clone une VM depuis le gabarit dore — HOTE=<nom> VMID=<id>
|
||||
@if [[ -z "$(HOTE)" || -z "$(VMID)" ]]; then \
|
||||
printf '%s\n' 'Refus: relancer avec HOTE=nom VMID=id_clone.'; \
|
||||
|
|
@ -1530,7 +1542,8 @@ cloner-vm: ansible-runtime ## Clone une VM depuis le gabarit dore — HOTE=<nom>
|
|||
;; \
|
||||
esac; \
|
||||
fi; \
|
||||
ansible-playbook -i localhost, $(PLAYBOOK_PROXMOX_CLONER_VM) "$${vault_args[@]}" "$${extra_vars[@]}"
|
||||
verrou="$${TMPDIR:-/tmp}/setops-clone-$$(printf '%s_%s' '$(NOEUD_PROXMOX)' '$(STOCKAGE_PROXMOX)' | tr -c 'A-Za-z0-9._-' '_').lock"; \
|
||||
flock "$$verrou" ansible-playbook -i localhost, $(PLAYBOOK_PROXMOX_CLONER_VM) "$${vault_args[@]}" "$${extra_vars[@]}"
|
||||
|
||||
creer-vm: _instance-requise ## Cree une VM et attend qu'elle soit joignable — HOTE=<nom>
|
||||
@set -e; \
|
||||
|
|
|
|||
Loading…
Reference in a new issue