活动公告

系统通知
05-18 21:22
系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

CentOS系统下NFS服务安装配置全攻略从零开始轻松实现文件共享提升团队协作效率

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

<font color=白金月票" /> 发表于 2025-9-17 10:20:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1. NFS服务简介

NFS(Network File System,网络文件系统)是一种分布式文件系统协议,允许网络中的计算机之间通过TCP/IP网络共享资源。NFS最初由Sun Microsystems开发,现在已成为UNIX/Linux系统中文件共享的标准方式。

NFS的主要优势在于:

• 透明访问:远程文件系统可以像本地文件系统一样被访问
• 集中管理:文件和数据可以集中存储在一台服务器上
• 节省空间:避免在多台机器上重复存储相同数据
• 简化备份:只需在服务器端进行数据备份
• 提高协作效率:团队成员可以方便地共享和访问文件

在团队协作环境中,NFS可以极大地提高工作效率,例如开发团队可以共享代码库,设计团队可以共享素材文件,文档团队可以协作编辑文档等。

2. 环境准备

在开始安装NFS服务之前,我们需要准备以下环境:

2.1 系统要求

• CentOS7⁄8或更高版本(本文以CentOS 8为例)
• 至少两台计算机:一台作为NFS服务器,一台或多台作为NFS客户端
• root权限或sudo权限
• 稳定的网络连接

2.2 网络配置

确保服务器和客户端之间可以互相通信。假设我们的环境如下:

• NFS服务器:IP地址为192.168.1.100,主机名为nfs-server
• NFS客户端:IP地址为192.168.1.101,主机名为nfs-client

可以通过编辑/etc/hosts文件来添加主机名解析:
  1. # 在NFS服务器和客户端上都执行
  2. sudo vi /etc/hosts
复制代码

添加以下内容:
  1. 192.168.1.100   nfs-server
  2. 192.168.1.101   nfs-client
复制代码

2.3 关闭防火墙和SELinux(测试环境)

在生产环境中,应该正确配置防火墙和SELinux,但在初学阶段,为了简化配置,我们可以先关闭它们:
  1. # 关闭防火墙
  2. sudo systemctl stop firewalld
  3. sudo systemctl disable firewalld
  4. # 临时关闭SELinux
  5. sudo setenforce 0
  6. # 永久关闭SELinux(需要重启)
  7. sudo vi /etc/selinux/config
  8. # 将SELINUX=enforcing改为SELINUX=disabled
复制代码

3. NFS服务器安装与配置

3.1 安装NFS服务器软件包

在CentOS系统上,我们需要安装nfs-utils软件包:
  1. # 更新系统
  2. sudo dnf update -y
  3. # 安装nfs-utils
  4. sudo dnf install nfs-utils -y
复制代码

3.2 创建共享目录

创建一个用于共享的目录,并设置适当的权限:
  1. # 创建共享目录
  2. sudo mkdir -p /data/nfs-share
  3. # 设置目录权限
  4. sudo chmod -R 755 /data/nfs-share
  5. sudo chown -R nobody:nobody /data/nfs-share
复制代码

3.3 配置NFS共享

NFS的主要配置文件是/etc/exports,我们需要编辑这个文件来定义共享目录及其访问权限:
  1. sudo vi /etc/exports
复制代码

添加以下内容:
  1. /data/nfs-share 192.168.1.101(rw,sync,no_subtree_check)
复制代码

这行配置的含义是:

• /data/nfs-share:要共享的目录路径
• 192.168.1.101:允许访问此共享的客户端IP地址
• (rw,sync,no_subtree_check):共享选项,其中:rw:允许读写操作sync:同步写入,确保数据一致性no_subtree_check:提高性能,不检查子目录
• rw:允许读写操作
• sync:同步写入,确保数据一致性
• no_subtree_check:提高性能,不检查子目录

• rw:允许读写操作
• sync:同步写入,确保数据一致性
• no_subtree_check:提高性能,不检查子目录

如果希望允许整个子网访问,可以使用以下格式:
  1. /data/nfs-share 192.168.1.0/24(rw,sync,no_subtree_check)
复制代码

