星途物语 星途物语
首页
  • 随手记录
  • 故障处理
  • Nginx
  • MySQL
  • Ansible
  • Nexus
  • Tomcat
  • Docker
  • Zabbix
  • Prometheus
  • Git
  • GitLab
  • Jenkins
  • Kubernetes
  • Shell
  • Python
  • 圈圈空间
  • 做饭这件事
收藏站点
留言板
归档
GitHub (opens new window)

星途物语

尚记时,记之
首页
  • 随手记录
  • 故障处理
  • Nginx
  • MySQL
  • Ansible
  • Nexus
  • Tomcat
  • Docker
  • Zabbix
  • Prometheus
  • Git
  • GitLab
  • Jenkins
  • Kubernetes
  • Shell
  • Python
  • 圈圈空间
  • 做饭这件事
收藏站点
留言板
归档
GitHub (opens new window)
  • 随手记录

    • QPS优化记录
    • 阿里云SLB演示
    • DDOS预防
    • Linux内核优化
    • rsync同步守护进程
    • NFS文件同步
      • NFS文件同步必须要安装的包
      • 启动服务
      • 在服务端共享文件设置
      • 开放 NFS 端口和 RPC 端口
      • 客户端挂载文件
      • NFS 设置永久挂载
    • Tomcat升级
    • 编译安装mysql后添加到systemd管理
    • 防火墙笔记
    • python自动化巡检服务器
  • 故障处理

    • 处理防MIME攻击后出现的问题解决
  • MySQL学习笔记

    • MySQL5.7安装
    • MySQL常用操作语句
    • MySQL主从架构实施
    • MySQL主主架构实施
    • MySQL MHA高可用实施
    • MyCat读写分离
    • MySQL创建用户时的授权
    • MySQL备份
    • MySQL通配符
  • Nginx学习笔记

    • 状态码含义
    • 匹配优先级
    • Nginx常用操作
    • 添加第三方模块
    • 关于路径匹配
    • 转发和重写
    • 内置变量
    • Nginx配置文件结构
  • Tomcat学习笔记

    • 部署Tomcat
    • 修改发布目录
    • Tomcat调优
  • Redis学习笔记

    • 通过 tar.gz 包安装部署 redis
    • redis 配置文件
    • 哨兵集群
    • redis常用命令
    • 虚拟机安装 redis.tar.gz 遇到的问题
  • Ansible学习笔记

    • 部署和使用 ansible
    • ansible 自带的密码认证参数
    • 批量免密操作:批量分发公钥
    • 配置主机清单
    • ansible 小知识
    • 模块介绍
    • 剧本
    • 一键部署 rsync 环境
    • 批量安装一个tomcat
    • 批量安装一个nginx
    • 批量安装 zabbix-agent
  • Zabbix学习笔记

    • 部署 zabbix 服务端、客户端
    • 自定义监控
    • 触发器
    • 监控项类型
    • 简单检查模式
    • zabbix web 界面结构信息
    • 邮件报警
    • 微信报警
    • snmp 监控网络设备
    • 部署 zabbix 服务端、客户端
    • jmx 监控 java 应用
    • ipmi 监控硬件
    • 自动化注册
    • 监控项的主要项和相关项
    • percona 监控 mysql
  • Git学习笔记

    • 配置 git
    • 常用命令
  • GitLab学习笔记

    • 环境准备
    • 安装 gitlab
    • gitlab 忘记 root 管理员密码的处理办法
  • Jenkins学习笔记

    • 安装部署
    • jenkins 使用脚本完成项目构建
    • jenkins 自动构建最新项目
    • 将 jenkins 自动部署的结果返回给 gitlab
    • jenkins 上线 java 项目
    • jenkins pipeline
  • Docker学习笔记

    • 安装 docker
    • 配置 docker 源
    • docker 中的常见名词
    • 镜像管理命令
    • 容器管理命令
    • 创建容器
    • 数据卷
    • docker network
    • 搭建 LNMP
    • Dockerfile
    • Dockerfile 搭建 tomcat
    • docker 镜像磁盘扩容
    • docker composer
    • Harbor 私有镜像仓库
    • docker 面试题
    • docker desktop 运行时与虚拟机冲突
    • docker离线安装
  • Nexus学习笔记
  • Prometheus学习笔记

    • 核心组件
    • 工作原理
    • 安装和配置
    • 启动 Prometheus
    • PromQL 使用
    • 数据模型
    • Exporter
    • 演示服务
    • Grafana 数据可视化
    • Prometheus 告警
  • Kubernetes学习笔记

    • K8S的介绍
    • K8S集群环境的搭建
    • K8S资源管理
    • K8S的实战入门
  • 运维
  • 随手记录
星途物语
2025-01-13
目录

NFS文件同步

# NFS文件同步必须要安装的包

客户端和服务器都需要安装

nfs-utils,rpcbind:yum install nfs-utils rpcbind -y

nfs-utils 是 NFS 主要工作的软件包,包含了 NFS 服务器和客户端所需的工具和守护进程

NFS 本身没有做端口映射,所以需要 RPC 机制进行网络服务,rpcbind 是一个关键的组件,负责将客户端的 RPC 请求映射到实际的服务进程,总而言之,当需要 NFS 服务时,需要将 NFS 和 RPC 一起安装

# 启动服务

