网络附加存储 NAS

本指南介绍如何将 NAS配置为 Alluxio 底层存储系统的操作步骤。 NAS(Network Attached Storage)是一种通过网络(如以太网)提供集中存储服务的设备或架构,支持多协议(如NFS、SMB、AFP等),允许客户端访问共享存储资源, 它常用于跨网络环境访问远程文件,在 Linux 系统中常用于共享存储。有关 NAS 和 NFS 的更多信息,请参考 Ubuntu NFS 文档

Alluxio支持两种方式,将 NAS 用作 Alluxio 的底层文件系统(UFS):

  1. 将 NAS 挂载到本地文件系统,Alluxio 会像操作本地文件系统一样操作 NAS 中的文件;

  2. 使用 NFS 客户端完成对 NAS 的所有文件操作。


通过 host path 使用 NAS

当使用 Operator 部署 Alluxio 集群时,可以通过设置 hostPaths 字段,将节点上的 NAS 路径挂载到 Worker 容器中的路径:

apiVersion: k8s-operator.alluxio.com/v1
kind: AlluxioCluster
spec:
  hostPaths:
    coordinator:
      /mnt/nas: /ufs/data
    worker:
      /mnt/nas: /ufs/data
    fuse:
      /mnt/nas: /ufs/data

其中 /mnt/nas 是 NAS 在节点上的挂载路径。

使用 Operator 创建挂载点的 ufs.yaml 示例:

apiVersion: k8s-operator.alluxio.com/v1
kind: UnderFileSystem
metadata:
  name: alluxio-nas
  namespace: alx-ns
spec:
  alluxioCluster: alluxio-cluster
  path: file:///ufs/data
  mountPath: /nas

如果不使用 Operator,可以使用以下命令将 /mnt/nas 挂载到 Alluxio 的 /nas 路径下:

bin/alluxio mount add --path /nas/ --ufs-uri file:///mnt/nas

通过 NFS 客户端使用 NAS

前提条件

在将 NAS 配置为 Alluxio 的底层存储系统之前,请确保您满足以下要求:

<NAS_SERVER_IP>

托管共享目录的 NAS 服务器的 IP 地址。

<SHARED_DIR>

NAS 服务器上导出的目录的绝对路径(例如:/nas_share)。

<CLIENT_RANGE>

被允许访问共享目录的客户端 IP 范围(例如:192.168.1.0/24)。

<NAS_VERSION>

NAS 协议版本(Alluxio 当前仅支持 v3)。

基本配置

使用 挂载表操作来增加一个新的挂载点, 指定Alluxio路径在其上创建挂载,指定NAS导出的路径作为UFS URI。NAS服务器的IP地址、用户ID和用户组ID等配置选项也可以通过指定 --option 标志作为挂载命令的一部分来指定,如配置挂载点所述。

通过K8s的operator来创建一个挂载点如下:

apiVersion: k8s-operator.alluxio.com/v1
kind: UnderFileSystem
metadata:
  name: alluxio-nas
  namespace: alx-ns
spec:
  alluxioCluster: alluxio-cluster
  path: nas://<NAS_SERVER_AUTHORITY>/<NAS_EXPORT_PATH>/
  mountPath: /nas
  mountOptions:
    fs.nas.ipAddress: <NAS_SERVER_IP>
    fs.nas.uid: "0"
    fs.nas.gid: "0"
    fs.nas.service.version: "3"

nas://<NAS_SERVER_AUTHORITY>/<NAS_EXPORT_PATH>/ 挂载至 /nas 的命令示例如下:

bin/alluxio mount add --path /nas \
  --ufs-uri "nas://<NAS_SERVER_AUTHORITY>/<NAS_EXPORT_PATH>/" \
  --option fs.nas.ipAddress=<NAS_SERVER_IP> \
  --option fs.nas.uid=0 \
  --option fs.nas.gid=0 \
  --option fs.service.version=3

请注意,如果要挂载 NAS 导出路径的根目录,请在导出路径后添加斜线(如 nas://<NAS_SERVER_AUTHORITY>/<NAS_EXPORT_PATH>/),NAS_SERVER_AUTHORITY 是一个用户可以自定义的具有唯一性的字段,用来唯一地代表某个NAS sever,比如有两个NAS server都需要mount到Alluxio上,NAS_SERVER_AUTHORITY可以分别为nas_1nas_2来区分两个不同的NAS server。

进阶配置

在使用 Alluxio 挂载和访问 NAS(Network Attached Storage)时,为了优化性能和资源利用率,可以通过调整部分底层文件系统相关参数,实现更精细化的控制。以下是两个常用的配置项说明:

1. 调整从 NAS 读取数据时的缓冲区大小

alluxio.underfs.nas.inputstream.max.buffer.size=8MB

该参数用于设置从 NAS 读取数据时,输入流所使用的最大缓冲区大小。默认值为 8MB,该缓冲区用于在读取文件内容时缓存数据,从而减少与底层存储的交互次数。增大该值通常可以提升顺序读取性能,特别是在读取大文件时效果更为显著。但需要注意,如果缓冲区设置过大,可能会增加内存使用,建议根据实际业务场景和节点内存情况进行调优。

2. 设置目录列表操作(ls)的响应大小限制

alluxio.underfs.nas.liststatus.iterable.max.byte.size.per.response=4MB

该参数用于控制在执行 ls 操作(如 listStatus())时,每个响应所能包含的最大字节数。默认值为 4MB。该设置主要用于分批获取大量文件元数据,避免单次请求返回数据过大,造成内存压力或网络阻塞。适当减小该值可以提升系统的响应稳定性,尤其是在包含大量子文件/子目录的大目录结构中非常有用。

Last updated