# File system and storage

## Choose your context

In all of the following operations, we assume that you know [how to pick the appropriate context for your work](/features/navigate-in-nuvolos.md) (that is, finding the current state of an instance in which you are implicitly or explicitly an editor).

{% hint style="info" %}
Only current states can be modified - snapshots are immutable!
{% endhint %}

1. Navigate to the space containing the instance where you want to work by selecting the space from the dashboard or the space list.
2. Navigate to the instance where you want to work.

## Filesystems on Nuvolos

There are multiple storage options on Nuvolos, with different purposes and ideal use-cases.

### **Ephemeral Local Storage**

Many operating system files of your running application are served from a fast, but *ephemeral* storage. When you create [temp files](/features/applications/configuring-applications.md#temp-storage) in your application, these end up on this storage medium. It's fast, but limited in size to few GBs, and any changes to these files are lost on application stop (hence the name "ephemeral", which is the opposite of "persistent").

### **Nuvolos file system (NFS)**

While most of the top-level files and folders in your running application reside in the Ephemeral Local Storage, there are generally 3 folders in every Nuvolos applications which are backed by the NFS, which makes them persistent between restarts. Inside the applications, we call these folders [persistent locations](/features/applications/configuring-applications.md#persistent-locations), and they are exposed on the Nuvolos Web UI under the names **Workspace, Personal** and **Application**.

The three storage types have different *locality scopes* - how they are shared or private. In all cases, the locations are local to a given instance - so for example your Personal area is independent in any two separate instances on Nuvolos.

* **Workspace** or the **FILES area** is shared across all apps and users in a given instance.
* **Personal** or the **HOME area** is only visible to one user in one instance.
* **Application** or the **LIBRARY area** is shared across all users for a given application in a given instance.

Since these locations are persistent and accessible from multiple running applications, storage [quotas](#quota-usage) quotas are enforced at the instance level, and [total combined storage](/administration/monitoring-resource-usage/file-system-limits-and-capacities.md) usage is monitored at the resource pool level. These locations are best suited for storing between 1 GB and 100 GB of data.

### Large file storage (LFS)

The [large file storage](/features/file-system-and-storage/large-file-storage.md) is the persistent storage medium that can cost-efficiently support data above 100 GB sizes. Use this storage type to work with massive amounts of data. It is especially suitable for large, static files as read and write performance is good as long as large, contiguous blocks of data need to be read.

## Nuvolos file system quota

Each Nuvolos subscription has a storage allowance on the [Nuvolos file system](#nuvolos-file-system-nfs) that you are free to consume in as many spaces as you wish. However, to control situations with runaway storage allocation, each Nuvolos instance has a hard limit (quota) on how much data it is able to store. The only requirement is that your total combined storage usage should be in line with your subscription.

Thus, a space quota of 10 GB means that every instance in the space has 10 GB storage available. The limits for the instances are enforced independently — a lower usage in one instance does not allow for higher usage in another. Space administrators can [modify instance quotas](/administration/monitoring-resource-usage.md#modify-instance-quota).

## Quota usage

Instance editors and viewers can check the quota consumption of a particular instance in the Files menu.

1. Navigate to the space containing the instance where you want to inspect quota usage.
2. Navigate to the instance in question.
3. Click on the Folder icon to select the **Files** view.
4. On the Files view, in the top right corner you can see "% of GB used", which is the quota status.
5. You can click on the quota badge to bring up a detailed breakdown of your filesystem usage.

The usage statistics dialog shows three donut charts with detailed breakdowns:

* **TOTAL USAGE**: Combined storage across all persistent locations, showing Application files, Workspace files, Personal files, and Free space
* **PERSONAL USAGE**: Storage used in your personal home folder, broken down by user
* **APPLICATION USAGE**: Storage used by application libraries, broken down by application

In the top right of the usage dialog, you'll find a **QUOTAS >** link that takes you to the full quota management interface.

### Viewing and managing quotas

Space administrators have access to the detailed quota setting screen. One route is by [checking quota usage of a single instance](#quota-usage) and following the **QUOTAS >** link.

Another route:

1. Navigate to the space.
2. On the sidebar click the Cogwheel icon and select **Project Configuration**.
3. Pick the **QUOTAS AND USAGE** tab.

The quota management interface displays:

* **File system usage**: A color-coded bar chart showing the distribution of Workspace (blue), Personal (purple), and Application (green) storage with current usage amounts
* **File quotas**: Individual quota cards organized by instance type (Master, Distributed, Other). Each instance type shows four quota cards:
  * **Instance**: Overall instance quota.
  * **Workspace**: Workspace folder quota.
  * **Personal**: Personal folder quota.
  * **Application**: Application folder quota.

Each quota card displays:

* The quota size in GBs.
* A progress bar showing usage percentage.
* Current usage amount (e.g., "0.15 GB/20.00 GB").
* An **EDIT** button for space administrators to modify the quota.
* Some cards may also have a **VIEW USAGE** link for detailed breakdowns.

### Modifying quotas

Space administrators can modify quotas through the **QUOTAS AND USAGE** tab in the Project Configuration interface.

1. Navigate to the space.
2. On the sidebar click the Cogwheel icon and select **Project Users / Instances**.
3. Pick the **QUOTAS AND USAGE** tab.
4. Click the **EDIT** button on any quota card to open the **Edit File Quota** dialog.

The Edit File Quota dialog shows:

* The instance type and quota being edited (e.g., "Master / Instance")
* An input field labeled "File quota" where you can enter the new quota value in GB
* **CANCEL** and **SAVE** buttons

When editing a quota:

* You can set a custom quota value in GB (must be greater than zero).
* After saving, you will receive a summary email for the quota update task.
* If an instance's current usage is higher than the newly assigned quota, the quota update for that specific instance will not be applied and this will be flagged in the summary email.

{% hint style="warning" %}
To minimize errors, ensure that the current usage in all instances is not higher than the quota you plan to set before making changes.
{% endhint %}

{% hint style="info" %}
Keep in mind that your space's total storage allocation is managed by your resource pool. If you need to significantly increase quotas beyond what's currently available, contact Nuvolos support for assistance.
{% endhint %}

### Snapshots and storage

Snapshots do not multiply data on the file system.

File information that doesn't change across snapshots is not stored multiple times, however file information that is deleted in only one snapshot is *not freed* from the system.

When freeing up space, you have to make sure that the data you want removed is removed **from all snapshots**. Since snapshots cannot be modified partially, this means that if you want to get rid of some data in your project permanently, you have to retroactively also delete all snapshots which had that data object in them as of creation.

## The diff feature

It is possible to view the difference of two text files in two different snapshots. In this example, we assume that there was a snapshot taken in the instance.

* An orange dot next to a filename means that the file has not been snapshot yet - *Unsnapshotted file* status.
* A blue dot next to a filename means that the file has been snapshot and has been changed since the last snapshot taken.
* A green dot next to a filename means that the file has been snapshot and has not been changed since the last snapshot taken.

## The readme feature

If you create a file named `README.md` in a folder, the user interface of Nuvolos will try to interpret and render it as a markdown file. **The** `README.md` **created in the root directory will also be displayed on the space overview page.**

### Link to heading

It is possible to link to headings in README.md files using standard markdown syntax, however, you need to reference the target heading with its kebab-case equivalent. To make this easier, there is a dedicated button on the web UI.

1. Open the markdown file to **EDIT** -
   1. This can be done either by clicking **EDIT** on the top right of the Overview view or navigating to the file, or
   2. Navigating to the file, in **...**, select **EDIT**.
2. Inside the editor, the Anchor icon helps you create links.

Recommended flow:

1. Copy the target heading's text to the clipboard.
2. Move to the location in the document where you wish to insert the link.
3. Click the anchor button, and enter the display text for the link, then hit ok.
4. Paste the target headng's text and hit ok.
5. Now you have a working link. You can use the visual editor to update the display text anytime.

{% hint style="info" %}
You can do this in *every folder* if you want to - this is a great way to document contents of folders beyond the usual filename information you can provide yourself!
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.nuvolos.com/features/file-system-and-storage.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
