Skip to main content

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.

StatusMeaning
availableEFS has a current usage sample.
not_sampledEFS has not recorded a usage sample yet. Retry after the filesystem has been created and used.
not_availableEFS 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 planFilesystem quotaEFS storage price
Free or trial access1 concurrent filesystemIncluded allowance is controlled by account policy
Developer5 concurrent filesystems$0.12/GiB-month
Team25 concurrent filesystems$0.15/GiB-month
Scale100 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:

  1. List your filesystems.
  2. Delete filesystems you no longer need.
  3. Retry after cleanup completes.
  4. 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:

FieldMeaning
filesystem_idStable Morph-generated filesystem id.
nameOwner-scoped filesystem name.
statusUsage sampling status.
active_mountsCurrent active mount count.
bytes_usedLatest sampled bytes used, or null when unavailable.
sampled_at_unix_secondsUnix timestamp for the sample, or null when unavailable.
estimated_monthly_cost_centsEstimated monthly cost in cents, or null when unavailable.