# Volumes

## Create a volume

To create a volume, you must specify its size (in gigabytes). All other parameters are optional:

    // Create instance of OpenCloud\Volume\Resource\Volume
    $volume = $service->volume();

    $volume->create(array(
        'size'                => 200,
        'volume_type'         => $service->volumeType('<volume_type_id>'),
        'display_name'        => 'My Volume',
        'display_description' => 'Used for large object storage'
    ));

Get the executable PHP script for this example

## List volumes

    $volumes = $service->volumeList();

    foreach ($volumes as $volume) {
        /** @param $volumeType OpenCloud\Volume\Resource\Volume */
    }

Get the executable PHP script for this example

## Get details on a single volume

If you specify an ID on the `volume()` method, it retrieves information on the specified volume:

    $volume = $dallas->volume('<volume_id>');
    echo $volume->size;

Get the executable PHP script for this example

## To delete a volume

    $volume->delete();

Get the executable PHP script for this example

## Attach a volume to a server

    // retrieve server
    $computeService = $client->computeService('{catalogName}', '{region}');
    $server = $computeService->server('{serverId}');

    // attach volume
    $server->attachVolume($volume, '{mountPoint}')

The `{mountPoint}` is the location on the server on which to mount the volume (usually `/dev/xvhdd` or similar). You can also supply `'auto'` as the mount point, in which case the mount point will be automatically selected for you. `auto` is the default value for `{mountPoint}`, so you do not actually need to supply anything for that parameter.

## Detach a volume from a server

    $server->detachVolume($volume);