Skip to content

Commit 84e409c

Browse files
authored
Merge pull request #309330 from normesta/blobfuse2
BlobFuse2 import from GitHub
2 parents cf98b1b + 544b284 commit 84e409c

24 files changed

Lines changed: 3145 additions & 1578 deletions

articles/storage/.openpublishing.redirection.storage.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2879,6 +2879,11 @@
28792879
"source_path_from_root": "/articles/storage/file-sync/file-sync-storsimple-cost-comparison.md",
28802880
"redirect_url": "/previous-versions/azure/storage/file-sync/file-sync-storsimple-cost-comparison",
28812881
"redirect_document_id": false
2882+
},
2883+
{
2884+
"source_path_from_root": "/articles/storage/blobs/blobfuse2-how-to-deploy.md",
2885+
"redirect_url": "/azure/storage/blobs/blobfuse2-mount-container",
2886+
"redirect_document_id": false
28822887
}
28832888
]
28842889
}

articles/storage/blobs/TOC.yml

Lines changed: 1678 additions & 1061 deletions
Large diffs are not rendered by default.

articles/storage/blobs/blobfuse2-commands.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
title: How to use the BlobFuse2 command set
33
titleSuffix: Azure Storage
44
description: Learn how to use the BlobFuse2 command set to mount blob storage containers as file systems on Linux, and manage them.
5-
author: akashdubey-ms
5+
author: normesta
66
ms.service: azure-blob-storage
77
ms.custom: linux-related-content
8-
ms.topic: how-to
8+
ms.topic: reference
99
ms.date: 12/02/2022
10-
ms.author: akashdubey
10+
ms.author: normesta
1111
# Customer intent: As a Linux administrator, I want to use the BlobFuse2 command set to mount blob storage containers as file systems, so that I can efficiently manage and interact with cloud storage directly from the Linux environment.
1212
---
1313

@@ -48,6 +48,7 @@ The supported commands for BlobFuse2 are:
4848
| [secure](blobfuse2-commands-secure.md) | Encrypts or decrypts a configuration file, or gets or sets values in an encrypted configuration file |
4949
| [version](blobfuse2-commands-version.md) | Displays the current version of BlobFuse2 |
5050
| [help](blobfuse2-commands-help.md) | Gives help information about any command |
51+
| **gen-config** | Auto generate recommended BlobFuse2 config file |
5152

5253
## Arguments
5354

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
---
2+
title: BlobFuse and Linux file systems compared
3+
titleSuffix: Azure Storage
4+
description: Learn about the differences between a BlobFuse file system and a Linux file system.
5+
author: normesta
6+
ms.author: normesta
7+
8+
ms.service: azure-blob-storage
9+
ms.topic: reference
10+
ms.date: 1/29/2026
11+
12+
ms.custom: linux-related-content
13+
14+
# Customer intent: "As a developer or system administrator using BlobFuse, I want to understand how BlobFuse-mounted storage differs from native Linux file systems, so that I can set proper expectations and avoid potential issues when working with blob data."
15+
---
16+
17+
# BlobFuse and Linux file systems compared
18+
19+
This article describes the similarities and differences between BlobFuse and native Linux file systems.
20+
21+
## Similarities between BlobFuse and Linux file systems
22+
23+
You can use BlobFuse-mounted storage similarly to a native Linux file system. The virtual directory scheme uses the same forward slash (`/`) delimiter. Basic file system operations such as `mkdir`, `opendir`, `readdir`, `rmdir`, `open`, `read`, `create`, `write`, `close`, `unlink`, `truncate`, `stat`, and `rename` work the same as in a native Linux file system.
24+
25+
## Differences between BlobFuse and Linux file systems
26+
27+
- **Hard link count in readdir**: For performance reasons, BlobFuse doesn't correctly report the number of hard links inside a directory. The hard link count for empty directories always returns as 2, and for nonempty directories always returns as 3, regardless of the actual number of hard links.
28+
29+
- **Non-atomic renames**: Azure Blob Storage doesn't support atomic rename operations. Single-file renames are actually two operations: a copy followed by deletion of the original. Directory renames recursively enumerate all files in the directory and rename each file individually.
30+
31+
- **Special files**: BlobFuse supports only directories, regular files, and symbolic links. Special files like device files, pipes, and sockets aren't supported.
32+
33+
- **mkfifo**: Fifo creation isn't supported by BlobFuse. Attempting this action results in a "function not implemented" error.
34+
35+
- **chown and chmod**: BlobFuse doesn't support `chown` operations for either block blob storage (FNS) or Data Lake Storage (HNS). FNS storage accounts don't support `chmod` operations. HNS storage accounts support `chmod` operations but only on child objects within the mount directory, not on the root mount directory itself.
36+
37+
- **Device files or pipes**: BlobFuse doesn't support creating device files or pipes.
38+
39+
- **Extended-attributes (x-attrs)**: BlobFuse doesn't support extended-attributes (`x-attrs`) operations.
40+
41+
- **Write streaming**: Concurrent read and write operations on large files might produce unpredictable results. Writing to the same blob simultaneously from different threads isn't supported.
42+
43+
## Next steps
44+
45+
- [Install BlobFuse](blobfuse2-install.md)
46+
- [Configure BlobFuse](blobfuse2-configure.md)
47+
- [Mount an Azure Blob Storage container](blobfuse2-mount-container.md)
48+
49+
## See also
50+
51+
- [What is BlobFuse?](blobfuse2-what-is.md)
Lines changed: 25 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,66 @@
11
---
2-
title: How to configure settings for BlobFuse2
2+
title: How to configure settings for BlobFuse
33
titleSuffix: Azure Storage
4-
description: Learn how to configure settings for BlobFuse2.
4+
description: Learn how to configure settings for BlobFuse.
55
author: akashdubey-ms
66
ms.author: akashdubey
7+
ms.reviewer: normesta
78

