Skip to main content
A newer release of this product is available.

Create an NVMe namespace

Contributors

POST /storage/namespaces

Creates an NVMe namespace.

Required properties

  • svm.uuid or svm.name - Existing SVM in which to create the NVMe namespace.

  • name, location.volume.name or location.volume.uuid - Existing volume in which to create the NVMe namespace.

  • name or location.namespace - Base name for the NVMe namespace.

  • os_type - Operating system from which the NVMe namespace will be accessed. (Not used for clones, which are created based on the os_type of the source NVMe namespace.)

  • space.size - Size for the NVMe namespace. (Not used for clones, which are created based on the size of the source NVMe namespace.)

Default property values

If not specified in POST, the following default property values are assigned:

  • auto_delete - false

  • space.block_size - 4096

  • volume file clone autodelete

  • volume file clone create

  • vserver nvme namespace create

Request Body

Name Type Description

_links

_links

auto_delete

boolean

This property marks the NVMe namespace for auto deletion when the volume containing the namespace runs out of space. This is most commonly set on namespace clones.

When set to true, the NVMe namespace becomes eligible for automatic deletion when the volume runs out of space. Auto deletion only occurs when the volume containing the namespace is also configured for auto deletion and free space in the volume decreases below a particular threshold.

This property is optional in POST and PATCH. The default value for a new NVMe namespace is false.

There is an added cost to retrieving this property's value. It is not populated for either a collection GET or an instance GET unless it is explicitly requested using the fields query parameter. See DOC Requesting specific fields to learn more.

clone

clone

This sub-object is used in POST to create a new NVMe namespace as a clone of an existing namespace, or PATCH to overwrite an existing namespace as a clone of another. Setting a property in this sub-object indicates that a namespace clone is desired.

When used in a PATCH, the patched NVMe namespace's data is over-written as a clone of the source and the following properties are preserved from the patched namespace unless otherwise specified as part of the PATCH: auto_delete (unless specified in the request), subsystem_map, status.state, and uuid.

comment

string

A configurable comment available for use by the administrator. Valid in POST and PATCH.

enabled

boolean

The enabled state of the NVMe namespace. Namespaces can be disabled to prevent access to the namespace. Certain error conditions also cause the namespace to become disabled. If the namespace is disabled, you can consult the state property to determine if the namespace is administratively disabled (offline) or has become disabled as a result of an error. A namespace in an error condition can be brought online by setting the enabled property to true or brought administratively offline by setting the enabled property to false. Upon creation, an NVMe namespace is enabled by default. Valid in PATCH.

location

location

The location of the NVMe namespace within the ONTAP cluster. Valid in POST.

NVMe namespaces do not support rename, or movement between volumes.

  • readCreate: 1

name

string

The fully qualified path name of the NVMe namespace composed of a "/vol" prefix, the volume name, the (optional) qtree name and base name of the namespace. Valid in POST.

NVMe namespaces do not support rename, or movement between volumes.

os_type

string

The operating system type of the NVMe namespace.

Required in POST when creating an NVMe namespace that is not a clone of another. Disallowed in POST when creating a namespace clone.

space

space

The storage space related properties of the NVMe namespace.

status

status

Status information about the NVMe namespace.

subsystem_map

subsystem_map

The NVMe subsystem with which the NVMe namespace is associated. A namespace can be mapped to zero (0) or one (1) subsystems.

There is an added cost to retrieving property values for subsystem_map. They are not populated for either a collection GET or an instance GET unless explicitly requested using the fields query parameter. See DOC Requesting specific fields to learn more.

svm

svm

SVM, applies only to SVM-scoped objects.

uuid

string

The unique identifier of the NVMe namespace.