3.4 启动并启用NFS服务
  1. # 启动nfs-server服务
  2. sudo systemctl start nfs-server
  3. # 设置nfs-server开机自启
  4. sudo systemctl enable nfs-server
  5. # 检查服务状态
  6. sudo systemctl status nfs-server
复制代码

3.5 导出共享目录

在修改了/etc/exports文件后,需要导出共享目录:
  1. sudo exportfs -a
复制代码

可以使用以下命令查看当前导出的共享列表:
  1. sudo exportfs -v
复制代码

输出应该类似于:
  1. /data/nfs-share 192.168.1.101(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
复制代码

4. NFS客户端安装与配置

4.1 安装NFS客户端软件包

在客户端机器上,我们需要安装nfs-utils软件包:
  1. # 更新系统
  2. sudo dnf update -y
  3. # 安装nfs-utils
  4. sudo dnf install nfs-utils -y
复制代码

4.2 创建挂载点

在客户端上创建一个目录作为NFS共享的挂载点:
  1. sudo mkdir -p /mnt/nfs-share
复制代码

4.3 挂载NFS共享

使用mount命令挂载NFS共享:
  1. sudo mount -t nfs nfs-server:/data/nfs-share /mnt/nfs-share
复制代码

4.4 验证挂载

使用以下命令验证NFS共享是否成功挂载:
  1. df -h
复制代码

输出中应该包含类似以下内容:
  1. Filesystem                    Size  Used Avail Use% Mounted on
  2. ...
  3. nfs-server:/data/nfs-share     50G  1.2G   49G   3% /mnt/nfs-share
复制代码

也可以使用mount命令查看:
  1. mount | grep nfs
复制代码

输出应该类似于:
  1. nfs-server:/data/nfs-share on /mnt/nfs-share type nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.101,local_lock=none,addr=192.168.1.100)
复制代码

4.5 设置开机自动挂载

为了使NFS共享在系统重启后自动挂载,我们需要编辑/etc/fstab文件:
  1. sudo vi /etc/fstab
复制代码

添加以下内容:
  1. nfs-server:/data/nfs-share   /mnt/nfs-share   nfs   defaults   0 0
复制代码

保存并退出后,可以使用以下命令测试/etc/fstab中的条目是否正确:
  1. sudo mount -a
复制代码

如果没有错误信息,说明配置正确。

5. NFS高级配置

5.1 NFS版本选择

NFS有多个版本,包括NFSv2、NFSv3、NFSv4和NFSv4.1。CentOS 8默认使用NFSv4。如果需要指定特定版本,可以在挂载时添加vers选项:
  1. # 挂载NFSv3
  2. sudo mount -t nfs -o vers=3 nfs-server:/data/nfs-share /mnt/nfs-share
  3. # 挂载NFSv4
  4. sudo mount -t nfs -o vers=4 nfs-server:/data/nfs-share /mnt/nfs-share
复制代码

在/etc/fstab中指定版本:
  1. nfs-server:/data/nfs-share   /mnt/nfs-share   nfs   defaults,vers=4   0 0
复制代码

5.2 NFS安全选项

NFS提供多种安全选项,可以通过/etc/exports文件中的sec选项指定:

• sec=sys:传统的UNIX认证方式,默认选项
• sec=krb5:使用Kerberos进行用户认证
• sec=krb5i:使用Kerberos进行认证,并对数据包进行完整性检查
• sec=krb5p:使用Kerberos进行认证,并对数据包进行加密

例如,配置使用Kerberos认证:
  1. /data/nfs-share 192.168.1.101(rw,sync,no_subtree_check,sec=krb5i)
复制代码

5.3 用户映射选项

NFS提供了几种用户映射选项,用于控制客户端用户如何映射到服务器上的用户:

• root_squash:将客户端的root用户映射到服务器上的匿名用户(通常是nfsnobody),这是默认选项
• no_root_squash:不映射客户端的root用户,保持root权限
• all_squash:将所有用户(包括root)映射到匿名用户
• anonuid和anongid:指定匿名用户的UID和GID

例如:
  1. /data/nfs-share 192.168.1.101(rw,sync,no_subtree_check,root_squash,anonuid=1001,anongid=1001)
复制代码

5.4 性能优化选项

