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 等不安全选项。
相关推荐
随便做点啥7 分钟前
32卡×4090 24GB,Qwen3.8-27B-FP8 集群部署报告
服务器·经验分享·docker·vllm
Brilliantwxx16 分钟前
313131
服务器
comedate8 小时前
Windows / Linux GPU 虚拟内存布局差异与 CUDA 越界访问行为
linux·windows·mmu·cuda 越界访问
暴力求解10 小时前
Linux网络---传输层协议TCP(二)
linux·服务器·开发语言·网络·tcp/ip
ltl11 小时前
序列化格式深度对比:Protobuf、FlatBuffers、Cap’n Proto
linux
lengjingzju11 小时前
编译与调试完全指南—第17章 总结
linux
ltl11 小时前
容器网络性能真相:veth vs macvlan vs eBPF 数据面
linux
我不会插花弄玉12 小时前
9.进程间通信(上)【由浅入深-Linux】
linux·共享内存·进程通信
80s77712 小时前
动态ip和静态ip有什么区别
服务器·网络·tcp/ip
CSDN1211013 小时前
麒麟 V10 安装 Node-RED、IEC 104 协议插件及界面汉化
linux·编辑器·vim