Example request
{
  "_links": {
    "self": {
      "href": "/api/resourcelink"
    }
  },
  "clone": {
    "source": {
      "name": "/vol/volume1/namespace1",
      "uuid": "1cd8a442-86d1-11e0-ae1c-123478563412"
    }
  },
  "comment": "string",
  "location": {
    "namespace": "namespace1",
    "qtree": {
      "_links": {
        "self": {
          "href": "/api/resourcelink"
        }
      },
      "id": 1,
      "name": "qt1"
    },
    "volume": {
      "_links": {
        "self": {
          "href": "/api/resourcelink"
        }
      },
      "name": "volume1",
      "uuid": "028baa66-41bd-11e9-81d5-00a0986138f7"
    }
  },
  "name": "/vol/volume1/qtree1/namespace1",
  "os_type": "string",
  "space": {
    "block_size": 512,
    "size": 1073741824,
    "used": 0
  },
  "status": {
    "container_state": "string",
    "state": "online"
  },
  "subsystem_map": {
    "_links": {
      "self": {
        "href": "/api/resourcelink"
      }
    },
    "anagrpid": "00103050h",
    "nsid": "00000001h",
    "subsystem": {
      "_links": {
        "self": {
          "href": "/api/resourcelink"
        }
      },
      "name": "string",
      "uuid": "1cd8a442-86d1-11e0-ae1c-123478563412"
    }
  },
  "svm": {
    "_links": {
      "self": {
        "href": "/api/resourcelink"
      }
    },
    "name": "svm1",
    "uuid": "02c9e252-41be-11e9-81d5-00a0986138f7"
  },
  "uuid": "1cd8a442-86d1-11e0-ae1c-123478563412"
}

Response

Status: 201, Created
Name Type Description

_links

_links

num_records

integer

Number of records.

records

array[nvme_namespace]

Example response
{
  "_links": {
    "next": {
      "href": "/api/resourcelink"
    },
    "self": {
      "href": "/api/resourcelink"
    }
  },
  "records": [
    {
      "_links": {
        "self": {
          "href": "/api/resourcelink"
        }
      },
      "clone": {
        "source": {
          "name": "/vol/volume1/namespace1",
          "uuid": "1cd8a442-86d1-11e0-ae1c-123478563412"
        }
      },
      "comment": "string",
      "location": {
        "namespace": "namespace1",
        "qtree": {
          "_links": {
            "self": {
              "href": "/api/resourcelink"
            }
          },
          "id": 1,
          "name": "qt1"
        },
        "volume": {
          "_links": {
            "self": {
              "href": "/api/resourcelink"
            }
          },
          "name": "volume1",
          "uuid": "028baa66-41bd-11e9-81d5-00a0986138f7"
        }
      },
      "name": "/vol/volume1/qtree1/namespace1",
      "os_type": "string",
      "space": {
        "block_size": 512,
        "size": 1073741824,
        "used": 0
      },
      "status": {
        "container_state": "string",
        "state": "online"
      },
      "subsystem_map": {
        "_links": {
          "self": {
            "href": "/api/resourcelink"
          }
        },
        "anagrpid": "00103050h",
        "nsid": "00000001h",
        "subsystem": {
          "_links": {
            "self": {
              "href": "/api/resourcelink"
            }
          },
          "name": "string",
          "uuid": "1cd8a442-86d1-11e0-ae1c-123478563412"
        }
      },
      "svm": {
        "_links": {
          "self": {
            "href": "/api/resourcelink"
          }
        },
        "name": "svm1",
        "uuid": "02c9e252-41be-11e9-81d5-00a0986138f7"
      },
      "uuid": "1cd8a442-86d1-11e0-ae1c-123478563412"
    }
  ]
}

Error

Status: Default

ONTAP Error Response Codes

Error Code Description

2621462

The supplied SVM does not exist.

2621706

The specified svm.uuid and svm.name do not refer to the same SVM.

2621707

No SVM was specified. Either svm.name or svm.uuid must be supplied.

72090009

An error occurred after successfully creating the NVMe namespace. Some properties were not set.

72090015

An error occurred after successfully creating the NVMe namespace preventing the retrieval of its properties.

72090005

The specified clone.source.uuid and clone.source.name do not refer to the same NVMe namespace.

72090006

The specified clone.source was not found.

72090007

The specified clone.source was not found.

917927

The specified volume was not found.

918236

The specified location.volume.uuid and location.volume.name do not refer to the same volume.

5374858

The volume specified by name is not the same as that specified by location.volume.

5242927

The specified qtree was not found.

5242950

The specified location.qtree.id and location.qtree.name do not refer to the same qtree.

5374860

