centos7 安装NFS并设置开机自启动

本文详细介绍如何在两台CentOS7机器上配置NFS服务器和客户端,实现跨机器跨操作系统共享文件。从NFS服务的安装、共享目录的创建与权限设置,到防火墙配置及服务启动,再到客户端的挂载与开机自动挂载设置,全面覆盖NFS部署流程。

前言

NFS(Network File System)意为网络文件系统,它最大的功能就是可以通过网络,让不同的机器不同的操作系统可以共享彼此的文件。简单的讲就是可以挂载远程主机的共享目录到本地,就像操作本地磁盘一样,非常方便的操作远程文件。

准备

我们需要两台CentOS7机器,我们用虚拟机做测试,分别做NFS服务器和客户端,配置如下:
NFS服务器ip:192.168.56.10
客户端ip:192.168.56.11
我们要实现的目标是:在NFS服务器192.168.56.10上共享一个目录,在客户端192.168.56.11上可以直接操作NFS服务器上的这个共享目录下的文件。

NFS服务器端配置

  1.安装NFS服务

sudo yum -y install rpcbind nfs-utils

  2.安装NFS服务

   创建共享目录 /home/vagrant/upload

  给共享目录赋权限

sudo chmod 777 -R /home/vagrant/upload

 3.安装NFS服务

nfs的配置文件是 /etc/exports ,在配置文件中最后加入一行:

/home/vagrant/upload/ *(rw,sync,all_squash)

注:我这么配置是所有机器所有用户都可以

-------------------------

其他配置参考(引入):

/data/share/ 192.168.56.11(rw,no_root_squash,no_all_squash,sync)

这行代码的意思是把共享目录/data/share/共享给192.168.56.10这个客户端ip,后面括号里的内容是权限参数,其中:

rw 表示设置目录可读写。

sync 表示数据会同步写入到内存和硬盘中,相反 rsync 表示数据会先暂存于内存中,而非直接写入到硬盘中。

no_root_squash NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。

no_all_squash 不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都不会拥有匿名用户权限。

如果有多个共享目录配置,则使用多行,一行一个配置。保存好配置文件后,需要执行以下命令使配置立即生效:

exportfs -r

-------------------------

4.设置防火墙

如果你的系统没有开启防火墙,那么该步骤可以省略。

NFS的防火墙特别难搞,因为除了固定的port111、2049外,还有其他服务如rpc.mounted等开启的不固定的端口,这样对防火墙来说就比较麻烦了。为了解决这个问题,我们可以设置NFS服务的端口配置文件。

修改/etc/sysconfig/nfs文件,将下列内容的注释去掉,如果没有则添加:

RQUOTAD_PORT=1001
LOCKD_TCPPORT=30001
LOCKD_UDPPORT=30002
MOUNTD_PORT=1002

保存好后,将端口加入到防火墙允许策略中。执行:

firewall-cmd --zone=public --add-port=111/tcp --add-port=111/udp --add-port=2049/tcp --add-port=2049/udp --add-port=1001/tcp --add-port=1001/udp --add-port=1002/tcp --add-port=1002/udp --add-port=30001/tcp --add-port=30002/udp --permanent
firewall-cmd --reload

注:防火墙设置参考他人的,没有验证,我的默认设置防火墙关闭

5.启动服务

按顺序启动rpcbind和nfs服务:

systemctl start rpcbind
systemctl start nfs

加入开机启动:

systemctl enable rpcbind 
systemctl enable nfs

nfs服务启动后,可以使用命令 rpcinfo -p 查看端口是否生效。

服务器的后,我们可以使用 showmount 命令来查看服务端(本机)是否可连接:

[vagrant@localhost ~]$ showmount -e 192.168.56.10
Export list for 192.168.56.10:
/home/vagrant/upload *

出现上面结果则NFS服务端配置正常。

NFS客户端配置

1.安装rpcbind服务

客户端只需要安装rpcbind服务即可,无需安装nfs或开启nfs服务。

sudo yum -y install rpcbind

2.挂载远程nfs文件系统

查看服务端已共享的目录:

[vagrant@localhost ~]$ showmount -e 192.168.56.10
Export list for 192.168.56.10:
/home/vagrant/upload *

建立挂载目录,执行挂载命令:

