linux挂载共享存储方法
步骤 1: 安装 NFS 客户端
大多数 Linux 发行版默认没有安装 NFS 客户端工具,请先安装:
Ubuntu/Debian:
sudo apt update
sudo apt install nfs-common
CentOS/RHEL/Fedora:
sudo dnf install nfs-utils # 对于较新的版本
# 或者
sudo yum install nfs-utils # 对于较旧的版本
步骤 2: 创建本地挂载点
创建一个目录作为挂载点,例如,我要挂载到 /mnt/nfs_share:
sudo mkdir -p /mnt/nfs_share
步骤 3: 手动挂载
使用 mount 命令进行挂载:
sudo mount -t nfs <NFS服务器IP>:/<共享路径> /mnt/nfs_share
示例:
假设 NFS 服务器的 IP 是 192.168.1.100,它共享的目录是 /data/nfs,那么命令是:
sudo mount -t nfs 192.168.1.100:/data/nfs /mnt/nfs_share
步骤 4: 验证挂载
使用 df -h 或 mount 命令查看是否挂载成功:
df -h
# 你应该能看到类似这样的一行:
# 192.168.1.100:/data/nfs Size Used Avail Use% Mounted on /mnt/nfs_share
也可以直接进入挂载点查看文件:
ls -l /mnt/nfs_share
步骤 5: 卸载
当你不再需要时,可以使用 umount 命令卸载:
sudo umount /mnt/nfs_share
步骤 6: 配置开机自动挂载(通过 /etc/fstab)
sudo nano /etc/fstab
在文件末尾添加一行:
<NFS服务器IP>:/<共享路径> /mnt/nfs_share nfs defaults 0 0
示例:
192.168.1.100:/data/nfs /mnt/nfs_share nfs defaults 0 0
保存并退出。之后,你可以使用 sudo mount -a 命令来测试并挂载所有在 fstab 中定义的文件系统,如果没有任何报错,说明配置正确,下次开机就会自动挂载。
以下以centos7为例:
服务器一:192.168.40.148
服务器二:192.168.40.149
在148上分配一块40GB的盘

先将磁盘挂载到148本机



在 NFS 服务器 (192.168.40.148) 上执行以下操作:
步骤 1: 确认 NFS 服务已安装并运行
NFS 依赖 nfs-server 和 rpcbind 服务。
# 1. 检查 nfs-server 服务状态
systemctl status nfs-server
# 2. 检查 rpcbind 服务状态
systemctl status rpcbind
# 3. 如果它们没有运行,请启动并设置开机自启
systemctl enable --now nfs-server rpcbind
步骤 2: 检查防火墙是否放行了 NFS 流量
这是最常见的原因之一。NFS 需要使用多个端口,最简单的方式是将NFS服务添加到防火墙放行规则。
# 永久添加 nfs 服务到防火墙放行规则,并重新加载
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --reload
# 确认规则已生效
firewall-cmd --list-all
以上步骤也可以直接关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
步骤3:在192.168.40.148上操作
148服务器上的 /etc/exports 文件配置允许客户端(149)的IP地址访问 /dbdata 共享。
cat /etc/exports
# 允许单个IP (192.168.40.149) 读写访问
/dbdata 192.168.40.149(rw,sync,no_root_squash)
# 允许整个网段 (192.168.40.0/24) 读写访问
/dbdata 192.168.40.0/24(rw,sync,no_root_squash)
# 允许所有客户端访问(不安全,仅用于测试)
/dbdata *(rw,sync,no_root_squash)

步骤 4: 使新的导出配置生效
仅仅修改文件是不够的,需要让NFS服务重新读取配置.
# 重新导出所有共享配置
sudo exportfs -ra
# 详细显示当前所有导出的共享,确认 /dbdata 和 149 客户端出现在列表中
sudo exportfs -v
在 exportfs -v 的输出中,你应该能看到类似这样的一行:
/dbdata 192.168.40.149(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
步骤5:检查共享目录的本地文件系统权限
即使 exports 文件配置正确,如果Linux系统本身对 /dbdata 目录的权限设置过紧(例如,root用户才有权限),客户端也会被拒绝访问。
# 查看 /dbdata 目录的权限和所有者(/dbdata给了755权限)
ls -ld /dbdata

步骤6:首先检查SELinux是否开启:getenforce
如果返回 Enforcing,说明SELinux正在强制模式下运行,它可能是问题的根源。
回到 NFS 客户端 (192.168.40.149) 进行测试
在服务器上完成上述所有检查和修改后,回到客户端。
1、首先,再次查看服务器提供的共享列表,确认客户端现在被允许访问:
showmount -e 192.168.40.148
这个命令现在应该能成功并显示出 /dbdata。
2、再次尝试挂载:
mount -t nfs 192.168.40.148:/dbdata /dbdata
3、验证挂载:
df -h | grep dbdata
mount | grep dbdata

如果成功,这些命令会显示NFS共享已挂载。
挂载完成后,经测试,149重启后看不到共享存储/dbdata,所以还缺一个自动挂载的步骤:
vim /etc/fstab
步骤 1: 在文件末尾添加一行挂载配置
例子:<服务器IP或主机名>:<共享路径> <本地挂载点> nfs <挂载选项> 0 0
192.168.40.148:/dbdata /dbdata nfs defaults,_netdev 0 0

步骤 2: 测试配置是否正确(非常重要!)
在重启之前,务必测试新的 fstab 配置是否正确,否则错误的配置可能导致系统无法正常启动。
# 卸载当前已挂载的共享(如果已挂载)
sudo umount /dbdata
# 测试:尝试挂载所有在 fstab 中定义的文件系统
sudo mount -a
# 检查是否成功挂载
df -h | grep dbdata
mount | grep dbdata
步骤 3: 重启测试
reboot
df -h

浙公网安备 33010602011771号