The qtree specified by name is not the same as that specified by location.qtree.

5374861

The NVME namespace base name specified by name is not the same as that specified by location.name.

13565952

The NVMe namespace clone request failed.

72090012

The property cannot be specified when creating an NVMe namespace clone. The target property of the error object identifies the property.

72090014

No volume was specified for the NVMe namespace.

72089721

The volume specified is in a load sharing mirror relationship. Namespaces are not supported in load sharing mirrors.

72090013

The property is required except when creating an NVMe namespace clone. The target property of the error object identifies the property.

5374862

No NVMe namespace path base name was provided for the namespace.

72089722

A negative size was provided for the NVMe namespace.

72089723

The specified size is too small for the NVMe namespace.

72089724

The specified size is too large for the NVMe namespace.

5374352

An invalid name was provided for the NVMe namespace.

72089725

A LUN or NVMe namespace already exists at the specified path.

72089727

NVMe namespaces cannot be created on an SVM root volume.

72089728

NVMe namespaces cannot be created on a FlexGroup volume.

72089732

An NVMe namespace name can only contain characters A-Z, a-z, 0-9, "-", ".", "_", "{" and "}".

72089720

NVMe namespaces cannot be created in Snapshot copies.

72090033

The clone.source.uuid property is not supported when specifying a source NVMe namespace from a Snapshot copy.

Name Type Description

error

error

Example error
{
  "error": {
    "arguments": [
      {
        "code": "string",
        "message": "string"
      }
    ],
    "code": "4",
    "message": "entry doesn't exist",
    "target": "uuid"
  }
}

Definitions

See Definitions

href

Name Type Description

href

string

Name Type Description

self

href

source

The source NVMe namespace for a namespace clone operation. This can be specified using property clone.source.uuid or clone.source.name. If both properties are supplied, they must refer to the same namespace.

Valid in POST to create a new NVMe namespace as a clone of the source.

Valid in PATCH to overwrite an existing NVMe namespace's data as a clone of another.

Name Type Description

name

string

The fully qualified path name of the clone source NVMe namespace composed of a "/vol" prefix, the volume name, the (optional) qtree name and base name of the namespace. Valid in POST and PATCH.

uuid

string

The unique identifier of the clone source NVMe namespace. Valid in POST and PATCH.

clone

This sub-object is used in POST to create a new NVMe namespace as a clone of an existing namespace, or PATCH to overwrite an existing namespace as a clone of another. Setting a property in this sub-object indicates that a namespace clone is desired.

When used in a PATCH, the patched NVMe namespace's data is over-written as a clone of the source and the following properties are preserved from the patched namespace unless otherwise specified as part of the PATCH: auto_delete (unless specified in the request), subsystem_map, status.state, and uuid.

Name Type Description

source

source

The source NVMe namespace for a namespace clone operation. This can be specified using property clone.source.uuid or clone.source.name. If both properties are supplied, they must refer to the same namespace.

Valid in POST to create a new NVMe namespace as a clone of the source.

Valid in PATCH to overwrite an existing NVMe namespace's data as a clone of another.

qtree

The qtree in which the NVMe namespace is optionally located. Valid in POST.

If properties name and location.qtree.name and/or location.qtree.uuid are specified in the same request, they must refer to the same qtree.

NVMe namespaces do not support rename.

Name Type Description

_links

_links

id

integer

The identifier for the qtree, unique within the qtree's volume.

name

string

The name of the qtree.

volume

The volume in which the NVMe namespace is located. Valid in POST.

If properties name and location.volume.name and/or location.volume.uuid are specified in the same request, they must refer to the same volume.

NVMe namespaces do not support movement between volumes.

Name Type Description

_links

_links

name

string

The name of the volume.

uuid

string

Unique identifier for the volume. This corresponds to the instance-uuid that is exposed in the CLI and ONTAPI. It does not change due to a volume move.

  • example: 028baa66-41bd-11e9-81d5-00a0986138f7

location

The location of the NVMe namespace within the ONTAP cluster. Valid in POST.

NVMe namespaces do not support rename, or movement between volumes.

Name Type Description

namespace

string

The base name component of the NVMe namespace. Valid in POST.

If properties name and location.namespace are specified in the same request, they must refer to the base name.

