SandboxesPersistent Volumes

Persistent Volumes

Том в Lizard (lizard.build) хранит данные после остановки Sandbox. Он подключается в /workspace, к одной Sandbox за раз. Sandbox работает на том же узле, что и том.

Создание и подключение по имени

Имена уникальны в пределах проекта. Используйте строчные латинские буквы, цифры и дефисы, до 64 символов. Имя должно начинаться и заканчиваться буквой или цифрой.

Чтобы повторно использовать том с заданным именем, вызовите getOrCreate. Размер действует только при создании нового тома; метод не меняет размер существующего. Volume.create возвращает конфликт, если имя занято.

import { Sandbox, Volume } from '@lizard-build/sdk';
 
await Volume.getOrCreate('proj_123', 'agent-workdir', { sizeGb: 10 });
const sandbox = await Sandbox.create('base', {
  projectId: 'proj_123', volumeName: 'agent-workdir',
});
try {
  await sandbox.fs.write('/workspace/state.json', JSON.stringify({ step: 1 }));
} finally {
  await sandbox.kill();
}
 
// A later sandbox mounts the same data by name.
const next = await Sandbox.create('base', {
  projectId: 'proj_123', volumeName: 'agent-workdir',
});
try {
  console.log(await next.fs.read('/workspace/state.json'));
} finally {
  await next.kill();
}
from lizard import Sandbox, Volume
 
Volume.get_or_create("proj_123", "agent-workdir", size_gb=10)
sandbox = Sandbox.create("base", project_id="proj_123", volume_name="agent-workdir")
try:
    sandbox.process.exec_("echo hello > /workspace/state.txt")
finally:
    sandbox.kill()

Размер и цена

Новые тома допускают 1–50 GB, только целые GB, по умолчанию 5 GB. Сервер может менять предел через VOLUME_MAX_SIZE_GB; панель управления и CLI читают текущие ограничения и цену хранения из GET /api/projects/:projectId/volume-limits.

Вы платите за занятое место, а не за весь выделенный объём. Существующие тома больше нового предела сохраняют размер и остаются доступны. Тома одного рабочего пространства могут занимать в сумме до 200 GB выделенного размера; создание или изменение размера сверх этого возвращает 403 с кодом volume_quota_exceeded.

Управление томами

await Volume.list('proj_123');
const volume = await Volume.get('proj_123', 'agent-workdir');
await volume.getInfo('proj_123');
await Volume.resize('proj_123', 'agent-workdir', 20);
await Volume.delete('proj_123', 'agent-workdir'); // detach first
TypeScriptPythonНазначение
Volume.getOrCreate(projectId, name, options)Volume.get_or_create(project_id, name, size_gb=5)Использовать том или создать его
Volume.create(projectId, name, options)Volume.create(project_id, name, size_gb=5)Создать; вернуть ошибку, если имя занято
Volume.list(projectId)Volume.list(project_id)Список томов проекта
Volume.get(projectId, nameOrId)Volume.get(project_id, name_or_id)Найти том
Volume.resize(projectId, nameOrId, sizeGb)Volume.resize(project_id, name_or_id, size_gb)Изменить размер
Volume.delete(projectId, nameOrId)Volume.remove(project_id, name_or_id)Удалить отключённый том

Сгенерированные ID и поля volumeId / volume_id по-прежнему работают. В новом коде используйте имена.

Volume.resize увеличивает том на месте. Sandbox, к которой подключён том, продолжает работать, но видит прежний размер; новый размер видит следующая Sandbox, которая подключит том. Том можно только увеличивать. Некоторые тома, созданные до октября 2026 года, можно и уменьшать, если после этого останется свободным не менее 10% нового размера.

CLI

lizard volume create agent-workdir --size 10 --project proj_123
lizard volume list --project proj_123
lizard sandbox create --volume agent-workdir --project proj_123
lizard volume resize agent-workdir --size 20 --project proj_123
# After stopping the sandbox:
lizard volume rm agent-workdir --project proj_123

--size принимает целые GB и проверяет текущий предел сервера до создания тома. volume list показывает имена; для ID используйте --json.

Панель управления

Создавайте и подключайте тома через SDK или CLI. Страница Volumes в боковой панели показывает для каждого тома занятое и выделенное место, статус и подключённую Sandbox. Там же можно просматривать файлы, менять размер или удалять том.

Жизненный цикл хранения

  • Остановка Sandbox или истечение её срока отключает том и сохраняет данные.

  • Подключённый том нельзя подключить к другой Sandbox или удалить.

  • Удаление тома удаляет его данные. Тома хранят данные на узле; экспортируйте данные, которые нужны после отказа узла. См. хранение и восстановление.

  • Без тома /workspace лежит на диске sandbox: пауза и снимок сохраняют её файлы, а kill или истечение срока их удаляет.

  • Sandbox с подключённым томом нельзя скопировать через fork (HTTP 409).

  • Снимок Sandbox с подключённым томом содержит копию файлов тома на момент снимка. Каждое восстановление получает эту копию, а не сам том, и не может подключить другой том. Любой, кто может восстановить снимок, может прочитать эти файлы; см. снимки.

Параметры Sandbox описаны в справочнике SDK, а паузу, снимки и fork описывает раздел жизненный цикл.

Обновлено