O Elastic File Client (EFC) acelera o acesso ao File Storage NAS usando cache distribuído. Esse cliente oferece suporte a alta concorrência e acesso paralelo a dados em grande escala, sendo ideal para workloads conteinerizadas com uso intensivo de dados, como análise de big data, treinamento de IA e inferência. Em comparação ao protocolo tradicional Network File System (NFS), o EFC proporciona desempenho de I/O significativamente superior e menor latência. Este tópico explica como montar um sistema de arquivos NAS usando o EFC por meio do Container Network File System (CNFS).
acelera o acesso ao File Storage NAS usando cache distribuído. Ele
O EFC exige nós com Alibaba Cloud Linux 3 ou ContainerOS e versão de kernel 5.10.134-17.2 ou posterior. Nós que não atendem a esses requisitos revertem automaticamente para o protocolo NFS durante a montagem. Verifique a compatibilidade dos nós antes de prosseguir.
Como o EFC funciona
O EFC é um cliente em espaço de usuário, compatível com POSIX e desenvolvido sobre FUSE (Filesystem in Userspace). Ele substitui os clientes NFS em modo kernel e fornece as seguintes capacidades principais:
Acesso multi-conexão
Cache de metadados e dados
Monitoramento integrado via Managed Service for Prometheus
Em comparação aos clientes NFS em modo kernel:
|
Capacidade |
Descrição |
|
Consistência forte de dados |
Um mecanismo de bloqueio distribuído mantém a consistência de arquivos e diretórios. Arquivos gravados tornam-se imediatamente visíveis para todos os outros clientes, e novos arquivos sincronizam instantaneamente entre os nós. |
|
Cache de leitura/gravação em nó único |
O EFC armazena dados em uma parte da memória do nó de computação. Isso melhora o throughput de arquivos pequenos e oferece ganhos de desempenho de I/O superiores a 50% em relação aos clientes NFS tradicionais. |
|
Pré-busca de arquivos pequenos |
Identifica e pré-carrega automaticamente diretórios e arquivos frequentes para reduzir a sobrecarga de busca de dados. |
|
Atualização dinâmica e failover |
Atualizações do cliente são aplicadas sem reiniciar as aplicações. Caso ocorra falha no cliente, o failover automático evita interrupções no serviço. |
Pré-requisitos
Antes de começar, certifique-se de ter:
O add-on
cnfs-nas-daemoninstalado no cluster, com a flagAlinasMountProxy=truedefinida no FeatureGate do csi-plugin. Consulte Gerenciar cnfs-nas-daemon para mais detalhes.Nós com Alibaba Cloud Linux 3 ou ContainerOS e versão de kernel 5.10.134-17.2 ou posterior.
Configure o CNFS para usar o cliente EFC
Passo 1: Crie um recurso CNFS
Esta seção mostra como configurar um sistema de arquivos NAS existente para usar o cliente EFC. Para criar um novo sistema de arquivos NAS por meio do CNFS com EFC, adicione useClient: EFCClient na seção parameters ao criar o recurso ContainerNetworkFileSystem. Consulte Usar CNFS para gerenciar sistemas de arquivos NAS (recomendado) para mais detalhes.
-
Salve o YAML abaixo como
cnfs-efc.yaml.Parâmetro
Descrição
descriptionDescrição do sistema de arquivos.
typeTipo de volume. Defina como
naspara sistemas de arquivos NAS.reclaimPolicyApenas
Retainé suportado. Excluir o recurso CNFS não remove o sistema de arquivos NAS subjacente.serverEndereço do destino de montagem. O destino deve estar na mesma VPC dos seus pods e seu status deve ser Ready. Para melhor desempenho, utilize o mesmo vSwitch tanto para o destino de montagem quanto para os pods. Se nenhum destino existente atender a esses requisitos, crie um novo.
useClientDefina como
EFCClientpara habilitar o cliente EFC.apiVersion: storage.alibabacloud.com/v1beta1 kind: ContainerNetworkFileSystem metadata: name: cnfs-efc-test spec: description: "cnfs" type: nas reclaimPolicy: Retain parameters: server: 17f7e4****-h****.cn-beijing.nas.aliyuncs.com useClient: EFCClient -
Crie o recurso CNFS:
kubectl create -f cnfs-efc.yaml
Passo 2: Criar PersistentVolume e PersistentVolumeClaim
Salve o YAML abaixo como cnfs-pv-pvc.yaml.
apiVersion: v1
kind: PersistentVolume
metadata:
name: efc-pv
spec:
accessModes:
- ReadWriteMany
capacity:
storage: 50Gi
claimRef:
name: efc-pvc
namespace: default
csi:
driver: nasplugin.csi.alibabacloud.com
volumeAttributes:
containerNetworkFileSystem: cnfs-efc-test
path: /
volumeHandle: efc-pv
volumeMode: Filesystem
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: efc-pvc
namespace: default
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 50Gi
storageClassName: ""
volumeMode: Filesystem
volumeName: efc-pv
Aplique a configuração:
kubectl create -f cnfs-pv-pvc.yaml
Montar o NAS em uma workload
Passo 1: Crie um Deployment
Salve o YAML abaixo como cnfs-deployment.yaml.
apiVersion: apps/v1
kind: Deployment
metadata:
name: efc-test
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: efc-test
template:
metadata:
labels:
app: efc-test
spec:
containers:
- command:
- sh
- -c
- |
sleep infinity
image: alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/alinux3:latest
name: test
volumeMounts:
- mountPath: /mnt
name: pvc
volumes:
- name: pvc
persistentVolumeClaim:
claimName: efc-pvc
Aplique a configuração:
kubectl create -f cnfs-deployment.yaml
Passo 2: Verifique a montagem EFC
-
Verifique se o pod está em execução:
kubectl get pod -l app=efc-testSaída esperada:
NAME READY STATUS RESTARTS AGE efc-test-f545b86d6-spr7p 1/1 Running 0 29m -
Quando o pod atingir o estado Running, confirme o ponto de montagem EFC dentro do pod:
kubectl exec <pod-name> -- mount -t fuse.aliyun-alinas-efcSaída esperada:
bindroot-3889a-8TzEY5mc:3d2804****-w****.cn-shanghai.nas.aliyuncs.com:/ on /mnt type fuse.aliyun-alinas-efc (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=1048576)O tipo de montagem
fuse.aliyun-alinas-efcconfirma que o EFC está ativo. Se a saída mostrarnfs, o nó não atende aos requisitos de SO ou kernel e reverteu para o protocolo NFS. Verifique a versão do SO e do kernel do nó em relação aos pré-requisitos.
Próximos passos
Usar CNFS para gerenciar sistemas de arquivos NAS — gerencie sistemas de arquivos NAS por meio do CNFS, incluindo provisionamento dinâmico para novos sistemas.
Gerenciar cnfs-nas-daemon — instale e configure o add-on
cnfs-nas-daemone o feature gateAlinasMountProxy.