NFS服务器端配置
NFS服务器是存储并导出(共享)文件的主机,以下是在CentOS上设置NFS服务器的步骤。
安装NFS软件包
需要在服务器上安装NFS相关的软件包,这包括nfs-utils
,它提供了NFS服务所需的核心程序和工具。
# 对于CentOS 7/8 sudo yum install nfs-utils -y # 或者对于较新的版本使用 dnf sudo dnf install nfs-utils -y
创建共享目录
创建一个您希望通过网络共享的目录,我们创建一个名为/shared/nfs
的目录。
sudo mkdir -p /shared/nfs # 为了测试,可以创建一个文件 sudo touch /shared/nfs/welcome.txt echo "Welcome to NFS Share" | sudo tee /shared/nfs/welcome.txt
配置NFS导出
NFS的核心配置文件是/etc/exports
,您需要在这个文件中定义哪些目录可以被共享,以及哪些客户端可以访问它们,并指定相应的权限。
使用文本编辑器打开/etc/exports
文件:
sudo vi /etc/exports
在文件末尾添加以下行,定义共享规则:
/shared/nfs 客户端IP或网段(选项)
要允许IP地址为168.1.101
的客户端以及168.1.0/24
网段内的所有主机以读写权限访问该共享,可以添加:
/shared/nfs 192.168.1.101(rw,sync,no_subtree_check) 192.168.1.0/24(rw,sync,no_subtree_check)
下表解释了常用选项的含义:
选项 | 描述 |
---|---|
rw | 允许客户端读写共享目录。 |
ro | 只读权限,客户端只能读取文件。 |
sync | 所有写入操作都会同步写入磁盘,确保数据一致性,但性能稍低。 |
async | 异步写入,数据先写入缓存,稍后再写入磁盘,性能更高,但有数据丢失风险。 |
no_subtree_check | 禁用子树检查,可以提高性能和稳定性,尤其在共享目录本身不是独立文件系统时。 |
no_root_squash | 允许客户端上的root用户对共享目录拥有root权限,默认情况下,root用户的请求会被“压缩”成一个匿名用户(nfsnobody )。 |
启动并启用NFS服务
配置完成后,需要启动NFS服务并设置其为开机自启。
# 启动 nfs-server 和 rpcbind 服务 sudo systemctl start nfs-server sudo systemctl start rpcbind # 设置服务开机自启 sudo systemctl enable nfs-server sudo systemctl enable rpcbind # 检查服务状态 sudo systemctl status nfs-server
配置防火墙
如果系统启用了防火墙(如firewalld),必须开放NFS相关的服务端口。
# 永久开放 nfs, mountd, rpc-bind 服务 sudo firewall-cmd --permanent --add-service=nfs sudo firewall-cmd --permanent --add-service=mountd sudo firewall-cmd --permanent --add-service=rpc-bind # 重新加载防火墙规则 sudo firewall-cmd --reload
NFS客户端配置
客户端是挂载并使用NFS共享的主机。
安装客户端软件
客户端同样需要安装nfs-utils
软件包以支持NFS挂载。
sudo yum install nfs-utils -y
创建挂载点
在客户端上创建一个目录,作为NFS共享的挂载点。
sudo mkdir -p /mnt/nfs_share
挂载NFS共享
使用mount
命令将服务器上的共享目录挂载到本地挂载点,请将<服务器IP>
替换为您的NFS服务器的实际IP地址。
sudo mount -t nfs <服务器IP>:/shared/nfs /mnt/nfs_share
如果服务器IP是168.1.100
:
sudo mount -t nfs 192.168.1.100:/shared/nfs /mnt/nfs_share
验证挂载
挂载成功后,您可以通过以下几种方式验证:
# 查看磁盘使用情况,应能看到NFS挂载 df -h # 或者查看挂载信息 mount | grep nfs # 测试读写 ls /mnt/nfs_share cat /mnt/nfs_share/welcome.txt sudo touch /mnt/nfs_share/client_test.txt
实现开机自动挂载
为了确保客户端重启后能自动挂载NFS共享,需要将其添加到/etc/fstab
文件中。
使用编辑器打开/etc/fstab
:
sudo vi /etc/fstab
在文件末尾添加一行,格式如下:
<服务器IP>:/shared/nfs /mnt/nfs_share nfs defaults,_netdev 0 0
nfs
:指定文件系统类型。defaults
:使用默认挂载选项。_netdev
:这是一个非常重要的选项,它告诉系统这是一个网络设备,需要等待网络服务启动后再进行挂载,避免开机时因网络未就绪而挂载失败。
添加并保存后,可以执行sudo mount -a
命令来测试/etc/fstab
中的条目是否正确,如果没有任何输出,通常表示配置无误。
相关问答FAQs
Q1: 为什么我无法在NFS共享目录中创建或修改文件?
A1: 这个问题通常由两个原因导致,检查服务器端共享目录本身的文件权限,确保运行挂载命令的客户端用户(或用户组)对该目录有写权限,可以使用ls -ld /shared/nfs
在服务器上查看权限,检查/etc/exports
文件中的配置,如果您希望客户端的root用户也能拥有完全控制权,可能需要添加no_root_squash
选项,但请注意,这会带来安全风险,建议仅在可信网络环境中使用。
Q2: 如果NFS服务器宕机或网络中断,我的客户端会发生什么?
A2: 这取决于挂载时使用的选项,默认情况下,NFS使用hard
挂载选项,这意味着如果服务器无响应,客户端进程会无限期地阻塞,等待服务器恢复,这可以保证数据的完整性,但可能导致应用程序卡死,另一种选择是soft
挂载,它在等待一段时间后如果服务器仍未响应,会返回一个I/O错误,这可以避免进程阻塞,但可能导致数据损坏或不一致,在/etc/fstab
中,您可以通过在选项中添加soft
或hard
来指定此行为,defaults,soft,_netdev
,对于关键数据,通常推荐使用hard
模式。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复