Lxn-Chan!

(~ ̄▽ ̄)→))* ̄▽ ̄*)o

我想这确实很简单,但是每次还要翻文档,于是打算单独写出来。

服务端

  1. 安装服务端包:
    1
    sudo apt install -y nfs-kernel-server nfs-common
  2. /etc/exports配置文件中添加以下内容,保存退出
    1
    2
    # </path/to/your/folder> <AllowSubnet>(options) 
    /mnt/lab 172.20.19.0/24(rw,sync,no_root_squash)
  3. 重启并使相关服务开机自启:
    1
    2
    systemctl restart rpcbind nfs-server
    systemctl enable --now nfs-server rpcbind

客户端

  1. 安装客户端:
    1
    sudo apt install -y nfs-common
  2. /etc/fstab中添加nfs挂载:
    1
    2
    # <NFSPath> <MountPath> <Format> <Options> <Check> <Bootable>
    192.168.8.124:/mnt/lab /mnt/lab nfs defaults,nofail,noatime,async 0 2
  3. 挂载:
    1
    systemctl daemon-reload && mount -a

参数

服务端

服务端在/etc/exports配置文件中的最后一部分有一些可选择的参数,用于控制特性和特殊行为。其中:可以指定多个 sec= 选项,以根据安全模式应用不同导出规则。选项不区分大小写,但建议使用小写。配置后,需要使用 exportfs -a 应用更改,并重启 NFS 服务。常见参数解释如下:

通用参数

选项名称描述
secure要求请求来自端口 < 1024(保留端口),默认启用。
insecure允许来自端口 > 1024 的请求,禁用 secure。
rw允许读写访问(与 ro 相反)。
ro只读访问,默认行为(除非指定 rw)。
async允许服务器在更改提交到稳定存储前回复请求,提高性能但可能丢失数据。
sync确保更改提交到稳定存储后才回复请求(nfs-utils 1.0.0 后默认)。
no_wdelay在 async 模式下禁用写请求延迟,提高小写操作性能。
wdelay启用写请求延迟(async 未设置时的默认)。
nohide防止文件系统在挂载到另一个导出文件系统下时被隐藏。
hide允许隐藏子文件系统(默认)。
crossmnt允许客户端无缝访问父文件系统下的子挂载点。
no_subtree_check禁用子树检查,提高重命名文件时的可靠性(nfs-utils 1.1.0 后默认)。
subtree_check启用子树检查(旧版本默认)。
insecure_locks等同于 no_auth_nlm,禁用 NLM 锁请求认证。
no_auth_nlm禁用 NLM 锁请求的认证,适用于旧客户端。
auth_nlm要求 NLM 锁请求认证(默认)。
secure_locks等同于 auth_nlm。
no_acl防止 NFS 向客户端暴露 ACL(仅适用于支持 ACL 的内核)。
mountpoint=path 或 mp=path仅当指定路径成功挂载时才导出(无路径时,导出点本身须为挂载点)。
fsid=num\root\uuid显式设置 NFS 文件系统 ID(例如 fsid=0 为 NFSv4 根)。
refer=path@host[+host][:path@host[+host]]将客户端重定向到备用位置。
replicas=path@host[+host][:path@host[+host]]提供文件系统的备用副本列表。

用户 ID 映射选项

选项名称描述
root_squash将 UID/GID 0(root)映射到匿名用户(默认)。
no_root_squash禁用 root 压缩,允许客户端 root 访问。
all_squash将所有 UID/GID 映射到匿名用户,适用于公共目录。
no_all_squash禁用 all_squash(默认,保留原始 UID/GID)。
anonuid=num设置匿名 UID。
anongid=num设置匿名 GID。

安全选项(sec=)

选项名称描述
sec=sys无加密安全(默认)。
sec=krb5使用 Kerberos 进行认证。
sec=krb5iKerberos 认证 + 完整性保护。
sec=krb5pKerberos 认证 + 完整性 + 隐私保护。

多客户端

在 NFS 的 /etc/exports 文件中,要同时允许多个特定 IP 地址(如 172.20.19.13/32172.20.19.14/32)访问导出路径,可以在导出路径后用空格分隔这些主机/IP 地址。每个 IP 后跟子网掩码(如 /32 表示单个主机)。

1
/mnt/lab 172.20.19.13/32 172.20.19.14/32 (rw,sync,no_root_squash)

也可以对同一导出目录做不同的权限和选项控制:

1
/mnt/lab 172.20.19.13/32(ro) 172.20.19.14/32(rw)

客户端

访问和文件系统模式选项

选项名称描述
rw允许读写访问(默认)。
ro只读访问。
noexec禁止挂载文件系统上执行二进制文件。
nosuid禁止 setuid 和 setgid 位(安全推荐)。
nodev禁止解释设备文件(安全推荐)。
noacl禁用 ACL(访问控制列表)处理,适用于旧系统兼容。

重试和中断行为选项

选项名称描述
hard默认行为:如果服务器不可达,重试直到成功(可能导致进程挂起)。
soft超时后返回错误,不无限重试(适用于非关键挂载)。
intr允许用户中断(Ctrl+C)挂起的 NFS 操作(默认)。
nointr禁止中断 NFS 操作,防止数据损坏(适用于关键数据)。
retry=n设置重试次数(默认 -1 表示无限;soft 模式下有效)。

性能和传输选项

选项名称描述
rsize=n读取块大小(字节),如 32768(默认根据 NFS 版本自动协商,最大 1MB)。
wsize=n写入块大小(字节),类似 rsize。
timeo=nRPC 超时时间(以 1/10 秒为单位,默认 600)。
retrans=nRPC 重传次数(默认 2)。
async异步写入,提高性能(默认)。
sync同步写入,确保数据立即写入服务器。
noac禁用属性缓存,确保最新属性(用于多客户端频繁访问)。
actimeo=n属性缓存超时时间(秒),覆盖 acreg、acdir、acdirmax 等子选项(默认 3)。
lookupcache=mode目录条目缓存模式(all/none/pos/positive,默认 all;内核 2.6.28+ 支持)。

协议和版本选项

选项名称描述
proto=tcp\udp传输协议(tcp 默认,推荐;udp 更快但不可靠)。
vers=nNFS 协议版本(2/3/4/4.0/4.1/4.2,默认最高支持版本,如 4.2)。
nfsvers=n等同于 vers(兼容选项)。
port=nNFS 服务端口(默认 2049)。
mountport=nmountd 服务端口(默认从 portmapper 查询)。
mountproto=tcp\udpmountd 协议(默认 udp)。
udp使用 UDP 协议(等同 proto=udp)。
tcp使用 TCP 协议(等同 proto=tcp)。

安全和锁选项

选项名称描述
sec=sys\krb5\krb5i\krb5p安全模式(sys 默认无加密;krb5 Kerberos 认证;krb5i 带完整性;krb5p 带隐私)。
lock启用文件锁(默认)。
nolock禁用文件锁,适用于旧服务器。

挂载行为选项

选项名称描述
bg后台挂载(如果服务器不可达)。
fg前台挂载(默认)。
defaults等同于 rw,suid,dev,exec,auto,nouser,async,relatime(通用默认)。

 简单说两句



联系站长 | 服务状态 | 友情链接

备案号:辽ICP备19013963号

津公网安备12011602300394号

中国互联网违法和不良信息举报中心

架构版本号:8.1.7 | 本站已全面支持IPv6

正在载入运行数据(1/2)请稍后...
正在载入运行数据(2/2)请稍后...

♥stand with innovative technologies of all kinds♥

Copyright 2024 LingXuanNing, All rights reserved.