EFS usage and billing
EFS usage is shown per filesystem, while quota and billing are attributed to the Morph account or organization selected by your active Morph profile.
Use the usage command to answer four questions:
- How many active mounts does this filesystem have?
- How many bytes are currently sampled for storage usage?
- What is the estimated monthly cost when EFS billing is enabled?
- When was this usage sample recorded?
morphcloud efs usage shared-files
The CLI prints a table with:
- Filesystem id and name.
- Usage status.
- Active mount count.
- Sampled bytes used.
- Estimated monthly cost when available.
- Sample time.
Use --json when collecting usage programmatically:
morphcloud efs usage shared-files --json
Active mounts
active_mounts is the count of active mounts for the filesystem. It increases when a filesystem is mounted and returns to zero after unmount completes. If the same filesystem is mounted from more than one supported host, this count can be greater than one.
Active mounts are shown for visibility and cleanup. They are not the storage billing unit. Stored data size is the billing input when EFS billing is enabled.
Active mounts can delay cleanup after delete, so unmount before deleting when you are actively using the filesystem from a mounted path.
morphcloud efs mount shared-files
morphcloud efs usage shared-files
morphcloud efs unmount shared-files
morphcloud efs usage shared-files
Bytes used
bytes_used is the latest sampled storage usage for the filesystem. It reflects the product-level storage usage EFS reports for visibility and billing estimates.
Sampling is not a file-by-file audit log, and it is not meant to replace normal filesystem inspection commands like ls, du, or application-level accounting. Use it to understand current filesystem storage usage and cost estimates.
Usage samples may lag behind a write. If you just wrote data and want to confirm it through EFS, flush the mount first:
sync
morphcloud efs usage shared-files
Usage status and lifecycle state
The status field on morphcloud efs usage describes usage sampling state, not the filesystem lifecycle state from morphcloud efs get.
| Status | Meaning |
|---|---|
available | EFS has a current usage sample. |
not_sampled | EFS has not recorded a usage sample yet. Retry after the filesystem has been created and used. |
not_available | EFS attempted to sample usage but could not return a current value. Retry later or contact Morph support if it persists. |
For filesystem lifecycle state, use:
morphcloud efs get shared-files
Cost estimates
When EFS billing is enabled and usage has been sampled, the usage output includes an estimated monthly cost. In table output this appears as Est. Monthly; in JSON output it appears as estimated_monthly_cost_cents.
If the estimate is unavailable, the CLI shows -. That can happen when usage has not been sampled yet or when EFS billing is not enabled for the current environment.
The estimate is a point-in-time monthly estimate from the latest sampled bytes. It is not an invoice, a historical usage ledger, or a guarantee that a later billing close will match the sample exactly.
For estimate display, non-zero sampled bytes are rounded up to the next GiB. For example, a filesystem with a tiny test file can still estimate as one GiB-month once usage has been sampled.
Pricing
Where EFS billing is enabled, EFS pricing is based on active data stored in EFS.
Current approved plan defaults:
| Morph plan | Filesystem quota | EFS storage price |
|---|---|---|
| Free or trial access | 1 concurrent filesystem | Included allowance is controlled by account policy |
| Developer | 5 concurrent filesystems | $0.12/GiB-month |
| Team | 25 concurrent filesystems | $0.15/GiB-month |
| Scale | 100 concurrent filesystems | $0.18/GiB-month |
Your active Morph account or organization determines which plan and quota apply. The Morph billing page is the source of truth for subscription price, credits, invoices, and any plan-specific allowance.
Active mount count is reported for visibility, but the documented EFS storage price is based on stored data size.
Quotas
EFS enforces filesystem quotas at the active Morph account or organization level. The quota controls how many EFS filesystems can exist at the same time for that Morph context.
Creating a filesystem consumes one filesystem quota slot. Deleting a filesystem releases that slot after the delete path completes. Mounting an existing filesystem does not consume another filesystem quota slot.
If create fails because quota is unavailable:
- List your filesystems.
- Delete filesystems you no longer need.
- Retry after cleanup completes.
- Contact Morph support if your plan needs a higher limit.
morphcloud efs ls
morphcloud efs delete old-filesystem --yes
morphcloud efs create shared-files
Quota errors are user-facing product errors. You should not need implementation details to resolve them.
Cleanup and billing hygiene
Unmount a filesystem when the mount path is no longer needed:
morphcloud efs unmount shared-files
Delete a filesystem when the stored data is no longer needed:
morphcloud efs delete shared-files --yes
Delete marks the filesystem for cleanup. Cleanup completes asynchronously, and active mounts can delay cleanup. Unmount before deleting when the filesystem is actively mounted.
After delete succeeds, the filesystem should no longer appear in normal list results once cleanup converges:
morphcloud efs ls
If a filesystem remains in deleting for longer than expected, make sure it is unmounted everywhere and contact Morph support if it persists.
What EFS does not show
Normal EFS docs, CLI output, and dashboard pages intentionally stay at the user-facing product level.
For normal users, the important billing concepts are:
- Which Morph account or organization is active.
- How many EFS filesystems that account or organization can create.
- How many bytes a filesystem is currently using.
- What the current estimated monthly storage cost is.
- Whether cleanup has completed after delete.
JSON fields
The JSON form is the safest interface for automation:
morphcloud efs usage shared-files --json
The response includes:
| Field | Meaning |
|---|---|
filesystem_id | Stable Morph-generated filesystem id. |
name | Owner-scoped filesystem name. |
status | Usage sampling status. |
active_mounts | Current active mount count. |
bytes_used | Latest sampled bytes used, or null when unavailable. |
sampled_at_unix_seconds | Unix timestamp for the sample, or null when unavailable. |
estimated_monthly_cost_cents | Estimated monthly cost in cents, or null when unavailable. |