NFS提供了一些性能优化选项:

• rsize和wsize:指定读写块大小,较大的值可以提高性能,但也会增加内存使用
• async:异步写入,提高性能但可能降低数据安全性
• noatime:不更新文件访问时间,提高性能

例如:
  1. /data/nfs-share 192.168.1.101(rw,sync,no_subtree_check,rsize=8192,wsize=8192)
复制代码

在客户端挂载时也可以指定这些选项:
  1. sudo mount -t nfs -o rsize=8192,wsize=8192,noatime nfs-server:/data/nfs-share /mnt/nfs-share
复制代码

6. 防火墙配置

在生产环境中,我们需要正确配置防火墙以允许NFS通信。NFS使用多个端口,包括:

• 2049/TCP,UDP:NFS主端口
• 111/TCP,UDP:rpcbind端口
• 20048/TCP,UDP:mountd端口
• 其他随机端口:NFS相关服务

6.1 配置防火墙规则
  1. # 启动防火墙
  2. sudo systemctl start firewalld
  3. sudo systemctl enable firewalld
  4. # 添加NFS服务
  5. sudo firewall-cmd --permanent --add-service=nfs
  6. sudo firewall-cmd --permanent --add-service=mountd
  7. sudo firewall-cmd --permanent --add-service=rpc-bind
  8. # 重新加载防火墙配置
  9. sudo firewall-cmd --reload
复制代码

6.2 固定NFS服务端口

为了更好地管理防火墙规则,我们可以固定NFS相关服务的端口。编辑/etc/sysconfig/nfs文件:
  1. sudo vi /etc/sysconfig/nfs
复制代码

添加或取消注释以下行:
  1. LOCKD_TCP_PORT=32803
  2. LOCKD_UDP_PORT=32769
  3. MOUNTD_PORT=892
  4. STATD_PORT=662
  5. STATD_OUTGOING_PORT=2020
复制代码

然后重启NFS服务:
  1. sudo systemctl restart nfs-server
复制代码

现在,我们可以在防火墙中添加这些特定端口的规则:
  1. sudo firewall-cmd --permanent --add-port=2049/tcp
  2. sudo firewall-cmd --permanent --add-port=2049/udp
  3. sudo firewall-cmd --permanent --add-port=111/tcp
  4. sudo firewall-cmd --permanent --add-port=111/udp
  5. sudo firewall-cmd --permanent --add-port=32803/tcp
  6. sudo firewall-cmd --permanent --add-port=32769/udp
  7. sudo firewall-cmd --permanent --add-port=892/tcp
  8. sudo firewall-cmd --permanent --add-port=892/udp
  9. sudo firewall-cmd --permanent --add-port=662/tcp
  10. sudo firewall-cmd --permanent --add-port=662/udp
  11. sudo firewall-cmd --permanent --add-port=2020/tcp
  12. sudo firewall-cmd --permanent --add-port=2020/udp
  13. # 重新加载防火墙配置
  14. sudo firewall-cmd --reload
复制代码

7. SELinux配置

如果启用了SELinux,我们需要正确配置SELinux策略以允许NFS共享。

7.1 检查SELinux状态
  1. sestatus
复制代码

7.2 设置NFS共享的SELinux上下文
  1. # 设置共享目录的SELinux上下文
  2. sudo semanage fcontext -a -t public_content_rw_t "/data/nfs-share(/.*)?"
  3. sudo restorecon -Rv /data/nfs-share
复制代码

7.3 允许NFS匿名写入

如果需要允许匿名用户写入NFS共享,可以设置以下SELinux布尔值:
  1. sudo setsebool -P nfs_export_all_rw on
复制代码

7.4 允许NFS服务器作为客户端

如果NFS服务器也需要作为客户端挂载其他NFS共享,可以设置:
  1. sudo setsebool -P use_nfs_home_dirs on
复制代码

8. NFS监控与故障排除

8.1 检查NFS服务状态
  1. # 检查nfs-server服务状态
  2. sudo systemctl status nfs-server
  3. # 检查rpcbind服务状态
  4. sudo systemctl status rpcbind
复制代码

