网络附加存储 NAS
本指南介绍如何将 NAS配置为 Alluxio 底层存储系统的操作步骤。 NAS(Network Attached Storage)是一种通过网络(如以太网)提供集中存储服务的设备或架构,支持多协议(如NFS、SMB、AFP等),允许客户端访问共享存储资源, 它常用于跨网络环境访问远程文件,在 Linux 系统中常用于共享存储。有关 NAS 和 NFS 的更多信息,请参考 Ubuntu NFS 文档。
Alluxio支持两种方式,将 NAS 用作 Alluxio 的底层文件系统(UFS):
将 NAS 挂载到本地文件系统,Alluxio 会像操作本地文件系统一样操作 NAS 中的文件;
使用 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_1
和nas_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