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

  1. Use the existing disk: attach it with `additionalDisks` in the instance config instead of creating a new one
  2. Delete the old disk first: `limactl disk delete <name>` (add --force if in use)
  3. Pick a different disk name for the new disk
  4. 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

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


AI-assisted analysis of lima-vm/lima@dd909d0973 (2026-09-01). Data as JSON: /api/errors/4e537a7fd0f1c156. Report an issue: GitHub.