-
Notifications
You must be signed in to change notification settings - Fork 53
Update docs.json #746
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update docs.json #746
Changes from all commits
bc5d995
b4fd143
111a14d
fbcfd72
012395a
b5fbd75
c2b3f40
1f0e377
e77a17a
4b5ab2e
b9b6111
3a6aac1
820c568
2071664
474c0c7
aea9835
e5be34e
4053e32
175e30b
5082c66
933b802
e07f3e5
0ec562b
e863b08
e07315e
e2e0296
641b93e
8f87667
3d4208e
8865ec1
cc979dc
d1ce21b
e938dc2
c95688f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,101 @@ | ||
| --- | ||
|
Check warning on line 1 in storage/globalstore.mdx
|
||
| title: "Global Volumes" | ||
| sidebarTitle: "Global Volumes" | ||
| description: "Global Volumes are elastic, region-independent storage you can attach to any Pod, from any Runpod data center, without copying data to each data center." | ||
| tag: "Beta" | ||
| --- | ||
|
|
||
| <Note> | ||
| Global Volumes are in beta. Features and behavior may change before general availability. | ||
| </Note> | ||
|
|
||
| A global volume is elastic, region-independent storage you can attach to any Pod. Unlike a network volume, a global volume is not tied to a specific data center. You create it once and any Pod, anywhere, can mount it at startup. The volume persists when a Pod is stopped or deleted — your data remains intact until you choose to remove it. | ||
|
Check warning on line 12 in storage/globalstore.mdx
|
||
|
|
||
| Global Volumes are designed for workloads that write data infrequently and read it often, such as model serving and inference. They are not a replacement for network volumes, which are better suited for workloads with frequent writes such as training and checkpointing. | ||
|
Check warning on line 14 in storage/globalstore.mdx
|
||
|
|
||
| ## Create a global volume | ||
|
|
||
| 1. In the left nav, go to **Storage**. | ||
| 2. Click **+ New volume**. | ||
| 3. Under **Storage type**, select **Global volume**. | ||
| 4. Enter a **Name** for the volume. | ||
| 5. Click **Create global volume**. | ||
|
|
||
| The volume appears in your Storage list with the type set to **Global**. Storage grows automatically as you add data. There is no capacity to provision upfront. | ||
|
|
||
| <Warning> | ||
| If your account balance reaches $0, your global volume is flagged and permanently deleted after 15 days. Enable [low balance notifications](/accounts-billing/billing#low-balance-notifications) to avoid data loss. | ||
| </Warning> | ||
|
|
||
| ## Attach a global volume to a Pod | ||
|
|
||
| You can attach a global volume when deploying a new Pod using either of the following methods. | ||
|
|
||
| **From Storage:** Click your global volume, then click **Configure Pod with volume**. This opens the Pod deployment page with the volume pre-selected. | ||
|
|
||
| **During Pod deployment:** | ||
|
|
||
| 1. Go to **Pods** and click **+ Deploy**. | ||
| 2. Select a template and GPU. | ||
| 3. Scroll to the **Storage** section. | ||
| 4. Under **Persistent storage**, set the type to **Storage volume**. | ||
| 5. Click the **Storage volume** dropdown and select your volume from the **Global volumes** section. | ||
| 6. Click **Deploy Pod**. | ||
|
|
||
| ## Access your files | ||
|
|
||
| The mount path is set at deploy time and does not change while the Pod is running. | ||
|
Check warning on line 47 in storage/globalstore.mdx
|
||
|
|
||
| A global volume defaults to `/workspace`. If you add a network volume during deployment without changing the global volume's mount path, the deploy flow automatically shifts the global volume to `/workspace-global` so both volumes can be mounted without conflict. The network volume then mounts at `/workspace`. | ||
|
|
||
| If you edit the global volume's mount path field during deployment (rather than leaving the default), the network volume is assigned `/workspace-2` instead. | ||
|
Check warning on line 51 in storage/globalstore.mdx
|
||
|
|
||
| You can verify the volume is mounted by running `ls` on the mount path from the Pod's **Console** tab. For example, if your global volume is at `/workspace-global`: | ||
|
|
||
| ```bash | ||
| ls /workspace-global | ||
| ``` | ||
|
|
||
| ## Migrate data from a network volume | ||
|
|
||
| If you have data on a network volume that you want to move to a global volume, you can use `rsync`. When both volumes are attached without a custom mount path, the network volume is at `/workspace` and the global volume is at `/workspace-global`. Verify your paths in the Pod's **Console** tab before running the command. | ||
|
|
||
| 1. Deploy a Pod with both your network volume and global volume attached (see [Attach a global volume to a Pod](#attach-a-global-volume-to-a-pod)). | ||
| 2. Run the following command from the Pod's **Console** tab: | ||
|
|
||
| ```bash | ||
| rsync --archive --verbose --human-readable /workspace/ /workspace-global/ | ||
| ``` | ||
| 3. Once the data is copied, delete the Pod. | ||
| 4. You can now delete the network volume from the **Storage** page. | ||
|
|
||
| <Note> | ||
| You cannot delete a network volume while it is attached to a running Pod. | ||
| </Note> | ||
|
|
||
| There is no in-console conversion tool. Migration must be done manually. | ||
|
|
||
| ## Recommended workloads | ||
|
|
||
| Global Volumes work best for workloads that primarily read large files and do not require high-throughput concurrent writes. | ||
|
Check warning on line 80 in storage/globalstore.mdx
|
||
|
|
||
| - **Model serving and inference:** Load model weights, tokenizer files, and configuration from a shared volume at Pod startup, without baking large files into your Docker image. | ||
| - **Shared assets across Pods:** Serve LoRA adapters, embedding indices, or prompt templates that multiple Pods need to read from a central location. | ||
| - **Read-only configuration:** Distribute scripts, config files, or small datasets consistently across a fleet of Pods. | ||
|
|
||
| ## Limitations | ||
|
|
||
| Global Volumes use object-backed storage, not a fully POSIX compliant file system. Review the following before using Global Volumes in production. | ||
|
|
||
| - **One volume of each type per Pod:** Each Pod currently supports a maximum of one global volume and one network volume at a time. | ||
| - **Not suitable for training writes:** Writing large volumes of data such as checkpoints, logs, and activations to a global volume during training is not supported. Use a network volume for workloads that write frequently. | ||
| - **Limited POSIX semantics:** Global Volumes do not support file locking, atomic rename, or hard links. Applications that depend on POSIX behavior may fail or produce unexpected results. | ||
|
Check warning on line 92 in storage/globalstore.mdx
|
||
| - **No permission bits:** Global Volumes cannot set file permission bits. This may produce warnings when downloading models from sources such as Hugging Face. | ||
| - **No concurrent writes across Pods:** Multiple Pods writing to the same global volume concurrently can cause data corruption or overwrite conflicts. Use a network volume for shared mutable storage. | ||
| - **Eventual consistency:** Global Volumes use object storage, which means updates made to the volume after the Pod starts may not be immediately visible inside the container. Plan your workload around the state of the volume at mount time. | ||
|
|
||
| ## Next steps | ||
|
|
||
| - [Manage network volumes](/storage/network-volumes) | ||
| - [Use the S3-compatible API](/storage/s3-api) | ||
| - [Deploy a Pod](/pods/manage-pods) | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,102 @@ | ||
| --- | ||
|
Check warning on line 1 in storage/globalvolume.mdx
|
||
| title: "Global volumes" | ||
| sidebarTitle: "Global volumes" | ||
| description: "Learn how to create a global volume in Runpod and access your data from Pods across all data centers, with storage that persists across sessions." | ||
| tag: "Beta" | ||
| --- | ||
|
|
||
| <Note> | ||
| Global volumes are in beta. Features and behavior may change before general availability. | ||
| </Note> | ||
|
|
||
| A global volume is elastic, region-independent storage you can attach to any Pod. Unlike a network volume, a global volume is not tied to a specific data center. You create it once and any Pod, anywhere, can mount it at startup. The volume persists when a Pod is stopped or deleted. Your data remains intact until you choose to remove it. | ||
|
Check warning on line 12 in storage/globalvolume.mdx
|
||
|
|
||
| Global volumes are designed for workloads that write data infrequently and read it often, such as model serving and inference. They are not a replacement for network volumes, which are better suited for workloads with frequent writes such as training and checkpointing. | ||
|
Check warning on line 14 in storage/globalvolume.mdx
|
||
|
|
||
| ## Create a global volume | ||
|
|
||
| 1. In the left nav, go to **Storage**. | ||
| 2. Click **+ New volume**. | ||
| 3. Under **Storage type**, select **Global volume**. | ||
| 4. Enter a **Name** for the volume. | ||
| 5. Click **Create global volume**. | ||
|
|
||
| The volume appears in your Storage list with the type set to **Global**. Storage grows automatically as you add data. There is no capacity to provision upfront. | ||
|
|
||
| <Warning> | ||
| If your account balance reaches \$0, your global volume is flagged and permanently deleted after 15 days. Enable [low balance notifications](/accounts-billing/billing#low-balance-notifications) to avoid data loss. | ||
| </Warning> | ||
|
|
||
| ## Attach a global volume to a Pod | ||
|
|
||
| You can attach a global volume when deploying a new Pod using either of the following methods. | ||
|
|
||
| **From Storage:** Click your global volume, then click **Configure Pod with volume**. This opens the Pod deployment page with the volume pre-selected. | ||
|
|
||
| **During Pod deployment:** | ||
|
|
||
| 1. Go to **Pods** and click **+ Deploy**. | ||
| 2. Select a template and GPU. | ||
| 3. Scroll to the **Storage** section. | ||
| 4. Under **Persistent storage**, set the type to **Storage volume**. | ||
| 5. Click the **Storage volume** dropdown and select your volume from the **Global volumes** section. | ||
| 6. Click **Deploy Pod**. | ||
|
|
||
| ## Access your files | ||
|
|
||
| The mount path is set at deploy time and does not change while the Pod is running. | ||
|
Check warning on line 47 in storage/globalvolume.mdx
|
||
|
|
||
| A global volume defaults to `/workspace`. If you add a network volume during deployment without changing the global volume's mount path, the deploy flow automatically shifts the global volume to `/workspace-global` so both volumes can be mounted without conflict. The network volume then mounts at `/workspace`. | ||
|
|
||
| If you edit the global volume's mount path field during deployment (rather than leaving the default), the network volume is assigned `/workspace-2` instead. | ||
|
Check warning on line 51 in storage/globalvolume.mdx
|
||
|
|
||
| You can verify the volume is mounted by running `ls` on the mount path from the Pod's **Console** tab. For example, if your global volume is at `/workspace-global`: | ||
|
|
||
| ```bash | ||
| ls /workspace-global | ||
| ``` | ||
|
|
||
| ## Migrate data from a network volume | ||
|
|
||
| If you have data on a network volume that you want to move to a global volume, you can use `rsync`. When both volumes are attached without a custom mount path, the network volume is at `/workspace` and the global volume is at `/workspace-global`. Verify your paths in the Pod's **Console** tab before running the command. | ||
|
|
||
| 1. Deploy a Pod with both your network volume and global volume attached (see [Attach a global volume to a Pod](#attach-a-global-volume-to-a-pod)). | ||
| 2. Run the following command from the Pod's **Console** tab: | ||
|
|
||
| ```bash | ||
| rsync -avh /workspace/ /workspace-global/ | ||
| ``` | ||
|
|
||
| 3. Once the data is copied, delete the Pod. | ||
| 4. You can now delete the network volume from the **Storage** page. | ||
|
|
||
| <Note> | ||
| You cannot delete a network volume while it is attached to a running Pod. | ||
| </Note> | ||
|
|
||
| There is no in-console conversion tool. Migration must be done manually. | ||
|
|
||
| ## Recommended workloads | ||
|
|
||
| Global volumes work best for workloads that primarily read large files and do not require high-throughput concurrent writes. | ||
|
Check warning on line 81 in storage/globalvolume.mdx
|
||
|
|
||
| - **Model serving and inference:** Load model weights, tokenizer files, and configuration from a shared volume at Pod startup, without baking large files into your Docker image. | ||
| - **Shared assets across Pods:** Serve LoRA adapters, embedding indices, or prompt templates that multiple Pods need to read from a central location. | ||
| - **Read-only configuration:** Distribute scripts, config files, or small datasets consistently across a fleet of Pods. | ||
|
|
||
| ## Limitations | ||
|
|
||
| Global volumes use object-backed storage, not a fully POSIX compliant file system. Review the following before using global volumes in production. | ||
|
|
||
| - **One volume of each type per Pod:** Each Pod currently supports a maximum of one global volume and one network volume at a time. | ||
| - **Not suitable for training writes:** Writing large volumes of data to a global volume during training is not recommended. Use a network volume for workloads that write frequently. | ||
| - **Limited POSIX semantics:** Global volumes do not support file locking, atomic rename, or hard links. Applications that depend on POSIX behavior may fail or produce unexpected results. | ||
|
Check warning on line 93 in storage/globalvolume.mdx
|
||
| - **No permission bits:** Global volumes cannot set file permission bits. This may produce warnings when downloading models from sources such as Hugging Face. | ||
| - **No concurrent writes across Pods:** Multiple Pods writing to the same global volume concurrently can cause data corruption or overwrite conflicts. Use a network volume for shared mutable storage. | ||
| - **Eventual consistency:** Global volumes use object storage, which means updates made to the volume after the Pod starts may not be immediately visible inside the container. Plan your workload around the state of the volume at mount time. | ||
|
|
||
| ## Next steps | ||
|
|
||
| - [Manage network volumes](/storage/network-volumes) | ||
| - [Use the S3-compatible API](/storage/s3-api) | ||
| - [Deploy a Pod](/pods/manage-pods) | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe more readable?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@promtpless can you update the command like this :
Where:
-a: copies all files and subdirectories, preserving timestamps, permissions, and symlinks-v: prints each file as it transfers-h: displays file sizes in a human-readable format (KB, MB, GB)