-
Notifications
You must be signed in to change notification settings - Fork 124
Add documentation for Template replication on secondary storage #643
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -136,6 +136,89 @@ in a private Zone, it is available only to Users in the domain assigned | |||||||||||||||||||||||||||||||||||||||||||||||||
| to that Zone. If a public Template is created in a public Zone, it is | ||||||||||||||||||||||||||||||||||||||||||||||||||
| available to all Users in all domains. | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||
| Template Replication on Secondary Storage | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ----------------------------------------- | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||
| A Zone may have more than one secondary storage (image store). When a | ||||||||||||||||||||||||||||||||||||||||||||||||||
| Template is registered, CloudStack decides how many of those image | ||||||||||||||||||||||||||||||||||||||||||||||||||
| stores should hold a copy of the Template. Historically, this decision | ||||||||||||||||||||||||||||||||||||||||||||||||||
| was tied to the Template's ``public`` flag: | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||
| - **Public Templates** were copied to **every** image store in the | ||||||||||||||||||||||||||||||||||||||||||||||||||
| Zone, so that the Template was readily available wherever a host | ||||||||||||||||||||||||||||||||||||||||||||||||||
| pulled from. | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||
| - **Private Templates** were copied to **exactly one** image store in | ||||||||||||||||||||||||||||||||||||||||||||||||||
| the Zone. | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||
| This coupling mixed two unrelated concerns — *who can see a Template* | ||||||||||||||||||||||||||||||||||||||||||||||||||
| (access control) and *how many copies are kept on secondary storage* | ||||||||||||||||||||||||||||||||||||||||||||||||||
| (placement and durability). In environments where secondary storage | ||||||||||||||||||||||||||||||||||||||||||||||||||
| already provides redundancy (for example Ceph, replicated NFS, or | ||||||||||||||||||||||||||||||||||||||||||||||||||
| object storage), copying public Templates to every image store wastes | ||||||||||||||||||||||||||||||||||||||||||||||||||
| capacity, lengthens sync times, and adds unnecessary network and I/O | ||||||||||||||||||||||||||||||||||||||||||||||||||
| load. Conversely, operators who want a second copy of a private | ||||||||||||||||||||||||||||||||||||||||||||||||||
| Template for availability had no way to ask for one. | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||
| To give operators explicit control, CloudStack exposes two | ||||||||||||||||||||||||||||||||||||||||||||||||||
| configuration settings that cap the number of secondary storage pools | ||||||||||||||||||||||||||||||||||||||||||||||||||
| a Template is copied to: | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||
| - ``public.template.secstorage.copy`` — the maximum number of | ||||||||||||||||||||||||||||||||||||||||||||||||||
| secondary storage pools to which a public Template is copied. The | ||||||||||||||||||||||||||||||||||||||||||||||||||
| default is ``0``, which means "copy to every image store in the | ||||||||||||||||||||||||||||||||||||||||||||||||||
| Zone" and preserves the historical behavior. | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||
| - ``private.template.secstorage.copy`` — the maximum number of | ||||||||||||||||||||||||||||||||||||||||||||||||||
| secondary storage pools to which a private Template is copied. The | ||||||||||||||||||||||||||||||||||||||||||||||||||
| default is ``1``, which preserves the historical behavior. | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||
| Replication stops once the configured replica count is reached. Image | ||||||||||||||||||||||||||||||||||||||||||||||||||
| store selection reuses the existing CloudStack placement logic, so | ||||||||||||||||||||||||||||||||||||||||||||||||||
| copies are spread across image stores in the Zone. | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+169
to
+178
|
||||||||||||||||||||||||||||||||||||||||||||||||||
| default is ``0``, which means "copy to every image store in the | |
| Zone" and preserves the historical behavior. | |
| - ``private.template.secstorage.copy`` — the maximum number of | |
| secondary storage pools to which a private Template is copied. The | |
| default is ``1``, which preserves the historical behavior. | |
| Replication stops once the configured replica count is reached. Image | |
| store selection reuses the existing CloudStack placement logic, so | |
| copies are spread across image stores in the Zone. | |
| default is ``0``, a special unlimited value that means "copy to | |
| every image store in the Zone" and preserves the historical | |
| behavior. | |
| - ``private.template.secstorage.copy`` — the maximum number of | |
| secondary storage pools to which a private Template is copied. The | |
| default is ``1``, which preserves the historical behavior. | |
| When the configured replica count is non-zero, replication stops once | |
| that count is reached. A value of ``0`` is the special case described | |
| above and means replication continues until the Template has been | |
| copied to every image store in the Zone. Image store selection reuses | |
| the existing CloudStack placement logic, so copies are spread across | |
| image stores in the Zone. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This section introduces new global settings but doesn’t indicate the CloudStack version (or release line) where they become available. Adding a short “Since version …” note (similar to other parts of this guide) would prevent confusion for operators on older releases who won’t find these settings.