> ## Documentation Index
> Fetch the complete documentation index at: https://ppio.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 创建 Volume

`ppio.volume.create()` 用于创建一个新的持久化 Volume，可挂载到 Sandbox 中，在 Sandbox 生命周期之间共享和持久化数据。它返回一个携带 Volume ID 和名称的 `Volume` 实例。创建时可选择设置容量配额。

## 创建 Volume

<CodeGroup>
  ```python Python theme={null}
  from ppio_sandbox import PPIO

  ppio = PPIO()

  # 创建一个带有可选容量配额的 Volume
  volume = ppio.volume.create(
      "my-volume",
      quota_size_gib=10,      # 可选：容量配额，单位 GiB
  )

  print("Volume ID:", volume.volume_id)
  print("Name:", volume.name)
  ```

  ```typescript JavaScript & TypeScript theme={null}
  import { PPIO } from 'ppio-sandbox'

  const ppio = new PPIO()

  // 创建一个带有可选容量配额的 Volume
  const volume = await ppio.volume.create('my-volume', {
    quotaSizeGiB: 10,   // 可选：容量配额，单位 GiB
  })

  console.log('Volume ID:', volume.volumeId)
  console.log('Name:', volume.name)
  ```

  ```bash CLI theme={null}
  # Volume 创建已禁用，无法通过 CLI 创建新的 Volume。
  # 请使用 SDK（ppio.volume.create）或控制台创建。
  # 此处展示如何列出已存在的 Volume 供后续挂载。
  ppio volume list
  ```
</CodeGroup>

## 创建并挂载到 Sandbox

常见流程是：创建 Volume，创建 Sandbox，将 Volume 挂载到某个路径，使用后清理。写入挂载路径的数据在 Sandbox 被销毁后仍会保留在 Volume 中。

<CodeGroup>
  ```python Python theme={null}
  from ppio_sandbox import PPIO

  ppio = PPIO()

  # 1. 创建一个持久化 Volume。
  volume = ppio.volume.create("my-volume", quota_size_gib=10)

  # 2. 创建一个 Sandbox。
  sandbox = ppio.sandbox.create()

  try:
      # 3. 将 Volume 挂载到沙箱内的某个路径。
      sandbox.mount_volume(volume.name, "/mnt/data")

      # 4. 向挂载的 Volume 写入数据——数据会持久化在 Volume 中。
      sandbox.commands.run("echo 'hello volume' > /mnt/data/note.txt")
      result = sandbox.commands.run("cat /mnt/data/note.txt")
      print(result.stdout)
  finally:
      # 5. 清理 Sandbox。Volume 及其中的数据仍然保留。
      sandbox.kill()
  ```

  ```typescript JavaScript & TypeScript theme={null}
  import { PPIO } from 'ppio-sandbox'

  const ppio = new PPIO()

  // 1. 创建一个持久化 Volume。
  const volume = await ppio.volume.create('my-volume', { quotaSizeGiB: 10 })

  // 2. 创建一个 Sandbox。
  const sandbox = await ppio.sandbox.create()

  try {
      // 3. 将 Volume 挂载到沙箱内的某个路径。
      await sandbox.mountVolume(volume.name, '/mnt/data')

      // 4. 向挂载的 Volume 写入数据——数据会持久化在 Volume 中。
      await sandbox.commands.run("echo 'hello volume' > /mnt/data/note.txt")
      const result = await sandbox.commands.run('cat /mnt/data/note.txt')
      console.log(result.stdout)
  } finally {
      // 5. 清理 Sandbox。Volume 及其中的数据仍然保留。
      await sandbox.kill()
  }
  ```

  ```bash CLI theme={null}
  # Volume 无法通过 CLI 创建（已禁用），需先用 SDK 或控制台创建 Volume。
  # 以下展示将已存在的 Volume 挂载到 Sandbox：
  ppio volume mount <sandbox_id> --name my-volume --path /mnt/data

  # 向挂载路径写入数据——数据持久化在 Volume 中
  ppio sandbox exec <sandbox_id> "echo 'hello volume' > /mnt/data/note.txt"

  # 清理 Sandbox。Volume 及其中的数据仍然保留。
  ppio sandbox kill <sandbox_id>
  ```
</CodeGroup>

<Note>
  Volume 独立于任何 Sandbox 持久存在。使用 `sandbox.mount_volume(name, path)` 将其挂载到 Sandbox；写入挂载路径下的数据在 Sandbox 被销毁后仍保留在 Volume 中，并可再次挂载到其他 Sandbox。
</Note>