在服务端启动 NFS 和 RPC服务,并设置开机自启,客户端只需要启动 RPC 就可以,主要是需要 RPC 提供的守护进程

sudo systemctl start rpcbind
sudo systemctl enable rpcbind
sudo systemctl start nfs-server
sudo systemctl enable nfs-server
1
2
3
4

# 在服务端共享文件设置

先了解共享文件语法:

基本语法:<directory> <host>(<options>)

  • <directory>:要共享的目录路径

    <host>:允许访问该共享的客户端,可以是主机名、IP 地址或网络地址

    <options>:访问选项,用逗号分隔

常用选项:

  • rw:读写权限

    ro:只读权限

    sync:数据在请求写入时同步到磁盘

    async:数据在请求写入时不立即同步到磁盘

    no_root_squash:允许根用户访问(不进行 UID 映射),远程 root 用户拥有与本地 root 用户相同的权限

    root_squash:将根用户映射为匿名用户(默认),远程 root 用户被降级为匿名用户

    all_squash:将所有用户映射为匿名用户,所有远程用户都被降级为匿名用户

    subtree_check:检查子目录的权限

    no_subtree_check:不检查子目录的权限

    insecure:允许客户端使用不安全端口(大于1024的端口)

    anonuid:设置映射用户的UID

    anongid:设置映射用户的GID

1.首先设置需要共享的文件和相关权限

比如我现在需要在服务器共享 /html/www 下的文件

  • 如果选择 no_root_squash 的方式同步文件,则无需更改文件权限
  • 如果选择 root_squash 的方式同步文件,用户通常被映射为 nfsnobody:nfsnobody,需要给同步文件设置其他组的权限
    • groupadd -g 65534 nfsnobody ; useradd -u 65534 -g nfsnobody -s /sbin/nologin -c "NFS Nobody" nfsnobody
  • 如果选择 all_squash 的方式同步文件,代表 所有用户都被映射为 匿名用户

chmod -R 744 /html/www

如果你想严谨一点,可以设置 /html/www 下所有文件的属主和属组

2.设置共享文件

vim /etc/exports

假如我要 /html/www 下的文件共享给 192.168.3.0/24

如果你的文件系统级别权限设置为“其他组只能读”(即文件或目录的权限为744),而在NFS导出选项中设置为 rw,那么最终权限是受限于文件系统级别的权限,换句话说,客户端用户会受到文件系统权限的限制,即使NFS导出选项是 rw,用户也只能读取而不能写入

设置为 root_squash 后,客户端会使用服务器预设的 nfsnobody 用户和组

/html/www 192.168.3.0/24(ro,sync,root_squash,no_subtree_check)
1

在更改 exports 文件后,使用 exportfs -r 重新加载该文件

# 开放 NFS 端口和 RPC 端口

如果有云控制台,还需要额外去配置防火墙信息

NFS 主要使用以下端口:

  • 2049:NFS 服务器端口

    111:rpcbind 端口

    20048:rpc.mountd 端口

sudo firewall-cmd --permanent --add-port=2049/tcp
sudo firewall-cmd --permanent --add-port=2049/udp
sudo firewall-cmd --permanent --add-port=111/tcp
sudo firewall-cmd --permanent --add-port=111/udp
sudo firewall-cmd --permanent --add-port=20048/tcp
sudo firewall-cmd --permanent --add-port=20048/udp
1
2
3
4
5
6

# 客户端挂载文件

mount -t nfs [options] <server_ip>:/remote/share /local/mount/point

mount -t nfs 49.235.177.56:/var/temp/ /var/temp/nfs3/

选项:

-t nfs: 指定挂载的文件系统类型为 NFS

[options]: 这里可以指定挂载选项,例如 rw、ro、vers=4 等。选项用于控制挂载的行为,下面列举一些常见的选项:

  • rw:以读写模式挂载

    ro:以只读模式挂载

    vers=4:指定 NFS 版本为 4,如果不指定,系统可能使用默认版本(通常是 NFSv3)

    nolock:禁用锁定机制

    timeo=600:设置挂载超时时间(以十分之一秒为单位)

<server_ip>:/remote/share: 远程 NFS 服务器的 IP 地址和共享目录路径

  • <server_ip>: NFS 服务器的 IP 地址或主机名

    /remote/share: NFS 服务器上共享的目录路径,确保这个路径在 NFS 服务器的 /etc/exports 文件中正确配置并导出

/local/mount/point: 本地挂载点目录,即 NFS 共享目录将被挂载到本地文件系统的哪个目录,这个目录必须在客户端系统中存在且为空

# NFS 设置永久挂载

vim /etc/fstab

添加类似:server_ip:/exported/directory /mnt/nfs_share nfs defaults 0 0

  • server_ip 是 NFS 服务器的 IP 地址或主机名

    /exported/directory 是 NFS 服务器上导出的目录

    /mnt/nfs_share 是客户端系统上的挂载点目录

    nfs 是文件系统类型

    defaults 是挂载选项,可以根据需要进行调整

在编辑 /etc/fstab 之后,可以直接用 mount -a 挂载

验证挂载:df -h

#随手记录#NFS
rsync同步守护进程
Tomcat升级

← rsync同步守护进程 Tomcat升级→

Theme by Vdoing | Copyright © 2025-2025 | 鄂ICP备2024086820号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式