89
ms.service: azure-blob-storage
910
ms.topic: how-to
10-
ms.date: 12/02/2022
11-
# Customer intent: "As a cloud administrator, I want to configure settings for BlobFuse2, so that I can effectively manage access, logging, caching, and permissions in my deployment."
11+
ms.date: 01/29/2026
12+
# Customer intent: "As a cloud administrator, I want to configure settings for BlobFuse, so that I can effectively manage access, logging, caching, and permissions in my deployment."
1213
---
1314

14-
# How to configure settings for BlobFuse2
15+
# How to configure settings for BlobFuse
1516

16-
You can use configuration settings to manage BlobFuse2 in your deployment. Through configuration settings, you can set these aspects of how BlobFuse2 works in your environment:
17+
You can configure BlobFuse by using various settings. Some of the typical settings include:
1718

18-
- Access to a storage blob
19-
- Logging
20-
- Pipeline engagement
21-
- Caching behavior
22-
- Permissions
19+
- Logging location and options
20+
- Temporary file path for caching
21+
- Information about the Azure storage account and blob container to be mounted
2322

24-
For a list of all BlobFuse2 settings and their descriptions, see the [base configuration file on GitHub](https://github.com/Azure/azure-storage-fuse/blob/main/setup/baseConfig.yaml).
23+
The settings can be configured in a YAML configuration file, using environment variables, or as parameters passed to the BlobFuse commands. The preferred method is to use the configuration file.
2524

26-
To manage configuration settings for BlobFuse2, you have three options (in order of precedence):
27-
28-
- [Configuration file](#configuration-file)
29-
- [Environment variables](#environment-variables)
30-
- [CLI parameters](#cli-parameters)
31-
32-
Using a configuration file is the preferred method, but the other methods might be useful in some circumstances.
25+
For details about each of the configuration parameters for BlobFuse and how to specify them, see these articles:
3326

3427
## Configuration file
3528

36-
Creating a configuration file is the preferred method to establish settings for BlobFuse2. When you've specified the settings you want in the configuration file, reference the configuration file when you use `blobfuse2 mount` or other commands.
29+
Creating a configuration file is the preferred method to establish settings for BlobFuse. When you've specified the settings you want in the configuration file, reference the configuration file when you use `blobfuse2 mount` or other commands.
3730

3831
Here's an example:
3932

4033
````bash
4134
blobfuse2 mount ./mount --config-file=./config.yaml
4235
````
4336

44-
The [BlobFuse2 base configuration file](https://github.com/Azure/azure-storage-fuse/blob/main/setup/baseConfig.yaml) contains a list of all settings and a brief explanation of each setting.
37+
To learn more about how to create a configuration file, see [Create a BlobFuse configuration file](blobfuse2-configure.md).
38+
39+
The [BlobFuse base configuration file](https://github.com/Azure/azure-storage-fuse/blob/main/setup/baseConfig.yaml) contains a list of all settings and a brief explanation of each setting.
4540

4641
Use the [sample file cache configuration file](https://github.com/Azure/azure-storage-fuse/blob/main/sampleFileCacheConfig.yaml) to get started quickly by using some basic settings for each of those scenarios.
4742

4843
## Environment variables
4944

50-
Setting environment variables is another way to configure some BlobFuse2 settings. The supported environment variables are useful for specifying the Azure Blob Storage container to access and the authorization method to use.
45+
Setting environment variables is another way to configure some BlobFuse settings. The supported environment variables are useful for specifying the Azure Blob Storage container to access and the authorization method to use.
5146

52-
For more information about using environment variables and a list of all variables you can use, see the [BlobFuse2 README](https://github.com/Azure/azure-storage-fuse/tree/main#environment-variables).
47+
For more information about using environment variables and a list of all variables you can use, see the [BlobFuse README](https://github.com/Azure/azure-storage-fuse/tree/main#environment-variables).
5348

5449
## CLI parameters
5550

56-
You also can set configuration settings when you pass them as parameters of the BlobFuse2 command set, such as by using the `blobfuse2 mount` command. The mount command typically references a configuration file that contains all the settings. But you can use CLI parameters to override individual settings in the configuration file. In this example, the *config.yaml* configuration file is referenced, but the container to be mounted and the logging options are overridden:
51+
You also can set configuration settings when you pass them as parameters of the BlobFuse command set, such as by using the `blobfuse2 mount` command. The mount command typically references a configuration file that contains all the settings. But you can use CLI parameters to override individual settings in the configuration file. In this example, the *config.yaml* configuration file is referenced, but the container to be mounted and the logging options are overridden:
5752

5853
```bash
5954
blobfuse2 mount ./mount_dir --config-file=./config.yaml --container-name=blobfuse2b --log-level=log_debug --log-file-path=./bobfuse2b.log
6055
```
6156

62-
For more information about the entire BlobFuse2 command set, including the `blobfuse2 mount` command, see [BlobFuse2 commands](blobfuse2-commands.md) and [BlobFuse2 mount commands](blobfuse2-commands-mount.md).
57+
For more information about the entire BlobFuse command set, including the `blobfuse2 mount` command, see [BlobFuse commands](blobfuse2-commands.md) and [BlobFuse2 mount commands](blobfuse2-commands-mount.md).
6358

64-
## See also
59+
## Next steps
6560

66-
- [Migrate to BlobFuse2 from BlobFuse v1](https://github.com/Azure/azure-storage-fuse/blob/main/MIGRATION.md)
67-
- [BlobFuse2 commands](blobfuse2-commands.md)
68-
- [Troubleshoot BlobFuse2 issues](blobfuse2-troubleshooting.md)
61+
- [Mount an Azure Blob Storage container on Linux by using BlobFuse](blobfuse2-mount-container.md)
6962

70-
## Next steps
63+
## See also
7164

72-
- [Mount an Azure Blob Storage container on Linux by using BlobFuse2](blobfuse2-how-to-deploy.md)
73-
- [Use Health Monitor to gain insights into BlobFuse2 mount activities and resource usage](blobfuse2-health-monitor.md)
65+
- [What is BlobFuse?](blobfuse2-what-is.md)
66+
- [BlobFuse2 commands](blobfuse2-commands.md)
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
---
2+
title: Configure BlobFuse for caching mode
3+
titleSuffix: Azure Storage
4+
description: Learn how to configure caching mode for BlobFuse mounts and optimize workloads for use with caching mode.
5+
author: normesta
6+
ms.author: normesta
7+
8+
ms.service: azure-blob-storage
9+
ms.topic: how-to
10+
ms.date: 1/29/2026
11+
12+
ms.custom: linux-related-content
13+
14+
# Customer intent: "As a developer using BlobFuse, I want to configure caching mode for my Azure Blob Storage mount, so that I can optimize performance for workloads that require repeated access to files and benefit from local caching."
15+
---
16+
17+
# Configure BlobFuse for caching mode
18+
19+
This article helps you configure BlobFuse to mount a container in _caching mode_. In _caching mode_, BlobFuse downloads the entire file from Azure Blob Storage into a local cache directory before making it available to the application.
20+
21+
> [!TIP]
22+
> You can mount a container in either _streaming mode_ or _caching mode_. To learn more about each mode, see [Streaming versus caching mode](blobfuse2-streaming-versus-caching.md).
23+
24+
## Configuration parameters
25+
26+
Specify the path of the local cache and an optional timeout in seconds.
27+
28+
The local cache (or _temporary path_) is where BlobFuse stores all open file contents. The timeout is the maximum time in seconds before data is refreshed after an update. For example, if your workflow requires file contents to be refreshed within three seconds of an update, set this timeout to `3`. If your workflow requires an instant refresh, then set the timeout to `0`. Setting the timeout to `0` gives you instant refresh of contents but at the cost of higher REST calls to storage.
29+
30+
The following example sets these values as parameters to the `mount` command.
31+
32+
```bash
33+
blobfuse2 mount ~/mycontainer --tmp-path=/tmp/blobfusecache --file-cache-timeout=120
34+
```
35+
36+
The following example shows how these settings appear in the BlobFuse configuration file.
37+
38+
```yaml
39+
file_cache:
40+
path: /tmp/blobfusecache
41+
timeout-sec: 120
42+
```
43+
44+
For complete example, see [Sample file cache configuration](https://github.com/Azure/azure-storage-fuse/blob/main/sampleFileCacheConfig.yaml).
45+
46+
> [!NOTE]
47+
> BlobFuse stores all open file contents in the temporary path. Make sure you have enough space to contain all open files.
48+
49+
## Configuring a temporary path
50+
51+
You can configure a temporary path on a local high performing disk, a RAM disk, or a solid state drive (SSD).
52+
53+
If you use an existing local disk for caching, choose a disk that provides the best performance possible, such as a solid-state disk (SSD).
54+
55+
In Azure, you can use the SSD ephemeral disks that are available on your virtual machines (VMs) to provide a low-latency buffer for BlobFuse. Depending on the provisioning agent you use, mount the ephemeral disk on `/mnt` for cloud-init or `/mnt/resource` for Microsoft Azure Linux Agent (waagent) VMs.
56+
57+
Make sure that your user has access to the temporary path.
58+
59+
```bash
60+
sudo mkdir /mnt/resource/blobfuse2tmp -p
61+
sudo chown <youruser> /mnt/resource/blobfuse2tmp
62+
```
63+
64+
If you use a RAM disk, choose a size that meets your requirements. The following example creates a RAM disk of 16 GB and a directory for BlobFuse. BlobFuse uses the RAM disk to open files that are up to 16 GB in size.
65+
66+
```bash
67+
sudo mkdir /mnt/ramdisk
68+
sudo mount -t tmpfs -o size=16g tmpfs /mnt/ramdisk
69+
sudo mkdir /mnt/ramdisk/blobfuse2tmp
70+
sudo chown <youruser> /mnt/ramdisk/blobfuse2tmp
71+
```
72+
73+
## Optimize performance by preloading data
74+
75+
In caching mode, BlobFuse waits for an open file system call. Upon receiving the open call, BlobFuse downloads the entire file to a local cache before using it. This behavior can make the initial load slower, especially for AI and machine learning tasks where the application is processing many files.
76+
77+
The preload feature helps by downloading entire containers or subdirectories to the local cache when you mount them. Preload enhances data availability, boosting efficiency and reducing wait times. This improvement is vital for AI training with large datasets as it prepares all necessary files in advance, saving GPU time and reducing costs. By combining preload with the [Blob Filter](https://github.com/Azure/azure-storage-fuse/wiki/Blobfuse-Blob-Filter) feature, you can access specific files in a container or subdirectory, offering extensive flexibility and optimizing GPU cycles.
78+
79+
To enable preload with file-cache mode, use the `--preload` parameter. The following command shows an example:
80+
81+
```bash
82+
blobfuse2 mount --preload /mnt/blobfuse_mnt --tmp-path=/home/temp_path
83+
```
84+
85+
> [!NOTE]
86+
> Preloading blob data makes the mount read-only and prevents file eviction. To access updated files, unmount and remount the volume. Newly added files can still be accessed by reading them. If a blob filter is used with preload, only the filtered files are preloaded and accessible via the BlobFuse mount.
87+
88+
### Considerations when using the preload feature
89+
90+
- Enabling preload makes the BlobFuse mount read-only.
91+
92+
- All file-caching options in CLI and config file are ignored except for the temporary path setting.
93+
94+
- Ensure sufficient disk space for all or filtered contents in the container. Insufficient space might cause partial loading and block new file access until you manually delete files from the local cache.
95+
96+
- Accessing a file immediately after mounting prioritizes it for download while preloading continues in the background.
97+
98+
- BlobFuse logs show preload status and disk warnings.
99+
100+
- The BlobFuse mount refreshes preloaded or opened files only if you manually delete them from the local cache and reopen them.
101+
102+
- BlobFuse doesn't automatically download blobs added to the storage container after preload but can access them by reading.
103+
104+
## Next steps
105+
106+
- [Configure BlobFuse for streaming mode](blobfuse2-configure-streaming.md)
107+
- [Streaming versus caching mode](blobfuse2-streaming-versus-caching.md)

0 commit comments

Comments
 (0)