NVMe namespaces do not support rename.

qtree

qtree

The qtree in which the NVMe namespace is optionally located. Valid in POST.

If properties name and location.qtree.name and/or location.qtree.uuid are specified in the same request, they must refer to the same qtree.

NVMe namespaces do not support rename.

volume

volume

The volume in which the NVMe namespace is located. Valid in POST.

If properties name and location.volume.name and/or location.volume.uuid are specified in the same request, they must refer to the same volume.

NVMe namespaces do not support movement between volumes.

guarantee

Properties that request and report the space guarantee for the NVMe namespace.

Name Type Description

requested

boolean

The requested space reservation policy for the NVMe namespace. If true, a space reservation is requested for the namespace; if false, the namespace is thin provisioned. Guaranteeing a space reservation request for a namespace requires that the volume in which the namespace resides also be space reserved and that the fractional reserve for the volume be 100%.

The space reservation policy for an NVMe namespace is determined by ONTAP.

  • readOnly: 1

reserved

boolean

Reports if the NVMe namespace is space guaranteed.

This property is true if a space guarantee is requested and the containing volume and aggregate support the request. This property is false if a space guarantee is not requested or if a space guarantee is requested and either the containing volume and aggregate do not support the request.

space

The storage space related properties of the NVMe namespace.

Name Type Description

block_size

integer

The size of blocks in the namespace in bytes.

Valid in POST when creating an NVMe namespace that is not a clone of another. Disallowed in POST when creating a namespace clone. Valid in POST.

guarantee

guarantee

Properties that request and report the space guarantee for the NVMe namespace.

size

integer

The total provisioned size of the NVMe namespace.

NVMe namespaces do not support resize.

For more information, see Size properties in the docs section of the ONTAP REST API documentation.

  • example: 1073741824

  • readCreate: 1

used

integer

The amount of space consumed by the main data stream of the NVMe namespace.

This value is the total space consumed in the volume by the NVMe namespace, including filesystem overhead, but excluding prefix and suffix streams. Due to internal filesystem overhead and the many ways NVMe filesystems and applications utilize blocks within a namespace, this value does not necessarily reflect actual consumption/availability from the perspective of the filesystem or application. Without specific knowledge of how the namespace blocks are utilized outside of ONTAP, this property should not be used and an indicator for an out-of-space condition.

For more information, see Size properties in the docs section of the ONTAP REST API documentation.

  • readOnly: 1

status

Status information about the NVMe namespace.

Name Type Description

container_state

string

The state of the volume and aggregate that contain the NVMe namespace. Namespaces are only available when their containers are available.

mapped

boolean

Reports if the NVMe namespace is mapped to an NVMe subsystem.

There is an added cost to retrieving this property's value. It is not populated for either a collection GET or an instance GET unless it is explicitly requested using the fields query parameter. See DOC Requesting specific fields to learn more.

read_only

boolean

Reports if the NVMe namespace allows only read access.

state

string

The state of the NVMe namespace. Normal states for a namespace are online and offline. Other states indicate errors.

subsystem

An NVMe subsystem maintains configuration state and NVMe namespace access control for a set of NVMe-connected hosts.

Name Type Description

_links

_links

name

string

The name of the NVMe subsystem.

uuid

string

The unique identifier of the NVMe subsystem.

subsystem_map

The NVMe subsystem with which the NVMe namespace is associated. A namespace can be mapped to zero (0) or one (1) subsystems.

There is an added cost to retrieving property values for subsystem_map. They are not populated for either a collection GET or an instance GET unless explicitly requested using the fields query parameter. See DOC Requesting specific fields to learn more.

Name Type Description

_links

_links

anagrpid

string

The Asymmetric Namespace Access Group ID (ANAGRPID) of the NVMe namespace.

The format for an ANAGRPID is 8 hexadecimal digits (zero-filled) followed by a lower case "h".

nsid

string

The NVMe namespace identifier. This is an identifier used by an NVMe controller to provide access to the NVMe namespace.

The format for an NVMe namespace identifier is 8 hexadecimal digits (zero-filled) followed by a lower case "h".

subsystem

subsystem