8.2 查看NFS共享
  1. # 在服务器上查看导出的共享
  2. sudo exportfs -v
  3. # 在客户端上查看挂载的NFS共享
  4. showmount -e nfs-server
复制代码

8.3 查看NFS活动
  1. # 查看NFS服务器活动
  2. sudo nfsstat
  3. # 查看RPC活动
  4. sudo rpcinfo -p
复制代码

8.4 常见问题及解决方案

问题:客户端挂载NFS共享时出现”mount.nfs: Connection timed out”或”mount.nfs: No route to host”错误。

解决方案:

• 检查网络连接是否正常
• 确保服务器和客户端之间的防火墙配置正确
• 检查NFS服务是否在服务器上运行
  1. # 在服务器上检查NFS服务
  2. sudo systemctl status nfs-server
  3. # 在客户端上检查网络连接
  4. ping nfs-server
  5. # 在客户端上检查端口是否可达
  6. telnet nfs-server 2049
复制代码

问题:客户端挂载NFS共享后,访问文件时出现”Permission denied”错误。

解决方案:

• 检查共享目录的权限设置
• 确保客户端用户在服务器上存在且具有适当权限
• 检查NFS导出选项中的用户映射设置
  1. # 在服务器上检查目录权限
  2. ls -la /data/nfs-share
  3. # 在服务器上检查导出选项
  4. sudo exportfs -v
复制代码

问题:多个客户端同时访问同一文件时出现锁定问题。

解决方案:

• 确保NFS锁定服务(nlockmgr)正在运行
• 检查防火墙是否允许锁定服务端口
  1. # 启动并启用nfs-lock服务
  2. sudo systemctl start nfs-lock
  3. sudo systemctl enable nfs-lock
  4. # 检查锁定服务状态
  5. sudo systemctl status nfs-lock
复制代码

问题:NFS共享访问速度慢。

解决方案:

• 调整读写块大小(rsize和wsize)
• 考虑使用异步写入(async选项,但要注意数据安全性)
• 检查网络带宽和延迟
  1. # 在客户端挂载时调整块大小
  2. sudo mount -t nfs -o rsize=32768,wsize=32768 nfs-server:/data/nfs-share /mnt/nfs-share
复制代码

9. 实际应用场景

9.1 开发团队代码共享

在软件开发团队中,NFS可以用于集中存储和管理代码库。开发人员可以在NFS共享上直接编辑代码,而无需在每个本地环境中维护完整的代码副本。

实施步骤:

1. 在NFS服务器上创建代码库目录:
  1. sudo mkdir -p /data/nfs-share/projects
  2. sudo chmod -R 755 /data/nfs-share/projects
  3. sudo chown -R devteam:devteam /data/nfs-share/projects
复制代码

1. 更新/etc/exports文件:
  1. /data/nfs-share/projects 192.168.1.0/24(rw,sync,no_subtree_check)
复制代码

1. 在开发人员的客户端机器上挂载共享:
  1. sudo mkdir -p /home/developer/projects
  2. sudo mount -t nfs nfs-server:/data/nfs-share/projects /home/developer/projects
复制代码

1. 设置自动挂载:
  1. nfs-server:/data/nfs-share/projects   /home/developer/projects   nfs   defaults   0 0
复制代码

9.2 设计团队素材共享

设计团队通常需要共享大型设计文件,如Photoshop文件、Illustrator文件等。NFS可以提供一个中央存储位置,方便团队成员访问和协作。

实施步骤:

1. 在NFS服务器上创建设计素材目录:
  1. sudo mkdir -p /data/nfs-share/design-assets
  2. sudo chmod -R 755 /data/nfs-share/design-assets
  3. sudo chown -R designteam:designteam /data/nfs-share/design-assets
复制代码

1. 更新/etc/exports文件,考虑使用更大的块大小以提高性能:
  1. /data/nfs-share/design-assets 192.168.1.0/24(rw,sync,no_subtree_check,rsize=65536,wsize=65536)
复制代码

1. 在设计人员的客户端机器上挂载共享:
  1. sudo mkdir -p /home/designer/assets
  2. sudo mount -t nfs -o rsize=65536,wsize=65536 nfs-server:/data/nfs-share/design-assets /home/designer/assets
复制代码

