zededa:manage-app-volumes
Differences
This shows you the differences between two versions of the page.
| zededa:manage-app-volumes [2026/07/05 16:16] – created mc | zededa:manage-app-volumes [2026/07/05 16:21] (current) – mc | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== EVE-OS / ZEDEDA Application Volumes ====== | ====== EVE-OS / ZEDEDA Application Volumes ====== | ||
| - | Covers: what a volume is, what has to be configured in the GUI vs Terraform, how to deploy an app with a volume, and how to grow a volume after deployment. | + | Covers: what a volume is, what has to be configured in the GUI vs Terraform, how to deploy an app with a volume, and how to grow a volume after deployment. Primary examples use an image-backed **HDD** drive; **HDD_EMPTY** is covered as a separate use case at the end. |
| Sources: [[https:// | Sources: [[https:// | ||
| Line 9: | Line 9: | ||
| A **volume instance** is the storage object EVE-OS attaches to an app instance as a drive. It backs one of: | A **volume instance** is the storage object EVE-OS attaches to an app instance as a drive. It backs one of: | ||
| - | * The app's rootfs / OS disk (built from a Content Tree / image) | + | * The app's rootfs / OS disk (built from a Content Tree / image) |
| - | * A blank data disk for app data (drive type '' | + | * A blank data disk for app data — drive type **HDD_EMPTY** |
| * A shared/ | * A shared/ | ||
| Line 23: | Line 23: | ||
| ^ Field ^ Where it shows up ^ What it does ^ | ^ Field ^ Where it shows up ^ What it does ^ | ||
| - | | Drive Type ('' | + | | Drive Type ('' |
| - | | Max Size ('' | + | | Max Size ('' |
| | Preserve ('' | | Preserve ('' | ||
| | Allow Storage Resize ('' | | Allow Storage Resize ('' | ||
| Line 35: | Line 35: | ||
| * Volume instances can be created standalone: Edge Node > Storage > Volume Instances > Add, or created implicitly while adding a drive to an app instance. | * Volume instances can be created standalone: Edge Node > Storage > Volume Instances > Add, or created implicitly while adding a drive to an app instance. | ||
| - | * On the app instance' | + | * On the app instance' |
| * Editing Drives on an **existing** app instance triggers a **Purge & Update** — the app purges and comes back online. Data on that drive is wiped unless Preserve was set. | * Editing Drives on an **existing** app instance triggers a **Purge & Update** — the app purges and comes back online. Data on that drive is wiped unless Preserve was set. | ||
| Line 51: | Line 51: | ||
| * App-instance-level resize permission is passed the same way as the GUI/TF flag, camelCase in JSON: ''" | * App-instance-level resize permission is passed the same way as the GUI/TF flag, camelCase in JSON: ''" | ||
| - | ===== 4. Step-by-step: | + | ===== 4. Step-by-step: |
| + | |||
| + | This is the common case: a single image-backed drive that serves as both the app's rootfs and its data storage, sized larger than the image itself so there' | ||
| ==== Via GUI ==== | ==== Via GUI ==== | ||
| - Go to **Edge Applications > Marketplace**, | - Go to **Edge Applications > Marketplace**, | ||
| - | - (Optional, for a shared/ | ||
| - Deploy the app: **Edge Applications > Deploy**, pick the target edge node. | - Deploy the app: **Edge Applications > Deploy**, pick the target edge node. | ||
| - | - On the **Drives pane**: | + | - On the **Drives pane**, add the drive: |
| - | - Add a drive for the rootfs (Drive Type '' | + | - Drive Type: **HDD** |
| - | - Add a second drive for data: Drive Type '' | + | - Image: select |
| + | - Mount Path: '' | ||
| + | - Max Size: set this **above** the image' | ||
| + | - Preserve: enable | ||
| - Complete networking/ | - Complete networking/ | ||
| - Confirm in **Edge Node > App Instances** that the instance reaches '' | - Confirm in **Edge Node > App Instances** that the instance reaches '' | ||
| Line 77: | Line 81: | ||
| imagename | imagename | ||
| mountpath | mountpath | ||
| - | } | + | maxsize |
| - | + | ||
| - | drives { | + | |
| - | drvtype | + | |
| - | | + | |
| preserve | preserve | ||
| - | mountpath | ||
| } | } | ||
| Line 93: | Line 92: | ||
| - Verify state: '' | - Verify state: '' | ||
| - | ===== 5. Step-by-step: | + | ===== 5. Step-by-step: |
| **Important: | **Important: | ||
| Line 102: | Line 101: | ||
| - Go to **Edge Applications > App Instances**, | - Go to **Edge Applications > App Instances**, | ||
| - If not already enabled, enable **Allow Storage Resize** at the app instance level. | - If not already enabled, enable **Allow Storage Resize** at the app instance level. | ||
| - | - On the Drives pane, raise the **Max Size** field for the target | + | - On the Drives pane, raise the **Max Size** field for the HDD drive. |
| - Save. The GUI will show a **Purge and update** notification — confirm it. | - Save. The GUI will show a **Purge and update** notification — confirm it. | ||
| - Wait for the app instance to purge and come back '' | - Wait for the app instance to purge and come back '' | ||
| - | - Log into the guest and grow the filesystem to use the new space (see step below — EVE resizes the backing volume, not the guest' | + | - Log into the guest and grow the filesystem to use the new space (EVE resizes the backing volume, not the guest' |
| ==== Via Terraform ==== | ==== Via Terraform ==== | ||
| Line 114: | Line 113: | ||
| drives { | drives { | ||
| - | drvtype | + | drvtype |
| - | maxsize | + | imagename |
| + | mountpath | ||
| + | maxsize | ||
| preserve | preserve | ||
| - | mountpath | ||
| } | } | ||
| Line 135: | Line 135: | ||
| * Windows: Disk Management > right-click volume > Extend Volume | * Windows: Disk Management > right-click volume > Extend Volume | ||
| - | ===== 6. Open questions / to verify before relying on this in production ===== | + | ===== 6. Other use case: HDD_EMPTY (blank data disk) ===== |
| + | |||
| + | **HDD_EMPTY** is a second, complementary pattern rather than an alternative to the above: a completely blank disk, not backed by any image or content tree, used as a separate data drive alongside an '' | ||
| + | |||
| + | * No image, no content tree, no hash to verify — EVE just allocates raw space up to '' | ||
| + | * Arrives to the guest as a raw, unformatted block device. The guest OS (or first-boot cloud-init) has to partition and format it itself. | ||
| + | * Typically mounted at a data path (e.g. ''/ | ||
| + | * Same '' | ||
| + | |||
| + | <code hcl> | ||
| + | drives { | ||
| + | drvtype | ||
| + | maxsize | ||
| + | preserve | ||
| + | mountpath | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Use this when you want the OS/app image to stay a fixed, replaceable artifact (rebuilt cleanly on every app update) while the data lives on its own drive that is never touched by an image update — as opposed to the '' | ||
| + | |||
| + | ===== 7. Open questions / to verify before relying on this in production ===== | ||
| * Exact ordering requirement between setting '' | * Exact ordering requirement between setting '' | ||
| * Whether any current EVE-OS version auto-grows the guest filesystem on boot after a resize (e.g., via cloud-init growpart module) — not confirmed; assume manual step is required unless verified for your specific image. | * Whether any current EVE-OS version auto-grows the guest filesystem on boot after a resize (e.g., via cloud-init growpart module) — not confirmed; assume manual step is required unless verified for your specific image. | ||
| * This applies to **app instance drives only**. It does not expand the underlying ''/ | * This applies to **app instance drives only**. It does not expand the underlying ''/ | ||
zededa/manage-app-volumes.1783268217.txt.gz · Last modified: by mc
