lima-vm/lima · error
disk %#q already exists (%#q)
Error message
disk %#q already exists (%#q)
What it means
A disk with the given name already exists in the Lima store, detected by stat-ing the computed disk directory (store.DiskDir). Lima refuses to create a second disk with the same name; the message includes the conflicting directory path.
Source
Thrown at cmd/limactl/disk.go:106
return err
}
switch format {
case "qcow2", "raw":
default:
return fmt.Errorf("disk format %#q not supported, use `qcow2` or `raw` instead", format)
}
// only exactly one arg is allowed
name := args[0]
diskDir, err := store.DiskDir(name)
if err != nil {
return err
}
if _, err := os.Stat(diskDir); !errors.Is(err, fs.ErrNotExist) {
return fmt.Errorf("disk %#q already exists (%#q)", name, diskDir)
}
logrus.Infof("Creating %s disk %#q with size %s", format, name, units.BytesSize(float64(diskSize)))
if err := os.MkdirAll(diskDir, 0o700); err != nil {
return err
}
// qemu may not be available, use it only if needed.
dataDisk := filepath.Join(diskDir, filenames.DataDisk)
diskUtil := proxyimgutil.NewDiskUtil(ctx)
err = diskUtil.CreateDisk(ctx, dataDisk, diskSize)
if err != nil {
rerr := os.RemoveAll(diskDir)
if rerr != nil {
err = errors.Join(err, fmt.Errorf("failed to remove a directory %#q: %w", diskDir, rerr))
}
return fmt.Errorf("failed to create %s disk in %#q: %w", format, diskDir, err)View on GitHub (pinned to dd909d0973)
Solutions
- Use the existing disk: attach it with `additionalDisks` in the instance config instead of creating a new one
- Delete the old disk first: `limactl disk delete <name>` (add --force if in use)
- Pick a different disk name for the new disk
- If the directory is an orphan with no disk metadata, remove the directory manually and re-create
Example fix
// before
$ limactl disk create data --size 10GiB
// disk "data" already exists ("~/.lima/disks/data")
// after
$ limactl disk list
$ limactl disk delete data # or choose a new name
$ limactl disk create data2 --size 10GiB Defensive patterns
Strategy: validation
Validate before calling
const disks = await listDisks()
if (disks.some(d => d.name === name)) {
console.log(`disk ${name} exists; reuse it via additionalDisks`)
return
} Type guard
function diskExists(name: string, disks: {name: string}[]): boolean {
return disks.some(d => d.name === name)
} Try / catch
try {
await createDisk(name, { size })
} catch (err) {
if (/already exists/.test(err.message)) {
console.warn(`Reusing existing disk ${name}`)
} else throw err
} Prevention
- Run `limactl disk list` before creating disks
- Make disk-creation scripts idempotent (check-then-create)
- Clean up orphaned ~/.lima/disks/<name> dirs after failed operations
When it happens
Trigger: `limactl disk create <name>` when ~/.lima/disks/<name> (or the LIMA_HOME equivalent) already exists — from a previous create, a leftover from a failed deletion, or a name collision.
Common situations: Re-running an install script that creates disks idempotently-unaware; orphaned disk dir after an interrupted delete; accidentally reusing a disk name.
Related errors
- failed to unregister instance %#q from start at login: %w
- instance %#q not found
- failed to delete instance %#q: %w
- disk format %#q not supported, use `qcow2` or `raw` instead
- failed to remove a directory %#q: %w
AI-assisted analysis of lima-vm/lima@dd909d0973 (2026-09-01).
Data as JSON: /api/errors/4e537a7fd0f1c156.
Report an issue: GitHub.