9.3 文档团队协作编辑

文档团队可以使用NFS共享来协作编辑文档,确保所有成员都访问最新版本的文档。

实施步骤:

1. 在NFS服务器上创建文档目录:
  1. sudo mkdir -p /data/nfs-share/documents
  2. sudo chmod -R 755 /data/nfs-share/documents
  3. sudo chown -R docteam:docteam /data/nfs-share/documents
复制代码

1. 更新/etc/exports文件:
  1. /data/nfs-share/documents 192.168.1.0/24(rw,sync,no_subtree_check)
复制代码

1. 在文档团队成员的客户端机器上挂载共享:
  1. sudo mkdir -p /home/writer/documents
  2. sudo mount -t nfs nfs-server:/data/nfs-share/documents /home/writer/documents
复制代码

10. 自动化部署脚本

为了简化NFS服务器和客户端的部署过程,我们可以创建自动化脚本。

10.1 NFS服务器部署脚本

创建一个名为setup-nfs-server.sh的脚本:
  1. #!/bin/bash
  2. # NFS服务器部署脚本
  3. # 检查是否以root权限运行
  4. if [ "$(id -u)" != "0" ]; then
  5.    echo "此脚本必须以root权限运行" 1>&2
  6.    exit 1
  7. fi
  8. # 配置变量
  9. SHARE_DIR="/data/nfs-share"
  10. CLIENT_IP="192.168.1.101" # 可以修改为客户端IP或子网
  11. # 更新系统
  12. dnf update -y
  13. # 安装nfs-utils
  14. dnf install nfs-utils -y
  15. # 创建共享目录
  16. mkdir -p $SHARE_DIR
  17. chmod -R 755 $SHARE_DIR
  18. chown -R nobody:nobody $SHARE_DIR
  19. # 配置NFS共享
  20. echo "$SHARE_DIR $CLIENT_IP(rw,sync,no_subtree_check)" >> /etc/exports
  21. # 启动并启用服务
  22. systemctl start nfs-server
  23. systemctl enable nfs-server
  24. # 导出共享
  25. exportfs -a
  26. # 配置防火墙
  27. systemctl start firewalld
  28. systemctl enable firewalld
  29. firewall-cmd --permanent --add-service=nfs
  30. firewall-cmd --permanent --add-service=mountd
  31. firewall-cmd --permanent --add-service=rpc-bind
  32. firewall-cmd --reload
  33. echo "NFS服务器配置完成!"
  34. echo "共享目录: $SHARE_DIR"
  35. echo "允许访问的客户端: $CLIENT_IP"
复制代码

使脚本可执行并运行:
  1. chmod +x setup-nfs-server.sh
  2. sudo ./setup-nfs-server.sh
复制代码

10.2 NFS客户端部署脚本

创建一个名为setup-nfs-client.sh的脚本:
  1. #!/bin/bash
  2. # NFS客户端部署脚本
  3. # 检查是否以root权限运行
  4. if [ "$(id -u)" != "0" ]; then
  5.    echo "此脚本必须以root权限运行" 1>&2
  6.    exit 1
  7. fi
  8. # 配置变量
  9. SERVER_IP="192.168.1.100" # NFS服务器IP
  10. SHARE_DIR="/data/nfs-share" # 服务器上的共享目录
  11. MOUNT_POINT="/mnt/nfs-share" # 本地挂载点
  12. # 更新系统
  13. dnf update -y
  14. # 安装nfs-utils
  15. dnf install nfs-utils -y
  16. # 创建挂载点
  17. mkdir -p $MOUNT_POINT
  18. # 挂载NFS共享
  19. mount -t nfs $SERVER_IP:$SHARE_DIR $MOUNT_POINT
  20. # 添加到fstab以实现开机自动挂载
  21. echo "$SERVER_IP:$SHARE_DIR   $MOUNT_POINT   nfs   defaults   0 0" >> /etc/fstab
  22. # 配置防火墙
  23. systemctl start firewalld
  24. systemctl enable firewalld
  25. firewall-cmd --permanent --add-service=nfs
  26. firewall-cmd --permanent --add-service=mountd
  27. firewall-cmd --permanent --add-service=rpc-bind
  28. firewall-cmd --reload
  29. echo "NFS客户端配置完成!"
  30. echo "挂载点: $MOUNT_POINT"
  31. echo "远程共享: $SERVER_IP:$SHARE_DIR"
