NFS最早由Sun公司在1984年开发,目的是让不同计算机之间可以方便地共享文件和操作系统资源
由于NFS使用起来非常方便,因此很快得到了大多数UNIX/Linux系统的支持,并被IETF(国际互联网工程组)制定为RFC1904、RFC1813和RFC3010标准
本文将详细介绍如何制作NFS服务器,涵盖从环境配置到客户端挂载的全过程
一、NFS的由来与功能 NFS的核心功能是允许网络中的不同机器共享文件
通过NFS,用户可以将网络中的NFS服务器的共享目录挂载到本地端的文件系统中,就像操作本地磁盘分区一样方便
NFS的端口通常开在2049,但由于文件系统非常复杂,NFS还会启动其他额外的端口,这些端口默认是随机的,但小于1024
RPC(Remote Procedure Call,远程过程调用)是NFS的重要组成部分
RPC的主要功能是指定每个NFS功能所对应的端口号,并通知给客户端,让客户端可以连接到正确的端口
当服务器启动NFS时,会随机选取数个端口,并主动向RPC注册,因此RPC可以知道每个端口对应的NFS功能
二、环境配置 在制作NFS服务器之前,需要确保服务器和客户端的网络环境配置正确,包括IP地址、DNS等
此外,还需要关闭防火墙和SELinux,以避免它们对NFS服务的干扰
关闭防火墙 systemctl stop firewalld systemctl disable firewalld 关闭SELinux setenforce 0 三、NFS服务器端配置 1. 安装NFS和RPC服务 在Ubuntu和CentOS系统上,安装NFS和RPC服务的命令略有不同
Ubuntu: sudo apt-get update sudo apt-get install nfs-kernel-server CentOS: sudo yum update sudo yum install nfs-utils rpcbind 2. 创建共享目录 接下来,需要创建一个目录作为NFS的共享目录
例如,可以创建一个名为`/mnt/nfs`的目录
sudo mkdir -p /mnt/nfs 然后,设置该目录的权限
在生产环境中,建议按照最小权限进行设置,以避免安全隐患
但在这里,为了演示方便,我们将权限设置为777
sudo chmod -R 777 /mnt/nfs 3. 修改NFS配置文件 NFS的主要配置文件是`/etc/exports`
该文件用于设置NFS服务器的共享目录及其访问权限
使用`vi`或`nano`等文本编辑器打开`/etc/exports`文件,并添加以下内容: sudo vi /etc/exports 添加以下内容,表示允许所有客户端以读写权限访问共享目录,并同步写入数据
/mnt/nfs(rw,sync,no_subtree_check,no_root_squash) 这里的配置参数解释如下: - `rw`:表示目录读写权限
- `sync`:数据写入磁盘模式,同步写入可以保证数据一致性
- `no_subtree_check`:即使输出目录是一个子目录,NFS服务器也不检查其父目录的权限,以提高效率
- `no_root_squash`:表示当客户机以root身份访问时赋予本地root权限(注意:这有安全风险,通常建议使用`root_squash`)
4. 启动RPC和NFS服务 在启动NFS服务之前,需要先启动RPC服务
因为NFS需要向RPC服务器注册,所以RPC服务必须优先于NFS服务启动
启动RPC服务: sudo systemctl start rpcbind sudo systemctl enable rpcbind 启动NFS服务: Ubuntu: sudo systemctl start nfs-kernel-server sudo systemctl enable nfs-kernel-server CentOS: sudo systemctl start nfs-server sudo systemctl enable nfs-server 5. 加载exports配置 使用`exportfs`命令加载`/etc/exports`配置
sudo exportfs -arv 或者,也可以重启NFS服务器来加载配置
Ubuntu: sudo systemctl restart nfs-kernel-server CentOS: sudo systemctl restart nfs-server 6. 查看export列表 使用`showmount`命令查看NFS服务器导出的共享目录列表
showmount -e localhost 四、NFS客户端配置 1. 安装客户端软件 在客户端机器上,需要安装NFS客户端软件`nfs-utils`
Ubuntu: sudo apt-get install nfs-common CentOS: sudo yum install nfs-utils 2. 查看服务端可共享的目录 使用`showmount`命令查看NFS服务端提供的共享目录列表
showmount -e NFS服务器IP 3. 挂载服务端共享目录 在客户端上创建一个挂载点目录,例如`/mnt/nfs_client`,然后使用`mount`命令挂载NFS服务器的共享目录
sudo mkdir -p /mnt/nfs_client sudo mount -t nfs NFS服务器IP:/mnt/nfs /mnt/nfs_client 此时,客户端就可以像访问本地文件一样访问NFS服务器的共享目录了
4. 卸载NFS目录挂载 如果不再需要访问NFS服务器的共享目录,可以使用`umount`命令卸载挂载点
sudo umount /mnt/nfs_client 五、性能优化与监控 为了确保NFS服务器的性能始终保持在最佳状态,需要定期监控和优化NFS的性能指标
以下是一些性能优化的建议: 1.使用最新版本的NFS:以获得最新的性能优化和bug修复
2.配置合适的RPC和NFS参数:根据系统需求,调