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等不安全选项。