mkdir -p /home/vagrant/upload11
sudo mount -t nfs 192.168.56.10:/home/vagrant/upload /home/vagrant/upload11 -o nolock,nfsvers=3,vers=3

如果不加 -onolock,nfsvers=3 则在挂载目录下的文件属主和组都是nobody,如果指定nfsvers=3则显示root。

如果要解除挂载,可执行命令:

umount /mnt/share

3.开机自动挂载

如果按本文上面的部分配置好,NFS即部署好了,但是如果你重启客户端系统,发现不能随机器一起挂载,需要再次手动操作挂载,这样操作比较麻烦,因此我们需要设置开机自动挂载。我们不要把挂载项写到/etc/fstab文件中,因为开机时先挂载本机磁盘再启动网络,而NFS是需要网络启动后才能挂载的,所以我们把挂载命令写入到/etc/rc.d/rc.local文件中即可。

因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权

chmod +x /etc/rc.d/rc.local

编写自动启动脚本

vi /usr/local/sbin/nfsboot.sh

脚本内容:

#! /bin/bash

## This is nfs自启动 shell script.

date

mount -t nfs 192.168.56.10:/home/vagrant/upload /home/vagrant/upload11

echo "nfs自启动 success!!"

给脚本赋可执行权限

chmod +x /usr/local/sbin/nfsboot.sh
打开/etc/rc.d/rc.local文件,在末尾增加如下内容
/usr/local/sbin/nfsboot.sh

保存并重启机器看看。

测试验证

查看挂载结果,在客户端输入 df -h

[vagrant@vagrant2 ~]$ df -h
Filesystem                          Size  Used Avail Use% Mounted on
devtmpfs                            237M     0  237M   0% /dev
tmpfs                               244M     0  244M   0% /dev/shm
tmpfs                               244M  4.5M  240M   2% /run
tmpfs                               244M     0  244M   0% /sys/fs/cgroup
/dev/sda1                            40G  3.0G   38G   8% /
tmpfs                                49M     0   49M   0% /run/user/1000
192.168.56.10:/home/vagrant/upload   40G   12G   29G  29% /home/vagrant/upload13

看到最后一行了没,说明已经挂载成功了。接下来就可以在客户端上进入目录/mnt/share下,新建/删除文件,然后在服务端的目录/data/share查看是不是有效果了,同样反过来在服务端操作在客户端对应的目录下看效果。

