|
| 1 | +## NFSv3 support |
| 2 | +[NFS 3.0 protocol support on Azure Blob storage](https://docs.microsoft.com/en-us/azure/storage/blobs/network-file-system-protocol-support) is now in Preview. This service is best suited for large scale read-heavy sequential access workload where data will be ingested once and minimally modified further. E.g. large scale analytic data, backup and archive, NFS apps for media rendering, and genomic sequencing etc. It offers lowest total cost of ownership. |
| 3 | + |
| 4 | +#### Feature Status: Alpha |
| 5 | +> supported OS: Linux |
| 6 | +
|
| 7 | +#### Available regions |
| 8 | +`eastus`, `centralus`, `canadacentral` |
| 9 | + |
| 10 | +#### Prerequisite |
| 11 | + - [Register the NFS 3.0 protocol feature with your subscription](https://docs.microsoft.com/en-us/azure/storage/blobs/network-file-system-protocol-support-how-to#step-1-register-the-nfs-30-protocol-feature-with-your-subscription) |
| 12 | +```console |
| 13 | +az feature register --name AllowNFSV3 --namespace Microsoft.Storage |
| 14 | +az feature register --name PremiumHns --namespace Microsoft.Storage |
| 15 | +az provider register --namespace Microsoft.Storage |
| 16 | +``` |
| 17 | + |
| 18 | + - [install CSI driver](https://github.com/kubernetes-sigs/blobfuse-csi-driver/blob/master/docs/install-csi-driver-master.md) (only master version supported now) |
| 19 | + - Create a `Premium_LRS` Azure storage account with following configurations to support NFS 3.0 |
| 20 | + - account kind: `BlockBlobStorage` |
| 21 | + - Replication: `Locally-redundant storage (LRS)` |
| 22 | + - secure transfer required(enable HTTPS traffic only): `false` |
| 23 | + - select virtual network of agent nodes in `Firewalls and virtual networks` |
| 24 | + - Hierarchical namespace: `Enabled` |
| 25 | + - NFS V3: `Enabled` |
| 26 | + |
| 27 | +#### How to use NFS feature |
| 28 | + - Create an Azure File storage class |
| 29 | +> specify `storageAccount` and `protocol: nfs` in storage class `parameters` |
| 30 | +> </br>for more details, refer to [driver parameters](../../../docs/driver-parameters.md) |
| 31 | +```yaml |
| 32 | +apiVersion: storage.k8s.io/v1 |
| 33 | +kind: StorageClass |
| 34 | +metadata: |
| 35 | + name: blob |
| 36 | +provisioner: blobfuse.csi.azure.com |
| 37 | +parameters: |
| 38 | + resourceGroup: EXISTING_RESOURCE_GROUP_NAME # optional, only set this when storage account is not in the same resource group as agent node |
| 39 | + storageAccount: EXISTING_STORAGE_ACCOUNT_NAME |
| 40 | + protocol: nfs |
| 41 | +``` |
| 42 | +
|
| 43 | +run following command to create a storage class: |
| 44 | +```console |
| 45 | +wget https://raw.githubusercontent.com/kubernetes-sigs/blobfuse-csi-driver/master/deploy/example/storageclass-blob-nfs.yaml |
| 46 | +# set `storageAccount` in storageclass-blob-nfs.yaml |
| 47 | +kubectl create -f storageclass-blob-nfs.yaml |
| 48 | +``` |
| 49 | + |
| 50 | +### Example |
| 51 | + - Create a deployment with NFSv3 on Azure storage |
| 52 | +```console |
| 53 | +kubectl create -f https://raw.githubusercontent.com/kubernetes-sigs/blobfuse-csi-driver/master/deploy/example/statefulset.yaml |
| 54 | +``` |
| 55 | + |
| 56 | + - enter pod to check |
| 57 | +```console |
| 58 | +$ exec -it statefulset-blobfuse-0 bash |
| 59 | +# df -h |
| 60 | +Filesystem Size Used Avail Use% Mounted on |
| 61 | +... |
| 62 | +/dev/sda1 29G 11G 19G 37% /etc/hosts |
| 63 | +accountname.blob.core.windows.net:/accountname/pvc-cce02240-5d13-4bcb-b9eb-f9c7eeaaa640 256T 0 256T 0% /mnt/blobfuse |
| 64 | +... |
| 65 | +``` |
0 commit comments