当前位置 主页 > 技术大全 >

    Linux下NFS服务搭建实战指南
    linux实现nfs

    栏目:技术大全 时间:2024-11-23 21:24



    Linux中实现NFS(网络文件系统)配置指南 NFS(Network File System)是一种分布式文件系统协议,由Sun公司在1984年开发并公布

        它允许不同机器、不同操作系统通过网络共享资源,使得远程文件系统对用户透明,就像访问本地文件一样

        本文旨在详细介绍在Linux系统中如何配置和实现NFS服务

         一、NFS概述 NFS通过TCP/IP网络实现文件共享,使得应用程序可以在客户端通过网络访问位于服务器磁盘中的数据

        这种机制在类Unix系统间实现磁盘文件共享尤为方便

        NFS依赖于RPC(Remote Procedure Call,远程过程调用)协议,RPC使得客户端能够执行其他系统中的程序

         NFS的主要功能包括: 跨平台文件共享:不同操作系统间的文件共享

         透明性:用户无需关心文件存储在哪个物理位置

         - 便捷性:客户端可以将NFS服务器共享的目录挂载到本地文件系统,使用上非常方便

         二、NFS配置步骤 1. 环境准备 假设我们有两台Linux主机,通过e0网卡接入同一网络,Net1已配置NAT服务,两台主机之间互通且可以访问Internet

        e1网卡接入Mgmt网络,方便远程管理

         2. 安装NFS软件包 在NFS服务器上,首先需要安装nfs-utils软件包

        可以使用以下命令进行安装: 【root@nfs-server~】# yum -y install nfs-utils 安装完成后,可以使用以下命令查看是否安装成功: 【root@nfs-server~】# rpm -qa | grep nfs 应该看到类似以下输出: libnfsidmap-2.3.3-59.el8.x86_64 nfs-utils-2.3.3-59.el8.x86_64 sssd-nfs-idmap-2.9.1-4.el8_9.x86_64 同时,可以查看nfs-utils软件包的配置文件: 【root@nfs-server~】# rpm -qc nfs-utils 这些配置文件通常位于以下路径: /etc/gssproxy/24-nfs-server.conf /etc/modprobe.d/lockd.conf /etc/nfs.conf /etc/nfsmount.conf /etc/request-key.d/id_resolver.conf /var/lib/nfs/etab /var/lib/nfs/rmtab 3. 创建共享目录并设置权限 在NFS服务器上,创建一个用于NFS文件共享的目录,并设置足够的权限,确保其他人也有写入权限: 【root@nfs-server~】# mkdir /nfsfile 【root@nfs-server~】# chmod 777 /nfsfile 可以使用以下命令查看目录权限: 【root@nfs-server~】# ls -ld /nfsfile 输出应类似: drwxrwxrwx. 2 root root 6 Dec 25 22:40 /nfsfile 向该目录写入一个测试文件: 【root@nfs-server~】# echo This is a nfs shared folder. > /nfsfile/README 4. 配置NFS服务 NFS服务的配置文件为`/etc/exports`,默认情况下该文件是空的

        可以按照“共享目录的路径 允许访问的NFS客户端(共享权限参数)”的格式,定义要共享的目录与相应的权限

         例如,将`/nfsfile`目录共享给172.16.0.0/24网段内的所有主机,并设置读写权限,同时配置数据同步写入和将来访客户端的root管理员映射为本地的匿名用户: 【root@nfs-server~】# vim /etc/exports 添加以下内容: /nfsfile 172.16.0.(rw,sync,root_squash) 在NFS服务的配置文件中,可以使用通配符实现便捷配置

        例如: - ``:代表任何主机都可以访问

         - `192.168.10.`:代表来自192.168.10.0/24网段的主机

         - `192.168.10.20`:代表仅允许某个特定主机进行访问

         5. 启动和启用NFS服务 在启动NFS服务之前,需要重启并启用rpcbind服务程序,因为NFS依赖于RPC服务进行端口信息的传输

        可以使用以下命令: 【root@nfs-server~】# systemctl restart rpcbind.service 【root@nfs-server~】# systemctl enable rpcbind.service 然后启动并启用NFS服务: 【root@nfs-server~】# systemctl enable --now nfs-server.service 6. 检查NFS服务状态 使用以下命令检查NFS服务的状态: 【root@nfs-server~】# systemctl status nfs-server 7. 配置防火墙(如果需要) 如果启用了防火墙,需要允许NFS相关的端口通过

        NFS服务通常使用2049端口,但还有其他随机端口用于数据传输

        可以使用以下命令允许这些端口: 允许NFS服务端口 【root@nfs-server~】# firewall-cmd --permanent --add-service=nfs 允许RPC服务端口 【root@nfs-server~】# firewall-cmd --permanent --add-service=rpc-bind 允许挂载服务端口 【root@nfs-server~】# firewall-cmd --permanent --add-service=mountd 重新加载防火墙配置 【root@nfs-server~】# firewall-cmd --reload 8. 客户端配置 在NFS客户端上,需要创建挂载点,并使用`mount`命令将远程NFS目录挂载到本地

        例如,将NFS服务器的`/nfsfile`目录挂载到本地的`/mnt/nfsfile`目录: 【root@nfs-client~】# mkdir /mnt/nfsfile 【root@nfs-client~】# mount -t nfs nfs-server-ip:/nfsfile /mnt/nfsfile 其中,`nfs-server-ip`是NFS服务器的IP地址

         可以使用以下命令查看挂载情况: 【root@nfs-client~】# df -h 应该能够看到类似以下的输出,显示NFS挂载的目录: nfs-server-ip:/nfsfile 10G 2.5G 7.5G 25% /mnt/nfsfile 三、NFS配置文件的参数详解 `/etc/exports`文件用于配置NFS服务的共享目录和权限

        以下是一些常用的参数: - `rw`:读写权限

         - `ro`:只读权限

         - `sync`:同步写入,确保数据写入硬盘后才返回成功

         - `async`:异步写入,数据可以延迟写入硬盘

         - `root_squash`:将客户端的root用户映射为NFS服务器的匿名用户(通常是nobody)

         - `no_root_squash`:不将客户端的root用户映射为匿名用户,而是保持root权限

         - `subtree_check`:检查子目录的权限变化,性能较低

         - `no_subtree_check`:不检查子目录的权限变化,性能较高

         四、总结 通过本文的介绍,我们了解了NFS的基本原理和配置步骤

        NFS作为一种强大的网络文件系统协议,能够实现