Linux命令-showmount(显示 NFS 服务器导出的目录)

Linux命令-showmount(显示 NFS 服务器导出的目录)

快速参考

showmount 是用于显示 NFS 服务器导出目录的命令行工具。它查询指定 NFS 服务器的导出列表,帮助客户端了解哪些目录可以挂载。showmount 既可以查看本地 NFS 服务器的导出,也可以查看远程服务器的导出。

核心概念 :NFS 服务器通过 /etc/exports 定义导出的目录;客户端使用 showmount 查看可用导出。

基本语法

bash 复制代码
# 基本语法
showmount [选项] [主机]

# 查看本地服务器导出的目录
showmount -e localhost

# 查看远程服务器导出的目录
showmount -e nfs-server.example.com

# 查看所有挂载了服务器导出的客户端
showmount -a nfs-server.example.com

安装 showmount

bash 复制代码
# showmount 是 nfs-common 包的一部分
# Debian/Ubuntu
sudo apt update
sudo apt install nfs-common

# RHEL/CentOS
sudo yum install nfs-utils

# Arch Linux
sudo pacman -S nfs-utils

# 验证安装
which showmount
showmount --version

常用选项

bash 复制代码
# -e, --exports  显示服务器的导出列表
showmount -e nfs-server

# -a, --all  显示所有客户端的挂载情况
showmount -a

# -d, --directories  显示被挂载的目录
showmount -d nfs-server

# -h, --help  显示帮助
showmount --help

# --no-headers  不显示标题行
showmount -e --no-headers nfs-server

# --version  显示版本
showmount --version

实际应用场景

bash 复制代码
# === 场景1:查看远程 NFS 服务器的可用导出 ===
# 1. 查看服务器导出了哪些目录
showmount -e 192.168.1.100

# 输出示例:
# Export list for 192.168.1.100:
# /shared      192.168.1.0/24
# /home        192.168.1.0/24
# /var/backups *.example.com

# 2. 挂载远程导出的目录
sudo mkdir -p /mnt/nfs_shared
sudo mount -t nfs 192.168.1.100:/shared /mnt/nfs_shared

# 3. 验证挂载
df -h | grep nfs

# === 场景2:在 NFS 服务器上查看谁挂载了目录 ===
# 1. 查看所有客户端的挂载
showmount -a

# 输出示例:
# All mount points on server:
# 192.168.1.101:/shared
# 192.168.1.102:/home

# 2. 查看哪些目录被挂载了
showmount -d

# 输出示例:
# Directories on server:
# /shared             192.168.1.101
# /home               192.168.1.102,192.168.1.103

配置 NFS 服务器

bash 复制代码
# === 在服务器端配置 NFS 导出 ===

# 1. 安装 NFS 服务器软件包
sudo apt install nfs-kernel-server   # Debian/Ubuntu
sudo yum install nfs-utils          # RHEL/CentOS

# 2. 编辑 /etc/exports
sudo vim /etc/exports

# 添加以下行:
# /shared      192.168.1.0/24(rw,sync,no_subtree_check)
# /home        192.168.1.100(rw,sync)
# /var/backups *.example.com(ro,sync)

# 参数说明:
# rw       :读写权限
# ro       :只读权限
# sync     :同步写入(更安全)
# async    :异步写入(更快)
# no_root_squash :允许 root 用户访问(不安全)
# root_squash   :将 root 映射为 anonymous(安全)
# no_subtree_check :不检查父目录权限(提高性能)

# 3. 导出目录
sudo exportfs -a   # 导出 /etc/exports 中所有目录
sudo exportfs -r   # 重新导出所有目录

# 4. 查看导出列表
showmount -e localhost

# 5. 启动 NFS 服务
sudo systemctl enable nfs-kernel-server   # Debian/Ubuntu
sudo systemctl start nfs-kernel-server

sudo systemctl enable nfs-server          # RHEL/CentOS
sudo systemctl start nfs-server

客户端挂载 NFS 共享

bash 复制代码
# === 在客户端挂载 NFS 共享 ===

# 1. 查看服务器导出的目录
showmount -e nfs-server

# 2. 创建本地挂载点
sudo mkdir -p /mnt/nfs_shared

# 3. 挂载 NFS 共享
sudo mount -t nfs nfs-server:/shared /mnt/nfs_shared

# 4. 使用 NFSv4 挂载(推荐)
sudo mount -t nfs4 nfs-server:/shared /mnt/nfs_shared

# 5. 持久化挂载(写入 /etc/fstab)
sudo vim /etc/fstab
# 添加以下行:
# nfs-server:/shared  /mnt/nfs_shared  nfs4  defaults,timeo=100,retrans=5  0 0

# 6. 验证挂载
df -h | grep nfs

故障排查

bash 复制代码
# 问题1:showmount -e 报错 "Connection refused"
# 原因:NFS 服务器未运行
# 解决:在服务器上启动 NFS 服务
sudo systemctl start nfs-kernel-server

# 问题2:showmount -e 报错 "No route to host"
# 原因:防火墙阻止 NFS 端口
# 解决:在服务器上开放 NFS 端口
sudo ufw allow from 192.168.1.0/24 to any port nfs

# 问题3:可以 showmount 但无法挂载
# 原因:权限不足或导出配置错误
# 解决:检查服务器 /etc/exports 配置
sudo exportfs -v

# 问题4:挂载后无法写入
# 原因:权限或 NFS 选项配置错误
# 解决:检查导出权限
showmount -e nfs-server
# 确保有 rw 选项

总结

核心价值 :showmount 是 NFS 客户端和服务器的关键工具,用于查看可用的 NFS 导出。
常用组合:

  • showmount -e server:查看服务器的导出列表
  • showmount -a:查看所有客户端的挂载
  • sudo exportfs -a:导出 NFS 目录
  • sudo mount -t nfs server:/path /mnt:挂载 NFS 共享
    注意 :NFS 配置需要注意权限和安全性,避免 no_root_squash 等不安全选项。
相关推荐
AKA__Zas13 分钟前
TCP 与 IP 浅显皮毛
服务器·网络·tcp/ip
夜听莺儿鸣8 小时前
502-002_Linux驱动开发模块化编程
linux·驱动开发·模块化编程
wuminyu8 小时前
C++协程实现接收端的零拷贝Buffer管理原理剖析
java·linux·c语言·jvm·c++
科力锐品牌君9 小时前
应用级灾备 | 海量非结构化数据如何实现高效数据保护
linux·运维·网络·安全·系统安全·数据安全·灾备
zhangrelay9 小时前
ROS项目设计案例智能大模型正经乱答案例
linux·笔记·学习·ubuntu·机器人
流浪00110 小时前
Linux系统篇39——线程(四) pthread库的由来和线程的创建与等待
linux·操作系统·线程·pthread库
Lancker10 小时前
chnroute-linux — 中国大陆 IP 段每日自动更新 + 「仅允许国内访问」落地
linux·运维·tcp/ip
辻弋20110 小时前
【无标题】
大数据·服务器·前端·搜索引擎·开源软件
高山有多高11 小时前
【Linux笔记】Linux进程与守护进程
linux
大侠归来11 小时前
Ubuntu 搭建 APUE 环境:从源码编译到第一个示例跑通
linux·运维·ubuntu