复制代码

使脚本可执行并运行:
  1. chmod +x setup-nfs-client.sh
  2. sudo ./setup-nfs-client.sh
复制代码

11. NFS与自动挂载器(Autofs)

对于不总是需要访问NFS共享的场景,可以使用自动挂载器(Autofs)来按需挂载NFS共享,而不是在系统启动时就挂载。

11.1 安装Autofs
  1. sudo dnf install autofs -y
复制代码

11.2 配置主映射文件

编辑/etc/auto.master文件:
  1. sudo vi /etc/auto.master
复制代码

添加以下内容:
  1. /mnt/nfs /etc/auto.nfs --timeout=60
复制代码

这行配置的含义是:

• /mnt/nfs:自动挂载的基目录
• /etc/auto.nfs:包含NFS挂载信息的映射文件
• --timeout=60:60秒无活动后自动卸载

11.3 创建NFS映射文件

创建/etc/auto.nfs文件:
  1. sudo vi /etc/auto.nfs
复制代码

添加以下内容:
  1. share -fstype=nfs,rw,sync nfs-server:/data/nfs-share
复制代码

这行配置的含义是:

• share:在/mnt/nfs下创建的子目录名
• -fstype=nfs,rw,sync:挂载选项
• nfs-server:/data/nfs-share:NFS服务器和共享目录

11.4 启动并启用Autofs服务
  1. sudo systemctl start autofs
  2. sudo systemctl enable autofs
复制代码

11.5 测试自动挂载

访问自动挂载点:
  1. cd /mnt/nfs/share
  2. ls -la
复制代码

Autofs应该会自动挂载NFS共享。可以使用以下命令检查挂载状态:
  1. mount | grep nfs
复制代码

12. NFS高可用性配置

对于关键业务环境,可以考虑配置NFS高可用性,以确保在服务器故障时仍能提供文件共享服务。

12.1 使用DRBD和Pacemaker实现NFS高可用性

DRBD(Distributed Replicated Block Device)是一种分布式存储系统,可以在两个服务器之间实时复制数据。Pacemaker是一个集群资源管理器,可以管理服务的高可用性。

在两台服务器上安装DRBD:
  1. sudo dnf install drbd84-utils kmod-drbd84 -y
复制代码

配置DRBD资源(在两台服务器上执行):
  1. sudo vi /etc/drbd.d/nfs.res
复制代码

添加以下内容:
  1. resource nfs {
  2.     device    /dev/drbd0;
  3.     disk      /dev/sdb1;  # 使用一个未使用的分区
  4.     meta-disk internal;
  5.     protocol  C;
  6.    
  7.     on nfs-server1 {
  8.         address   192.168.1.100:7789;
  9.     }
  10.    
  11.     on nfs-server2 {
  12.         address   192.168.1.102:7789;
  13.     }
  14. }
复制代码

初始化并启动DRBD资源(在两台服务器上执行):
  1. sudo drbdadm create-md nfs
  2. sudo drbdadm up nfs
复制代码

在主服务器上设置为主节点:
  1. sudo drbdadm primary --force nfs
复制代码

在两台服务器上安装Pacemaker:
  1. sudo dnf install pacemaker pcs fence-agents-all -y
复制代码

启动并启用Pacemaker服务:
  1. sudo systemctl start pcsd
  2. sudo systemctl enable pcsd
复制代码

设置hacluster用户密码(在两台服务器上执行):
  1. sudo passwd hacluster
复制代码

认证并创建集群(在其中一台服务器上执行):
  1. sudo pcs cluster auth nfs-server1 nfs-server2
  2. sudo pcs cluster setup --name nfs-cluster nfs-server1 nfs-server2
  3. sudo pcs cluster start --all
  4. sudo pcs cluster enable --all
复制代码

配置STONITH(用于故障节点隔离):
  1. sudo pcs property set stonith-enabled=false
复制代码

