NFS网络文件系统实战

网友投稿 1172 2022-05-28

=================================

/*

* @系统:CEntOS8 | Ubuntu 20.04.4 LTS

* @描述:NFS是当前主流异构平台共享文件系统之一。

*/

=================================

一、介绍

网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。

基于RPC(Remote Procedure Call Protocol 远程过程调用)实现。RPC采用C/S模式。

NFS工作原理简图

二、安装NFS

# yum install -y nfs-utils

三、说明

NFS网络文件系统实战

软件包:nfs-utils(包含服务端和客户端的相关工具)

相关软件包:rpcbind(必须)

kernel支持:nfs.ko

端口:2049(nfsd),其它端口由rpcbind(111)分配

进程:自CentOS 6开始,portmap进程由rpcbind代替

rpc.nfsd:最主要的NFS进程,管理客户端是否可登录

rpc.mountd:挂载和卸载NFS文件系统,包括权限管理

rpc.lockd:非必要,管理文件锁,避免同时写错

rpc.statd:非必要,检查文件一致性,可修复文件

日志:/var/lib/nfs/

配置文件:/etc/exports #相当于总配置文件 |  /etc/exports.d/*.exports #自定义配置文件存放位置

四、参数说明

ro:只读访问 rw:读写访问 sync:同步,所有数据在请求时立即写入共享存储磁盘 async:异步,数据变化后不立即写入磁盘,先写入缓冲区,过一段时间再写入磁盘,性能高 all_squash:共享文件的UID和GID映射用户nobody,适合公用目录。 no_all_squash:保留共享文件的UID和GID(默认) root_squash:root用户的所有请求映射成如nobody用户一样的权限(默认) no_root_squash:root用户具有根目录的完全管理访问权限 anonuid=xxx:指定nfs服务器/etc/passwd文件中匿名用户的UID anongid=xxx:指定nfs服务器/etc/passwd文件中匿名用户的GID

五、实战

1. 实验环境

机器准备 服务端:CentOS 8 客户端:Ubuntu 20.04 客户端:Windows 10 企业版(注意系统版本,有些系统不支持NFS) # 服务端防火墙操作 # firewall-cmd --zone=public --add-service=nfs-server --permanent # firewall-cmd --zone=public --add-port=111/tcp --permanent # firewall-cmd --zone=public --add-port=2049/tcp --permanent # firewall-cmd --reload # Ubuntu客户端防火墙操作 $ sudo ufw allow nfs-server $ sudo ufw allow 2049 $ sudo ufw allow 111

2. 实验步骤

① Linux系统安装NFS服务端和客户端

# yum install -y nfs-utils rpcbind # 服务端安装,rpcbind默认CentOS7以下版本不安装 $ sudo apt-get install -y nfs-kernel-server # 客户端Ubuntu

② windows10安装NFS客户端

在电脑桌面左下角(开始按钮)右键单击,选择“设置->应用选项->右侧“程序和功能”->启用或关闭windows功能->NFS服务->NFS客户端(这个是最小化安装,而管理工具是图形化界面),完成后立即重启”。

③ 创建和共享目录

# mkdir -p /home/share # 位置自定义 # vim /etc/exports # 编辑NFS主配置文件(格式:共享目录 主机1[权限,权限...] 主机2[权限,权限...]) ====content==== /home/share 192.168.11.0/24(rw,all_squash) ====end==== # 注:192.168.11.0/24 :这里指的是共享给192.168.11整个网段 # all_squash : 将所有用户都映射为NFS系统用户(nfsnobody or nobody)

④ 启动服务

# systemctl start nfs-server # 启动服务 # systemctl restart nfs-server # 重启服务 # systemctl stop nfs-server # 停止服务 # systemctl status nfs-server # 查看状态

⑤ 挂载

# Linux客户端创建挂载点 $ sudo apt-get install -y nfs-kernel-server # 安装NFS服务 $ mkdir /mnt/nfsshare $ sudo mount -t nfs 192.168.11.31:/home/share /mnt/nfsshare/ # 自动挂载 # yum install -y autofs # cd /net/192.168.11.31/home/share # df 192.168.11.31:/home/share 33321088 265344 33055744 1% /net/192.168.11.31/home/share # 设置开机自动挂载 # CentOS7 # vim /etc/fstab ====content==== 192.168.11.31:/home/share /mnt/nfsshare nfs _netdev 0 0 ====end==== $ sudo mount -a # 注:_netdev : 无网络不挂载 # Ubuntu $ sudo vim /etc/fstab ====content==== 192.168.11.31:/home/share /mnt/nfsshare nfs _netdev 0 0 ====end==== $ sudo mount -a # windows10挂载(CMD/命令行界面) >showmount -e 192.168.11.31 导出列表在 192.168.11.31: /home/share 192.168.11.0/24 >mount \\192.168.11.31\home/share X: # 映射到某个具体的磁盘(盘符未使用) X: 现已成功连接到 \\192.168.11.31\home/share 命令已成功完成。 # 效果如下图

⑥ 授权

# setfacl -m u:nobody:rwx /home/share #给nobody用户赋权 # 注:给nobody用户授权时,注意系统版本,CentOS8是nobody,其它系统可能是nfsnobody

⑦ 重载配置文件(推荐使用)

# exportfs -r #在服务启动后,可以不需重启服务来完成配置文件重载

3. 测试

# ubuntu 系统测试 $ cd /mnt/nfsshare/ $ touch nfstest.txt $ ls nfstest.txt # windows10 测试 略...

-本篇完-

=推荐阅读=

=================================

Linux防火墙操作

=================================

CentOS Ubuntu 网络

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:纸质文档转电子文档太复杂?试试这个!
下一篇:SQLite数据库损坏与修复
相关文章