<think>我们参考多个引用中的步骤,综合整理CentOS 7安装NFS服务器的详细步骤。 注意:引用[3]提供了较为完整的步骤,引用[1][2][4][5]提供补充信息。 我们将按照以下步骤进行: 1. 环境准备(关闭防火墙和SELinux,确保网络连通) 2. 安装NFS相关软件包 3. 创建共享目录设置权限 4. 配置NFS共享(编辑/etc/exports文件) 5. 启动NFS相关服务设置开机自启 6. 客户端挂载测试(可选,但通常需要验证) 注意:根据引用[4]建议,关闭防火墙和SELinux以避免权限问题,或者配置防火墙规则放行NFS服务(本文按关闭防火墙处理)。 详细步骤: ### 步骤1:环境准备 - 关闭防火墙(如果生产环境不允许关闭,则需配置防火墙规则放行NFS服务): ```bash systemctl stop firewalld systemctl disable firewalld ``` - 关闭SELinux(临时关闭): ```bash setenforce 0 ``` 若要永久关闭,编辑`/etc/selinux/config`文件,设置`SELINUX=disabled`,然后重启系统。 - 确保服务器可以联网(用于yum安装软件包)。 ### 步骤2:安装NFS相关软件包 - 安装nfs-utils和rpcbind(引用[2][3][5]): ```bash yum install -y nfs-utils rpcbind ``` 注意:nfs-utils包含NFS服务和客户端工具,rpcbind是NFS的依赖服务。 ### 步骤3:创建共享目录设置权限 - 创建共享目录,例如`/data/nfs_share`(引用[3]): ```bash mkdir -p /data/nfs_share ``` - 设置目录权限(根据需求设置,这里设置777修改属主为nobody): ```bash chmod -R 777 /data/nfs_share chown -R nobody:nobody /data/nfs_share ``` ### 步骤4:配置NFS共享(编辑/etc/exports文件) - 编辑配置文件`/etc/exports`(引用[2][3][4]): ```bash vi /etc/exports ``` - 在文件中添加共享配置,例如允许192.168.1.0/24网段访问: ``` /data/nfs_share 192.168.1.0/24(rw,sync,no_root_squash,no_all_squash) ``` 参数说明: - `rw`:读写权限 - `sync`:同步写入,保证数据一致性 - `no_root_squash`:允许客户端root用户保留root权限(注意安全风险) - `no_all_squash`:不压缩所有用户的权限(保持用户身份) 注意:如果希望所有客户端都能访问,可以用`*`代替IP段,但这样会带来安全风险,生产环境建议限制访问IP。 ### 步骤5:启动NFS相关服务设置开机自启 - 启动rpcbind和nfs服务,设置开机自启(引用[3][5]): ```bash systemctl enable rpcbind --now systemctl enable nfs-server --now ``` 或者分别启动: ```bash systemctl start rpcbind systemctl enable rpcbind systemctl start nfs-server systemctl enable nfs-server ``` ### 步骤6:验证NFS共享 - 在服务器端检查共享是否发布成功: ```bash showmount -e localhost ``` 应该能看到输出的共享目录信息。 ### 客户端挂载测试(可选) - 在另一台CentOS 7客户端上安装nfs-utils(如果未安装): ```bash yum install -y nfs-utils ``` - 创建本地挂载点: ```bash mkdir /mnt/nfs_client ``` - 挂载NFS共享: ```bash mount -t nfs 服务器IP:/data/nfs_share /mnt/nfs_client ``` - 测试读写。 通过以上步骤,即可完成CentOS 7NFS服务器的安装和配置。 §§相关问题§§ 1. 如何配置NFS的防火墙规则而不关闭防火墙? 2. NFS共享的权限和参数(如rw, sync, no_root_squash)具体含义是什么? 3. NFS服务器和客户端的常见故障如何排查? </think> ### CentOS 7 安装 NFS 服务器步骤 参考多个来源[^1][^2][^3][^4][^5],以下是详细步骤: #### 1. **环境准备** - 关闭防火墙(或配置放行规则): ```bash systemctl stop firewalld systemctl disable firewalld ``` - 关闭 SELinux(临时关闭): ```bash setenforce 0 ``` 永久关闭需编辑 `/etc/selinux/config`,设置 `SELINUX=disabled`。 #### 2. **安装 NFS 软件包** ```bash yum install -y nfs-utils rpcbind # 包含 NFS 服务和依赖[^2][^3] ``` #### 3. **创建共享目录设置权限** ```bash mkdir -p /data/nfs_share # 创建共享目录[^4] chmod -R 777 /data/nfs_share # 开放权限 chown -R nobody:nobody /data/nfs_share # 设置属主 ``` #### 4. **配置 NFS 共享规则** 编辑 `/etc/exports` 文件: ```bash vi /etc/exports ``` 添加配置(示例允许 `192.168.1.0/24` 网段访问): ```conf /data/nfs_share 192.168.1.0/24(rw,sync,no_root_squash) ``` **参数说明**: - `rw`:读写权限 - `sync`:数据同步写入磁盘 - `no_root_squash`:允许客户端 root 保留权限[^3] #### 5. **启动服务设置开机自启** ```bash systemctl enable rpcbind --now # 启动 RPC 服务[^5] systemctl enable nfs-server --now # 启动 NFS 服务[^5] exportfs -r # 重新加载配置 ``` #### 6. **验证服务状态** ```bash showmount -e localhost # 查看共享目录[^2] ``` 输出应包含: ```bash Export list for localhost: /data/nfs_share 192.168.1.0/24 ``` #### 7. **客户端挂载测试** 在客户端执行: ```bash yum install -y nfs-utils # 安装客户端工具 mkdir /mnt/nfs_client mount -t nfs 服务器IP:/data/nfs_share /mnt/nfs_client ``` 检查挂载: ```bash df -h | grep nfs ``` #### 常见问题处理 - **权限拒绝**:确保共享目录权限为 `777` 且 SELinux 关闭。 - **防火墙干扰**:若需开启防火墙,放行端口 `111/tcp`, `2049/tcp`, `20048/udp`。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值