创建DRBD资源:
  1. sudo pcs resource create nfs-drbd ocf:linbit:drbd drbd_resource=nfs op monitor interval=20s
  2. sudo pcs resource master nfs-master nfs-drbd master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
复制代码

创建文件系统资源:
  1. sudo pcs resource create nfs-fs ocf:heartbeat:Filesystem device="/dev/drbd0" directory="/data/nfs-share" fstype="ext4" op monitor interval=20s
复制代码

创建浮动IP资源:
  1. sudo pcs resource create nfs-vip ocf:heartbeat:IPaddr2 ip=192.168.1.200 cidr_netmask=24 op monitor interval=20s
复制代码

创建NFS服务器资源:
  1. sudo pcs resource create nfs-server systemd:nfs-server op monitor interval=20s
复制代码

设置资源约束:
  1. sudo pcs constraint colocation add nfs-fs with nfs-master INFINITY with-rsc-role=Master
  2. sudo pcs constraint colocation add nfs-vip with nfs-master INFINITY with-rsc-role=Master
  3. sudo pcs constraint colocation add nfs-server with nfs-master INFINITY with-rsc-role=Master
  4. sudo pcs constraint order nfs-master then nfs-fs
  5. sudo pcs constraint order nfs-fs then nfs-vip
  6. sudo pcs constraint order nfs-vip then nfs-server
复制代码

现在,NFS服务将在两台服务器之间提供高可用性。如果主服务器发生故障,Pacemaker会自动将服务切换到备用服务器。

13. 总结与最佳实践

13.1 总结

本文详细介绍了在CentOS系统下安装和配置NFS服务的全过程,从基础环境准备到高级配置和故障排除。通过NFS,团队可以轻松实现文件共享,提高协作效率。主要内容包括:

• NFS服务的基本概念和优势
• NFS服务器和客户端的安装与配置
• 防火墙和SELinux的配置
• NFS高级配置选项
• 监控与故障排除方法
• 实际应用场景示例
• 自动化部署脚本
• 自动挂载器(Autofs)的使用
• NFS高可用性配置

13.2 最佳实践

为了确保NFS服务的稳定性和安全性,建议遵循以下最佳实践:

1. 安全性:在生产环境中启用防火墙和SELinux限制NFS共享的访问范围,只允许可信的客户端访问考虑使用NFSv4和Kerberos认证提高安全性定期审查NFS共享的权限设置
2. 在生产环境中启用防火墙和SELinux
3. 限制NFS共享的访问范围,只允许可信的客户端访问
4. 考虑使用NFSv4和Kerberos认证提高安全性
5. 定期审查NFS共享的权限设置
6. 性能优化:根据网络条件和使用场景调整读写块大小对于高负载环境,考虑使用专用网络接口监控NFS性能,及时调整配置
7. 根据网络条件和使用场景调整读写块大小
8. 对于高负载环境,考虑使用专用网络接口
9. 监控NFS性能,及时调整配置
10. 可靠性:对于关键业务,考虑配置NFS高可用性实施定期备份策略监控NFS服务状态,设置警报
11. 对于关键业务,考虑配置NFS高可用性
12. 实施定期备份策略
13. 监控NFS服务状态,设置警报
14. 管理:使用自动化脚本简化部署和管理维护详细的文档记录定期更新系统和软件包
15. 使用自动化脚本简化部署和管理
16. 维护详细的文档记录
17. 定期更新系统和软件包

安全性:

• 在生产环境中启用防火墙和SELinux
• 限制NFS共享的访问范围,只允许可信的客户端访问
• 考虑使用NFSv4和Kerberos认证提高安全性
• 定期审查NFS共享的权限设置

性能优化:

• 根据网络条件和使用场景调整读写块大小
• 对于高负载环境,考虑使用专用网络接口
• 监控NFS性能,及时调整配置

可靠性:

• 对于关键业务,考虑配置NFS高可用性
• 实施定期备份策略
• 监控NFS服务状态,设置警报

管理:

• 使用自动化脚本简化部署和管理
• 维护详细的文档记录
• 定期更新系统和软件包

通过遵循这些最佳实践,可以确保NFS服务在团队协作环境中发挥最大效用,提高工作效率,同时保证数据的安全性和可靠性。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则