解决方案:journactl -u nfs-mountd.service,可以看到该客户端请求过来的ip不在服务端的/etc/exports里面,什么原因呢,是因为客户端配置了多个网卡,两个默认网关,请求流量走的是另一个网关导致的,所以删掉客户端的不相关的网关即可
所以不知道是哪个服务导致将所有该服务的子服务都journalctl -u
还有一点,就是journalctl -u 服务名,如果服务名不对,如:
journalctl -u aaaa
都会打印一行日志:-- Logs begin at 时间点,end at 时间点(即jounalctl所有日志的起始结束时间),不要误以为打印了日志导致可能是服务名不对,这是不相关的日志
所以先执行systemctl list-units |grep -i 服务,然后对running的jourctl -u 子服务
journalctl -u 只能查看由 systemd 启动的服务的日志。如果你的 NFS 服务是手动启动的(比如直接运行命令),或者是通过 SysV 脚本启动的,它的日志就不会进入 journal 。
验证方法:运行 systemctl status nfs.service 或 systemctl list-units --type=service | grep nfs。
如果命令返回 "Unit nfs.service could not be found" 或列表为空,说明该服务没有作为 systemd 服务注册。你需要去检查传统的日志文件,通常位于 /var/log/ 目录下,比如 messages 或 syslog文件。
我执行systemctl list-units --type=service | grep -I nfs,显示: nfs-idmapd.service. loaded active running NFSV4 ID-name mapping service nfs-mountd.service loaded active running NFS Mount Daemon nfs-server.service. loaded active exited NFS server and services nfs-state-notify.service. loaded active exited Notify NFS peers of a restart nfs-state.service. loaded active running NFS status monitor for NFSv2/3 locking
当 grep 出多个服务时,确实意味着这个功能是由多个服务协同完成的。这是一种模块化设计,每个服务负责一个专门的子功能
systemd 服务状态的核心!loaded active 后面跟着 running 或 exited 其实并不矛盾,反而体现了 systemd 对不同类型的服务采用不同的管理方式 loaded active running 这种格式其实是三部分信息: 部分 含义 可能的值 loaded 服务单元文件是否已被加载到内存 loaded, not-found, error active 服务的高层状态(是否在运行) active, inactive, activating, deactivating, failed running/exited 服务的详细子状态 running, exited, waiting, dead 等 1. nfs-idmapd.service - loaded active running text loaded active running NFSV4 ID-name mapping service 含义:这是一个常驻守护进程,一直在后台运行 为什么:idmapd 需要持续运行,随时处理 NFSv4 的用户ID和用户名之间的转换请求 类似服务:数据库服务、Web 服务器等需要持续提供服务的程序 2. nfs-mount.service - loaded active running text loaded active running NFS Mount Daemon 含义:mountd 守护进程,一直在后台运行 为什么:需要持续监听客户端的挂载请求(MOUNT协议),随时响应 作用:处理客户端的挂载请求,检查导出权限 3. nfs-server.service - loaded active exited text loaded active exited NFS server and services 含义:这个服务已经完成它的任务并退出了 为什么:这是一个 oneshot 类型的服务,它的工作是: 启动内核 NFS 服务(nfsd 内核线程) 启动其他必要的辅助服务 任务完成就退出 关键点:虽然这个 systemd 服务退出了,但它启动的内核线程依然在运行 验证:可以用 ps aux | grep nfsd 看到 nfsd 内核线程还在运行 4. nfs-state-notify.service - loaded active exited text loaded active exited Notify NFS peers of a restart 含义:同样是 oneshot 类型服务,执行完就退出 作用:在系统重启后,通知其他 NFS 节点本机已重启(NFSv4 的 lease 管理) 5. nfs-state.service - loaded active running text loaded active running NFS status monitor for NFSv2/3 locking 含义:statd 守护进程,一直在后台运行 作用:监控 NFSv2/v3 的锁状态,当客户端重启时恢复文件锁