An NVMe subsystem maintains configuration state and NVMe namespace access control for a set of NVMe-connected hosts.

svm

SVM, applies only to SVM-scoped objects.

Name Type Description

_links

_links

name

string

The name of the SVM.

uuid

string

The unique identifier of the SVM.

nvme_namespace

An NVMe namespace is a collection of addressable logical blocks presented to hosts connected to the storage virtual machine using the NVMe over Fabrics protocol.

In ONTAP, an NVMe namespace is located within a volume. Optionally, it can be located within a qtree in a volume.

An NVMe namespace is created to a specified size using thin or thick provisioning as determined by the volume on which it is created. NVMe namespaces support being cloned. An NVMe namespace cannot be renamed, resized, or moved to a different volume. NVMe namespaces do not support the assignment of a QoS policy for performance management, but a QoS policy can be assigned to the volume containing the namespace. See the NVMe namespace object model to learn more about each of the properties supported by the NVMe namespace REST API.

An NVMe namespace must be mapped to an NVMe subsystem to grant access to the subsystem's hosts. Hosts can then access the NVMe namespace and perform I/O using the NVMe over Fabrics protocol.

Name Type Description

_links

_links

auto_delete

boolean

This property marks the NVMe namespace for auto deletion when the volume containing the namespace runs out of space. This is most commonly set on namespace clones.

When set to true, the NVMe namespace becomes eligible for automatic deletion when the volume runs out of space. Auto deletion only occurs when the volume containing the namespace is also configured for auto deletion and free space in the volume decreases below a particular threshold.

This property is optional in POST and PATCH. The default value for a new NVMe namespace is false.

There is an added cost to retrieving this property's value. It is not populated for either a collection GET or an instance GET unless it is explicitly requested using the fields query parameter. See DOC Requesting specific fields to learn more.

clone

clone

This sub-object is used in POST to create a new NVMe namespace as a clone of an existing namespace, or PATCH to overwrite an existing namespace as a clone of another. Setting a property in this sub-object indicates that a namespace clone is desired.

When used in a PATCH, the patched NVMe namespace's data is over-written as a clone of the source and the following properties are preserved from the patched namespace unless otherwise specified as part of the PATCH: auto_delete (unless specified in the request), subsystem_map, status.state, and uuid.

comment

string

A configurable comment available for use by the administrator. Valid in POST and PATCH.

enabled

boolean

The enabled state of the NVMe namespace. Namespaces can be disabled to prevent access to the namespace. Certain error conditions also cause the namespace to become disabled. If the namespace is disabled, you can consult the state property to determine if the namespace is administratively disabled (offline) or has become disabled as a result of an error. A namespace in an error condition can be brought online by setting the enabled property to true or brought administratively offline by setting the enabled property to false. Upon creation, an NVMe namespace is enabled by default. Valid in PATCH.

location

location

The location of the NVMe namespace within the ONTAP cluster. Valid in POST.

NVMe namespaces do not support rename, or movement between volumes.

  • readCreate: 1

name

string

The fully qualified path name of the NVMe namespace composed of a "/vol" prefix, the volume name, the (optional) qtree name and base name of the namespace. Valid in POST.

NVMe namespaces do not support rename, or movement between volumes.

os_type

string

The operating system type of the NVMe namespace.

Required in POST when creating an NVMe namespace that is not a clone of another. Disallowed in POST when creating a namespace clone.

space

space

The storage space related properties of the NVMe namespace.

status

status

Status information about the NVMe namespace.

subsystem_map

subsystem_map

The NVMe subsystem with which the NVMe namespace is associated. A namespace can be mapped to zero (0) or one (1) subsystems.

There is an added cost to retrieving property values for subsystem_map. They are not populated for either a collection GET or an instance GET unless explicitly requested using the fields query parameter. See DOC Requesting specific fields to learn more.

svm

svm

SVM, applies only to SVM-scoped objects.

uuid

string

The unique identifier of the NVMe namespace.

Name Type Description

next

href

self

href

error_arguments

Name Type Description

code

string

Argument code

message

string

Message argument

error

Name Type Description

arguments

array[error_arguments]

Message arguments

code

string

Error code

message

string

Error message

target

string

The target parameter that caused the error.