---
title: DiskImage
framework: diskimagekit
role: symbol
role_heading: Class
path: diskimagekit/diskimage
---

# DiskImage

The representation of an open disk image

## Declaration

```swift
class DiskImage
```

## Overview

Overview To use a disk image as storage for virtual machine, use this object with the Virtualization API method init(diskImage:cachingMode:synchronizationMode:). In addition, it contains properties that describe the disk image and operations to manipulate it. An image can either be standalone or part of a stack. For more information on stacked disk image, see StackedImage. The following example demonstrates how to create a stacked disk image with 3 layers: // Open the base image. let baseImage = try DiskImage(opening: .open(url: baseImageURL))

// Append a new cache layer, var stackedImage = try baseImage.appending(.asifLayer(url: cacheURL, type: .cache))

// Append an existing overlay layer, let overlayImage = try DiskImage(opening: .open(url: overlayURL)) stackedImage = try stackedImage.appending(overlayImage)

// Append a new overlay layer. stackedImage = try stackedImage.appending(.asifLayer(url: overlayURL, type: .overlay)) The example demonstrates how to create a standalone, 512 GB (1 billion block) ASIF disk image: _ = try DiskImage(creating: .asif(url: imageURL, blockCount: 1000000000, blockSize: .bytes512))

## Topics

### Protocols

- [DiskImage.CreationConfiguration](diskimagekit/diskimage/creationconfiguration.md)
- [DiskImage.StackableLayer](diskimagekit/diskimage/stackablelayer.md)

### Structures

- [DiskImage.LayerType](diskimagekit/diskimage/layertype-swift.struct.md)

### Initializers

- [init(creating:)](diskimagekit/diskimage/init(creating:).md)
- [init(opening:)](diskimagekit/diskimage/init(opening:).md)

### Instance Properties

- [blockCount](diskimagekit/diskimage/blockcount.md)
- [blockSize](diskimagekit/diskimage/blocksize-swift.property.md)
- [format](diskimagekit/diskimage/format-swift.property.md)
- [layerType](diskimagekit/diskimage/layertype-swift.property.md)
- [layerUUID](diskimagekit/diskimage/layeruuid.md)
- [openMode](diskimagekit/diskimage/openmode.md)
- [parentUUID](diskimagekit/diskimage/parentuuid.md)
- [size](diskimagekit/diskimage/size.md)
- [url](diskimagekit/diskimage/url.md)

### Instance Methods

- [appending(_:)](diskimagekit/diskimage/appending(_:)-3pfqg.md)
- [appending(_:)](diskimagekit/diskimage/appending(_:)-4wifj.md)
- [truncate(blockCount:)](diskimagekit/diskimage/truncate(blockcount:).md)

### Enumerations

- [DiskImage.BlockSize](diskimagekit/diskimage/blocksize-swift.enum.md)
- [DiskImage.Format](diskimagekit/diskimage/format-swift.enum.md)

## Relationships

### Inherited By

- [StackedImage](diskimagekit/stackedimage.md)

## See Also

### Essential Types

- [StackedImage](diskimagekit/stackedimage.md)
- [OpenConfigurationProtocol](diskimagekit/openconfigurationprotocol.md)
- [OpenConfiguration](diskimagekit/openconfiguration.md)
- [OpenConfiguration.Mode](diskimagekit/openconfiguration/mode-swift.enum.md)
