Skip to main content
A disk type is a catalog resource that defines a persistent disk performance tier. Each environment can reference a disk type via its disk_type_ref field. This determines the storage tier and per-region cost for agent VMs. The platform provides built-in disk types for the tiers it manages. A built-in is immutable. You cannot edit one or delete it outright, but you can disable it: murmur rm disk-type <name> takes a built-in out of resolution so nothing can select it, and murmur set disk-type <name> with no payload re-enables it. A disabled built-in still appears in murmur get disk-type, marked as disabled, so you can see what you turned off. You can add your own with murmur set. A customer-managed placement in a region the built-ins do not price also needs a machine type of your own: a VM reads its compute rate from that entry and its storage rate from this one, so price every region your placements use in both. See Pricing for the current built-in disk rates and how disk storage contributes to a VM charge.

Fields

GCE spec fields

Set substrate: SUBSTRATE_GCP and provide gce:

Provisioned performance

Some GCE disk types let you choose IOPS and throughput when the disk is created; the rest work them out from the disk’s size. GCE rejects a request that sets a value its disk type works out for itself, so set exactly what the table says: Disk types that aren’t in the table take neither value, and setting one is an error. On hyperdisk-balanced the two values also constrain each other. At P IOPS, throughput has to be between MAX(140, P/256) and MIN(2400, P/4) MiB/s: at 3,000 IOPS, that’s 140 to 750 MiB/s. A throughput outside that range can’t be built at any size, so murmur rejects the disk type. Performance belongs to the disk type, not to the environment that references it. An environment picks a disk type and a disk_size_gb; to offer a second performance level, add a second disk type. Disk types stored without these fields keep working, and their volumes get whatever performance GCE picks for the size. Fill the values in the next time you write one.

Disk types an agent VM cannot use

An agent VM has one disk and boots from it. GCE creates that disk together with the instance, from an image, in the instance’s zone. Four disk types can’t be used that way, so murmur rejects them whatever performance you give them.

Disk size and provisioned IOPS

Size limits how much IOPS a hyperdisk-balanced volume can have, so a disk type and a disk_size_gb that are each fine on their own can still be a combination GCE won’t build. A volume of x GiB gets at least MIN(500x, 3000) IOPS and at most MIN(500x, 160000): So a 3,000-IOPS disk type needs at least 6 GiB. Pair one with a smaller disk_size_gb and provisioning fails, with an error naming the environment, the size, and the IOPS GCE would have given the volume. The same happens for a size outside the 4 GiB to 64 TiB (65,536 GiB) range hyperdisk-balanced supports. An environment that leaves disk_size_gb unset uses the boot image’s size, which murmur doesn’t know when the environment is written and so can’t weigh against these bounds. That’s fine for a disk type that provisions nothing, but pair an unset size with one that provisions IOPS or throughput and the environment is rejected as soon as you write it: provisions performance, which needs the disk size stated.

AWS spec fields

Set substrate: SUBSTRATE_AWS and provide aws: io1 and io2 are provisioned-IOPS volume types, and DiskRegionConfig has no field to carry an IOPS value, so a VM whose disk type names one is refused before launch. The built-in murmur-io2 is affected: use murmur-gp3 for AWS. An AWS agent VM is launched with two EBS volumes: a boot volume, and a volume sized to the instance’s RAM that holds the memory image EC2 writes when the agent sleeps. Both take the disk type the VM’s environment references, so that type’s rate for the placement’s region prices both. A machine type that does not preserve memory on sleep holds no memory image and is launched with its boot volume alone.

DiskRegionConfig

Each entry in the regions map contains: A disk costs cost_per_gib_month × disk_size_gb + performance_cost_per_month per month. The performance charge doesn’t scale with size because provisioned performance doesn’t either: 3,000 IOPS costs the same on a 20 GiB disk as on a 2,000 GiB one. Rolling it into the per-GiB price would overcharge big disks and undercharge small ones. Only set performance_cost_per_month on a disk type that provisions performance. pd-* types get their IOPS and throughput from capacity, and murmur never sets IOPS or throughput on an AWS volume, so on those there’s no fixed performance to charge for. Use 0.

Examples

Listing disk types

The list prints one name per line, with no header. A disabled built-in prints as murmur-io2 (disabled — re-enable: murmur set disk-type murmur-io2). murmur-io2 is listed because the platform really does return it, but a VM that references it is refused before launch, as described under AWS spec fields. Use murmur-gp3 for AWS, and murmur rm disk-type murmur-io2 if you want it out of resolution entirely.

Reading a single disk type

GCP disk type shape

This built-in shape shows its current production regions. The regions map lists where the entry is priced. A VM takes its storage rate from its disk type and its compute rate from its machine type, so price every region your placements use in both entries.

GCP Hyperdisk disk type shape

AWS disk type shape

This built-in shape follows the same region-scoped pricing rule.

Errors