精华内容
下载资源
问答
  • 2020-12-20 03:46:02

    NFS服务器在Windows下设置软件的要求:SFU文件要求:用户自己的密码是passwd和组文件是group。

    示例:passwd的内容:root:x:0:0:root:/root:/bin/sh

    group的内容:root:x:0:

    安装:将passwd和group两个文件直接复制到本地C:\盘运行SFU35BETA_EN.exe,这是一个自解压文件,指定一个目录,释放压缩的文件。

    a) 在释放目录中,运行SfuSetup.msi,出现Micorsoft Windows Services for UNIX Setup wizard窗口。

    b) 点击Next,出现Customer Information窗口。

    c) 点击Next,出现License and Support Information窗口,选中"I accept the agreement".

    d) 点击Next,出现Installation Options窗口。

    e) 选择Custom Installation,点击Next,出现Selecting Components窗口。

    f) 点击Utilities目录项,选择Entire feature will not be available,该项的图标变为一个棕色的叉号。

    g) 对"Interix GNU components""Remote Connectivity"使用相同的选择。

    h) 点击NFS目录项,选择Entire Feature(including all subfeature if any)will be installed on local hard drive,该项的图标变为一个白色背景的驱动器。

    i) 对"Authentication tools for NFS"使用相同的选择, 选择Entire Feature(including all subfeature if any)will be installed on local hard drive.

    j) 最终只有"Authentication tools for NFS"和"NFS"两项是完全安装,其他各项都不安装。

    k) 点击Next,出现User Name Mapping窗口,选中Password and group files.

    l) 点击Next,在Password file path and name下的空白栏中输入C:\passwd,在Group file path and name下的空白栏中输入C:\group.

    m) 点击Next,出现Installationg Location窗口,选择安装位置。

    n) 点击Next,开始安装(约21MB)。最后点击Finish,结束安装。如提示重启,则重启。(以上安装过程比较简单,引用网络上文章。)注:此安装于卡巴斯基有冲突,安装前请关闭卡巴斯基。

    共享Windows主机目录不用重启计算机,对要共享的目录右键点击出现下拉菜单,选择"属性",出现目录属性窗口。

    选择"NFS Sharing"选项卡,选中share this folder;指定共享名(Share name,一个简单的名字,大小写无关,如dir);字符编码(Encoding)选择GB2312-80;选中Allow anonymous access;点击Permissions,出现NFS Share Permissions窗口,设置共享文件夹读写属性。

    a) 在Type of access下拉菜单中选择Read-Write(可读可写);要使目标板对本机文件有root权限,选中Allow root access.

    b) 设置完,点击OK按钮,回到目录属性窗口。

    c) 点击"安全"选项,添加everyone,使之允许读取,控制。如图点击"应用"或"确定",使共享生效。

    要设置NFS属性,选择开始->程序->Windows Services for Unix->Services for Unix Administration.

    d) 出现设置窗口后,点击左边子窗口User Name Mapping,再点击标签栏"Map",然后点击show User Maps

    e) 在windows user name框中输入guest,unix user name框中输入root,然后点击add,则添加到mapped users中。

    f) 然后再点击show group Maps, 在windows group name和unix group name框中分别输入guests和root然后点击add,则添加到mapped groups中。

    注:如果分区不是NTFS格式,右键里就不会有"安全"选项。确认之后在资源管理器里点击"工具"菜单-"文件夹选项",将"使用简单文件共享(推荐)"前的勾去掉即可。

    启动目标板,并在目标板上挂装Windows目录将主机IP设为192.168.1.1,交叉线与目标板相连,启动目标板,主机启动tftp服务,运行mount命令来挂装NFS目录:

    mount –t nfs –o nolock 192.168.1.1:share_name/mntshare_name为共享的目录名。显示一下目录内容,应为Windows机器上的共享NFS目录内容。

    然后,我们把编写好的程序放到共享文件夹中,在目标板上就能运行了。

    注:如果防火墙在开启状态,会出现网络不通的情况。

    更多相关内容
  • Windows上搭建NFS服务器

    千次阅读 2021-08-17 22:23:41
    在进行嵌入式开发的时候,我们常用的做法是搭建NFS服务器,然后使把文件系统、调试程序放在NFS服务器上,这样可以方便调试,以前都是在linux里面开启NFS服务器,今天来说下window里的nfs服务器–haneWin 软件安装和...

    在进行嵌入式开发的时候,我们常用的做法是搭建NFS服务器,然后使把文件系统、调试程序放在NFS服务器上,这样可以方便调试,以前都是在linux里面开启NFS服务器,今天来说下window里的nfs服务器–haneWin

    软件安装和使用流程

    安装包可以自行某度解决,我这里直接使用安装好的
    注意使用管理员权限运行程序

    配置目录

    1.打开软件后,其他保持默认,直接按下面的操作
    在这里插入图片描述
    在这里插入图片描述

    重启服务

    我们修改成自己的,比如我在D盘创建了一个nfs文件夹
    我想把这个文件夹作为根目录
    在这里插入图片描述
    然后点击保存,重启服务器

    防火墙

    在这里插入图片描述
    在这里插入图片描述

    在linux里执行

    mount -t nfs -o nolock 10.5.6.250:/nfs  /mnt/nfs
    

    此时linux就可以访问电脑上的文件夹了

    展开全文
  • NFS,全称是 Network File System,用于在不同的服务器之间建立文件共享的通道,使得从其他服务器上访问共享目录时,就如同访问服务器自己本地的文件夹一样方便,这在分布式系统上得到广泛的应用。比如, k8s 集群,...
  • 服务器10.254.5.7 共享NFS配置如下 首先进入到服务器管理器,方法有两种,方法一:同时按下键盘上的“win”+“R”,调出“运行界面”,在“运行”界面文本框中输入“servermanager”,点击“确定”,调出服务器...

    这里测试的服务器地址为:共享文件的服务器10.254.5.7,接受共享文件的服务器为10.254.5.4。 

    服务器10.254.5.7 共享NFS配置如下

    1. 首先进入到服务器管理器,方法有两种,方法一:同时按下键盘上的“win”+“R”,调出“运行界面”,在“运行”界面文本框中输入“servermanager”,点击“确定”,调出服务器管理器。方法二:点击桌面下方的服务器管理器图标 

    2. 点击“添加角色和功能”

    1. 点击“下一步”。

    1. 勾选“基于角色或基于功能的安装”,然后点击“下一步”。

    1. 勾选“从服务器池中选择服务器”,然后点击“下一步”。

    1. 鼠标点击“文件和存储服务”左侧的“▷”展开下级菜单,然后点击“文件和 iSCSI 服务”左侧的“▷”展开下级菜单,勾选“NFS 服务器”,弹出确认窗口 ,点击下一步。

    1. 直接点击“下一步”。

    1. 然后安装,等待安装完成后,点击关闭。 随便找一个文件夹,选中文件夹点击鼠标“右键”,弹出右键菜单,点击右键菜单中的“属性”,在文件夹的属性界面可以看到多了“NFS 共享”的选项卡。

    1. 点击管理NFS共享,配置完成后,我们就可以在其余服务器上面获取到这个共享服务器。

    在服务器10.254.5.4 获取到这个共享服务器 

    1. 在服务器上面输入mount \\10.254.5.7\D:\upload F:

    如果未安装过NFS服务器的话,则会报错:

    'mount' 不是内部或外部命令,也不是可运行的程序或批处理文件。

    1. 这时候我们需要安装角色NFS服务器

    1. 安装完毕后,我们在输入 mount \\10.254.5.7\D:\upload F: 就已经成功了

    1. 这时候,在我的电脑里面就可以看到这个共享的文件夹了,可以正常操作

    恭喜你 大功告成!!! 

    注意:如果要是在正式服务器一般要开通2049和111端口

    展开全文
  • 0x00 前言简述0x01 NFS安装配置(1) CentOS 系统(2) Ubuntu 系统0x02 NFS配置介绍/etc/exports/var/lib/nfs/etab0x03 NFS安全配置0x04 入坑出坑0x05 参考连接0x00 前言简述描述: 先来学习三大步,任何事物皆可用;...
    • 0x00 前言简述

    • 0x01 NFS安装配置

      • (1) CentOS 系统

      • (2) Ubuntu 系统

    • 0x02 NFS配置介绍

      • /etc/exports

      • /var/lib/nfs/etab

    • 0x03 NFS安全配置

    • 0x04 入坑出坑

    • 0x05 参考连接

    0x00 前言简述

    描述: 先来学习三大步,任何事物皆可用;

    Q: 什么是NFS?为什么要NFS?

    描述:NFS(Network File System)即网络文件系统, 利用网络使得在不同的机器之间共享文件。
    通过NFS可以将另一台机器的某个目录挂载到本机的某个目录下, 在使用的时候挂载过来的目录就像在本地一样, 极大的方便了多台服务器之间的文件共享。

    补充:在提到NFS服务的时候都会提到RPC服务,那么什么是RPC服务,为什么需要RPC服务呢?
    答:RPC是Remote Procedure Call的缩写即远程过程调用,其次关于为什么要RPC服务是因为NFS服务在启动的时候对于端口的选择是随机的,NFS在启动的时候回随机选择小于1024的端口进行数据的传输。而RPC的主要功能就是记录每个NFS服务所对应的端口号,当客户端尝试连接NFS服务时它会将其对应的端口号发送给客户端,客户端根据获得的端口号进行连接。

    rpc.nfsd:它是基本的NFS守护进程,主要功能是管理客户端是否能够登录服务器
    rpc.mount:主要功能是管理NFS的文件系统,当客户端顺利通过nfsd登录NFS服务器后,在使用NFS服务所提供的磁盘前,还必须通过目录使用权限的验证,它会读取NFS的配置文件/etc/exports(初始文件为空)来对比客户端权限
    portmap:主要功能是进行端口映射工作
    idmap:进程实现用户映射和压缩

    Q: NFS 特点有哪里?

    • (1) 方便多台服务器之间的文件共享

    • (2) 搭建使用简单

    • (3) 可进行密码认证以及Kerberos认证

    Q:NFS 应用场景

    • (1) 比如Kubernetes中多台主机共享存储资源;

    NFS 版本说明

    • (1) NFSv2 and NFSv3

    # NFSv3同时支持TCP和UDP传输层协议# NFSv3使用大量辅助协议通过portmap/rpcbind获取rpc.mounted监听端口,再进行身份验证其次验证通过后nfs客户端才能与rpc.nfsd建立联系并访问共享
    Example for NFSv2 and NFSv3:# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)mount -t nfs 11.11.165.115:/data /tmp/data -o proto=tcp -o nolock
    • (2) NFSv4:

    Example for NFSv4:# /srv/nfs4        gss/krb5(rw,sync,fsid=0,crossmnt,no_subtree_check)# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)# 客户端挂载过程需要通过mount –t nfs4指定NFS版本为4,默认采用nfsv3。mount -t nfs4 192.168.78.1:/data  /tmp/data

    NFSv4和NFSv3的差别如下:

    • (1) NFSv4设计成了一种有状态的协议,自身实现了文件锁功能和获取文件系统根节点功能,不需要NLM和MOUNT协议协助了。

    • (2) NFSv4增加了安全性,支持RPCSEC-GSS身份认证。

    • (3) NFSv4只提供了两个请求NULL和COMPOUND,所有的操作都整合进了COMPOUND中,客户端可以根据实际请求将多个操作封装到一个COMPOUND请求中,增加了灵活性。

    • (4) NFSv4文件系统的命令空间发生了变化,服务器端必须设置一个根文件系统(fsid=0),其他文件系统挂载在根文件系统上导出。客户端需要使用“nfs server ip:/”挂载伪文件系统,伪文件系统一般使用RO方式共享,其他共享可以通过mount –bind选项在伪文件系统目录下挂载;

    • (5)NFSv4支持delegation。由于多个客户端可以挂载同一个文件系统,为了保持文件同步,NFSv3中客户端需要经常向服务器发起请求,请求文件属性信息,判断其他客户端是否修改了文件。如果文件系统是只读的,或者客户端对文件的修改不频繁,频繁向服务器请求文件属性信息会降低系统性能。NFSv4可以依靠delegation实现文件同步。当客户端A打开一个文件时,服务器会分配给客户端A一个delegation。只要客户端A具有delegation,就可以认为与服务器保持了一致。如果另外一个客户端B访问同一个文件,则服务器会暂缓客户端B的访问请求,向客户端A发送RECALL请求。当客户端A接收到RECALL请求时将本地缓存刷新到服务器中,然后将delegation返回服务器,这时服务器开始处理客户端B的请求。

    • (6) NFSv4修改了文件属性的表示方法。由于NFS是Sun开发的一套文件系统,设计之出NFS文件属性参考了UNIX中的文件属性,可能Windows中不具备某些属性,因此NFS对操作系统的兼容性不太好。NFSv4将文件属性划分成了三类:
      * Mandatory Attributes: 这是文件的基本属性,所有的操作系统必须支持这些属性。
      * Recommended Attributes: 这是NFS建议的属性,如果可能操作系统尽量实现这些属性。
      * Named Attributes: 这是操作系统可以自己实现的一些文件属性。

    • (7)服务器端拷贝:如果客户需要从一个NFS服务器拷贝数据到另外一个NFS服务器,nfsv4可以让两台NFS服务器之间直接拷贝数据,不需要经过客户端。

    • (8)资源预留和回收:NFSv4为虚拟分配提供的新特性。随着存储虚拟分配功能的普及使用,nfsv4可以为预留固定大小的存储空间;同样在文件系统上删除文件后,也能够在存储上面释放相应空间。

    • (9)国际化支持:NFSv4文件名、目录、链接、用户与组可以使用 UTF-8字符集,UTF-8兼容ASCII码,使得NFSv4支持更多语言。

    • (10)RPC合并调用:NFSv4允许将多个请求合并为一个rpc引用,在NFSv3每个请求对应一个rpc调用。WAN环境中,NFSv4合并rpc调用可以显著降低延迟。

    • (11)安全性:NFSv4用户验证采用“用户名+域名”的模式,与Windows AD验证方式类似,NFSv4强制使用Kerberos验证方式。(Kerberos与Windows AD都遵循相同RFC1510标准),这样方便windows和*nix环境混合部署。

    • (12)pNFS并行NFS文件系统,元数据服务器负责用户请求调度、数据服务器负责客户请求处理。pNFS需要NFS服务器和客户端协同支持,pNFS架构示意图如下:8c9f55c188930633640b70fc6bf019ec.png

    NFS 服务协议
    描述:#对于不同的网络情况,有针对地选择 UDP 或 TCP 传输协议。传输协议可以自动选择,也可以手动设置。

    # 一般情况下,使用 TCP 的 NFS 比较稳定,使用 UDP 的 NFS 速度较快。
    # 在机器较少,网络状况较好的情况下,使用 UDP 协议能带来较好的性能。
    # 当机器较多,网络情况复杂时,推荐使用 TCP 协议(V2 只支持 UDP 协议)。
    # 在局域网中使用 UDP 协议较好,因为局域网有比较稳定的网络保证,使用 UDP 可以带来更好的性能。
    # 在广域网中推荐使用 TCP 协议,TCP 协议能让 NFS 在复杂的网络环境中保持最好的传输稳定性。

    客户端连接NFS服务的过程:

    • 1.客户端首先向NFS服务所在的服务器的RPC服务发起请求RPC服务的端口固定为 111

    $rpcinfo -p 192.168.1.216#    program vers proto   port  service#     100000    4   tcp    111  portmapper#     100003    3   tcp   2049  nfs#     100003    4   tcp   2049  nfs#     100227    3   tcp   2049  nfs_acl#     100003    3   udp   2049  nfs#     100227    3   udp   2049  nfs_acl
    • 2.RPC服务在接收到客户端的请求之后,找到注册的NFS服务所对应的端口号,并将端口号发送给客户端例如:

    tcp   0   0 192.168.1.216:2049  192.168.1.216:885    ESTABLISHED off (0.00/0/0)
    • 3.客户端根据获取到NFS端口号进行连接;


    0x01 NFS安装配置

    (1) CentOS 系统

    测试环境:CentOS Linux release 7.8.2003 (Core)NFS server端配置

    # 1.检查服务器是否安装了nfs-util和rpcbind两个包$rpm -qa | grep nfs#nfs-utils:NFS服务的全程序,包括rpc.nfsd、rpc.mountd这两个daemons和相关文档说明,以及执行命令文件等。
    nfs-utils-1.2.3-54.el6.x86_64
    nfs-utils-lib-1.1.5-9.el6.x86_64$rpm -qa | grep rpcbind#rpcbind:Centos.x下面RPC的主程序。NFS可视为一个rpc程序,在互动任何一个RPC程序之前,需要做好端口和功能的对应映射工作,这个映射工作就是由RPCBIND服务来完成的。因此,在提供NFS服务之前必须先启动RPCBIND服务。
    rpcbind-0.2.0-11.el6.x86_64# 2.如果没安装进行安装上述两个包即可$yum install –y rpcbind nfs-utils# 正在安装:# nfs-utils x86_64 1:1.3.0-0.66.el7_8 updates 412 k# rpcbind x86_64 0.2.0-49.el7 base 60 k# 为依赖而安装:# gssproxy x86_64 0.7.0-28.el7 base 110 k# keyutils x86_64 1.5.8-3.el7 base 54 k# libbasicobjects x86_64 0.1.1-32.el7 base 26 k# libcollection x86_64 0.7.0-32.el7 base 42 k# libevent x86_64 2.0.21-4.el7 base 214 k# libini_config x86_64 1.3.1-32.el7 base 64 k# libnfsidmap x86_64 0.25-19.el7 base 50 k# libpath_utils x86_64 0.2.1-32.el7 base 28 k# libref_array x86_64 0.1.5-32.el7 base 27 k# libtirpc x86_64 0.2.4-0.16.el7 base 89 k# libverto-libevent x86_64 0.2.5-4.el7 base 8.9 k# quota x86_64 1:4.01-19.el7 base 179 k# quota-nls noarch 1:4.01-19.el7 base 90 k# tcp_wrappers x86_64 7.6-77.el7 base 78 k# 3.设置开机启动
    systemctl enable rpcbind nfs# Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.# /etc/init.d/rpcbind start # deprecated# /etc/init.d/nfs start # deprecated# Starting NFS services: [ OK ]# Starting NFS quotas: [ OK ]# Starting NFS mountd: [ OK ]# Starting NFS daemon: [ OK ]# Starting RPC idmapd: [ OK ]# 4.设置共享目录以及读写权限可以添加多台主机# 创卷NFS共享目录mkdir -p /nfs/{data,share,backdata,upload,demo}# 共享目录所属者与组设置chown -R nfsnobody.nfsnobody /nfs/share$vi /etc/exports
    /nfs/data 192.168.1.0/255.255.255.0(rw,sync,root_squash,anonuid=500,anongid=500,insecure)
    /nfs/share 192.168.8.0/24(rw,sync)
    /nfs/backdata 192.168.8.7(rw) 192.168.8.8(ro)
    /nfs/upload 192.168.8.0/24(rw,all_squash,anonuid=1001,anongid=1001)
    /nfs/demo 192.168.8.0/24(ro) *(ro,all_squash)# 5.nfs server服务开启# 开启前查看rpc信息$rpcinfo -p# program vers proto port service# 100000 4 tcp 111 portmapper# 100000 3 tcp 111 portmapper# 100000 2 tcp 111 portmapper# 100000 4 udp 111 portmapper# 100000 3 udp 111 portmapper# 100000 2 udp 111 portmapper$systemctl start rpcbind$systemctl start nfs# 确认NFS服务器启动成功(只贴入新增部分)$rpcinfo -p# 100024 1 udp 39651 status# 100024 1 tcp 40171 status# 100005 1 udp 20048 mountd# 100005 1 tcp 20048 mountd# 100005 2 udp 20048 mountd# 100005 2 tcp 20048 mountd# 100005 3 udp 20048 mountd# 100005 3 tcp 20048 mountd# 100003 3 tcp 2049 nfs# 100003 4 tcp 2049 nfs# 100227 3 tcp 2049 nfs_acl# 100003 3 udp 2049 nfs# 100227 3 udp 2049 nfs_acl# 100021 1 udp 38221 nlockmgr# 100021 3 udp 38221 nlockmgr# 100021 4 udp 38221 nlockmgr# 100021 1 tcp 45789 nlockmgr# 100021 3 tcp 45789 nlockmgr# 100021 4 tcp 45789 nlockmgr# 6.修改配置文件后立即生效/etc/exports
    exportfs -av# 7.CentOS7.8防火墙相关配置(正式环境请看下面的安全配置)
    测试设置如下# firewall-cmd --permanent --zone=public --add-service=nfs# firewall-cmd --permanent --zone=public --add-service=mountd# firewall-cmd --permanent --zone=public --add-service=rpc-bind# firewall-cmd --reload# 8.查看nfs共享目录信息$showmount -e
    Export list for k8s-yum-server:
    /nfs/share *

    Client 端配置
    描述:客户端主要针对Linux与Windows等环境下进行相应的配置;

    • Linux :使用linux连接到nfs服务器的共享目录

    # (1) NFS客户端安装
    yum install nfs-utils -y# (2) 使用mount命令直接挂载mkdir -p /mnt/nfs/share nfsmount -t nfs -o sync,tcp,noatime,rsize=1024,wsize=1024 EXPORT_MACHINE:/EXPORTED_DIR /DIRmount –t nfs 10.10.107.201:/data /mnt/nfs/share# (3) 方式将挂载配置写入到/etc/fstab中
    10.10.107.201:/nfs/share /mnt/nfs/share nfs defaults 0 0mount -a # 重新挂载所有设备# (4) 查看客户端挂载信息df -h | grep "nfs"
    10.10.107.201:/nfs/share 46G 6.8G 39G 16% /mnt/nfs/share# (5) Linux/windows相同取消挂载使用umount /mnt
    • Windows: 可以直接添加Window功能:

    # (1) 建立一个777的共享目录(注意权限貌似windwos上必须要x权限)
    $ chmod 777 /data/ #方式1
    $ chmod o+w /data/ #方式2# (2)使用windows连接linux上面的NFS服务进行共享数据:
    telnet 192.168.1.169 111
    telnet 192.168.1.169 2049# (3)windows功能中安装NFS客户户端,安装完成后会有mount命令mount #查看挂载情况mount -h #挂载帮助# (4) 查看nfs挂载的目录(windows与linux相同)
    showmount -e 10.10.107.21 #显示指定NFS服务器上的共享目录列表(或者叫输出列表)# 导出列表在 10.10.107.221:# /nfs/share 10.10.107.0/255.255.255.0# (5)查看已被挂载的客户端信息[root@Security-221 data]# showmount -a
    All mount points on Security-221:
    10.10.107.112:/data# (6) 挂载nfs目录:mount \\NFS的IP地址或者主机名\nfs目录名 挂载点mount \\10.10.107.221\data x:
    x: 现已成功连接到 \\10.10.107.221\data
    命令已成功完成。# (7) 取消挂载:umount 挂载目录umount x:
    正在断开 x: \\10.10.107.221\data
    命令已成功完成。

    c786abaeb76687ff8839b316e3a564ee.png

    从Windows中实现文件上传的NFS中(重点:注意事项):

    • 方式1:就是将共享文件的权限设置为777,但是这样是极不安全的17648367c88e295019098c5f8ebe6fa4.png

    • 方式2:修改win7对nfs分区只读属性
      Win7 NFS客户端使用mount命令挂载NFS服务之后,文件系统对Win7只读,无法写入文件,无法新建文件夹,此时使用mount命令可以查看到如下状态:

    本地    远程                                 属性
    -------------------------------------------------------------------------------
    x: \\10.10.107.221\data UID=-2, GID=-2
    rsize=32768, wsize=32768
    mount=soft, timeout=1.6
    retry=1, locking=no
    fileaccess=755, lang=GB2312-80
    casesensitive=no
    sec=sys#UID=-2由于在存储设备上共享出来的NFS文件系统归属于root权限,并且无法修改该所属用户,而Windows通过UID=-2的用户去写,肯定写不进去。
    解决办法: 让Win7在挂载NFS的时候将UID和GID改成0即可
    打开注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default
    增加两项:AnonymousUid,AnonymousGid

    9aa91e0735919aaefdbf3a94df2958a3.png

    (2) Ubuntu 系统

    测试环境:

    cat /etc/lsb-release
    DISTRIB_ID=Ubuntu
    DISTRIB_RELEASE=20.04
    DISTRIB_CODENAME=focal
    DISTRIB_DESCRIPTION="Ubuntu 20.04.1 LTS"

    NFS Server/Client
    适用系统:Debian/Ubuntu

    # Step1.服务端、客户端安装# - Install Required Packages(Server)$apt-get update$apt-get install nfs-kernel-server rpcbind# - Client Side SetUp (Client端)$apt-get install nfs-common rpcbind# Step2.Configure NFS privilege#配置文件 修改:$nano /etc/default/rpcbind
    OPTIONS=""#设置允许连接的ipnano /etc/hosts.allow
    portmap: 192.168.1.0/24 #Example Allow 192.168.1.0/24 to be Accessed on Network#Configure idmapd$nano /etc/default/nfs-common
    NEED_IDMAPD=YES #插入$nano /etc/idmapd.conf[General]
    Verbosity = 0
    Pipefs-Directory = /var/lib/nfs/rpc_pipefs
    Domain = localdomain[Mapping]
    Nobody-User = nobody
    Nobody-Group = nogroup$nano /etc/exports
    /nfs/share 192.168.1.0/255.255.255.0(rw,no_root_squash,no_subtree_check,crossmnt,fsid=0)# Step3、配置共享目录mkdir -p /nfs/share# Step4、启动RPC服务于nfs共享服务
    systemctl enable rpcbind nfs
    /etc/init.d/nfs-kernel-server start
    /etc/init.d/rpcbind star# systemctl start rpcbind nfs# 5.客户端挂载情况# NFS默认是用UDP协议,换成TCP协议挂载即可(网络不稳定)情况下mount -t nfs 11.11.165.115:/tmp/test0920 /data -o proto=tcp -o nolock$mount -l
    10.10.107.201:/nfs/share on /mnt/nfs/share type nfs4 (rw,relatime,vers=4.2,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.20.172.241,local_lock=none,addr=10.10.107.201)# 6.卸载挂载点umount /nfs/share# 如果卸载不掉可以强制卸载挂载点fuser -km /nfs/share 先使用这条命令

    0x02 NFS配置介绍

    描述:在进行使用NFS我们需要对其进行配置,以下是是其主要的软件结构;

    NFS主要软件结构

    • /etc/exports NFS的主要配置文件,在该文件中定义NFS输出的目录、权限等属性

    • /usr/sbin/exportfs 管理NFS共享资源的命令,在NFS的server端使用

    • /usr/sbin/showmount 查询NFS共享资源的命令,在client端使用

    • /var/lib/nfs/etab NFS的日志文件,记录了NFS共享出来的目录的完整权限设置值

    • /var/lib/nfs/xtab NFS连接信息的日志文件,记录了曾经链接到此NFS服务器的相关客户端的数据

    exportfs 命令 - 维护导出的NFS文件系统的表
    语法参数

    # 语法
    exportfs [-aruv]
    /usr/sbin/exportfs [-avi] [-o options,..] [client:/path ..]
    /usr/sbin/exportfs -r [-v]
    /usr/sbin/exportfs [-av] -u [client:/path ..]
    /usr/sbin/exportfs [-v]
    /usr/sbin/exportfs -f
    /usr/sbin/exportfs -s# 参数
    -a:全部挂载或卸载
    -r:重新挂载/etc/exports配置文件中的信息
    -u:卸载某一目录
    -v:将内容显示输出# 常用实例# 将添加/etc/exports中列出的所有目录和/etc/exports.下的/etc/exports.d 到/var/lib/nfs/etab
    exportfs -av# 修改配置文件后重新加载
    exportfs -r# 将/usr/tmp目录导出到django主机上,允许来自客户端的不安全的文件锁定请求:
    exportfs -o insecure_locks django:/usr/tmp# 取消导出/usr/tmp目录:
    exportfs -u django:/usr/tmp# 取消导出/etc/exports和/etc/exports.d下面文件中列出的所有导出
    exportfs -au# 将/usr/tmp目录导出到IPv6链接-本地客户端:
    exportfs [fe80::]/64:/usr/tmp

    showmount 命令 - 显示NFS服务器的挂载信息
    描述:showmount查询远程主机上的mount守护进程,以获取关于该机器上NFS服务器状态的信息。由于没有选项showmount列出了从该主机装载的nfs共享目录。showmount的输出被设计成好像是通过sort -u处理的。

    基础语法:

    # 语法
    showmount [-ae] [hostname|IP]
    showmount [ -adehv ] [ --all ] [ --directories ] [ --exports ] [ --help ] [ --version ] [ host ]# 参数
    -a,--all #以host:dir格式列出客户端主机名或IP地址和挂载的目录(一定可靠)
    -d,--directories #仅列出某些客户端挂载的目录。
    -e #显示指定NFS服务器的共享资源情况
    --no-headers #输出不带标题栏 Suppress the descriptive headings from the output.

    常用实例

    # 1.查看NFS共享资源的情况$showmount -e  # 默认本机$showmount -e [127.0.0.1|192.168.1.12]# Export list for WeiyiGeek:# /mnt/nfs/k8slog 192.168.1.218,192.168.1.217,192.168.1.216# /mnt/nfs/k8sapp 192.168.1.218,192.168.1.217,192.168.1.216# 2.仅列出某些客户端挂载的目录。$showmount -d# Directories on WeiyiGeek:# /mnt/nfs/k8sapp# /mnt/nfs/k8slog# 3.客户端挂载情况
    All mount points on WeiyiGeek:
    192.168.1.216:/mnt/nfs/k8sapp
    192.168.1.216:/mnt/nfs/k8slog
    192.168.1.218:/mnt/nfs/k8sapp
    192.168.1.218:/mnt/nfs/k8slog
    /etc/exports

    该配置文件中的格式: [客户端1(权限)] [客户端2(权限)]

    - 输出目录:指定共享的文件目录
    - 客户端:指定可以访问共享资源的客户端
    * 指定IP的方式:192.168.1.1
    * 指定网段的方式:192.168.1.0/24或者192.168.1.0/255.255.255.0
    * 指定主机名的方式:node1,但是这个主机名必须在记录在/etc/hosts文件内,需要能解析到对应的ip
    * 通配符的方式:*表示所有的主机,*.bsmart.cn主机名通配
    - 权限: 指该主机对nfs服务目录的相应权限(下面详解)

    Q:如果我们在启动NFS服务之后又修改了 exports 文件的话怎么办,是不是需要重新启动NFS服务才能使的这些配置生效?

    答案当然是否定的这样多麻烦我们有 exportfs 命令

    权限说明:

    # 帮助文档man exportfs# nosuid         # 选项是禁止 set-UID 程序# noexec         # 选项是禁止直接执行其中的二进制文件# 权限
    rw # 选项是指定权限读写
    ro # 选项是指定权限只读sync # 选项是指同步模式,内存中数据时时写入磁盘
    async # 选项是指不同步,把内存中数据定期写入磁盘中( 表示数据会先暂存于内存中,而非直接写入到硬盘中)
    root_squash # 选项是指定如果client以root用户连接上来的话,server端会将该用户转换为匿名用户进行访问。
    no_root_squash # 选项是指定客户端采用root连接将不转换成匿名用户进行访问
    all_squash # 选项是指定无论client用什么账户连接上来,都会被转换成匿名用户
    no_all_squash # 选项是指定无论client用什么账户连接上来,都不会被转换成匿名用户
    anonuid=<UID> # 选项是指定匿名访问用户的本地用户UID,默认为nfsnobody(65534)
    anongid=<GID> # 选项是指定匿名访问用户的本地用户组GID,默认为nfsnobody(65534)
    secure(默认) # 选项是指定限制客户端只能从小于1024的tcp/ip端口连接服务器
    insecure # 选项是指定允许客户端从大于1024的tcp/ip端口连接服务器
    wdelay(默认) # 选项是指定检查是否有相关的写操作,如果有则将这些写操作一起执行(提高效率)
    no_wdelay # 选项是指定若有写操作则立即执行,应与sync配合使用;
    subtree_check(默认) # 选项是指定若输出目录是一个子目录,则nfs服务器将检查其父目录的权限;
    no_subtree_check # 选项是指定即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,(提高效率);# 待补充
    hide
    nohide # 选项仅适用于NFSv2和NFSv3,当使用NFSv4时此选项不相关由于NFSv4从不隐藏下级文件系统。通常如果服务器导出两个文件系统,其中一个挂载在另一个上,然后客户端必须挂载显式地访问这两个文件系统。如果它只是挂载父节点,它将看到其他文件系统挂载位置的空目录。文件系统是“隐藏的”。在文件系统上设置nohide选项会使文件系统不被隐藏,并提供适当的autho‐rised客户端将能够从父文件系统移动到该文件系统而不注意更改。然而一些NFS客户端不能很好地处理这种情况,例如它是所有‐一个文件系统中的两个文件具有相同的inode编号。nohide选项目前仅对单个主机导出有效。它并不可靠使用网络组、子网或通配符导出。这个选项在某些情况下非常有用,但是应该谨慎使用,而且只能使用在确认客户系统能有效应对情况后
    crossmnt # 该选项与nohide类似但它使客户机能够访问所有文件系统挂载在标记为crossmnt的文件系统上;因此当子文件系统“B”挂载在父文件系统“a”上时,在“a”上设置crossmnt与在B上设置“nohide”具有相似的效果。如果之前设置过,nocrossmnt选项可以明确地禁用crossmnt
    nocrossmnt
    fsid=num|root|uuid #NFS需要能够标识它导出的每个文件系统,而通常它将为文件系统使用UUID(如果文件系统有这样的东西)或保存文件系统的设备的设备号(如果文件系统存储在设备上)。由于不是所有文件系统都存储在设备上也不是所有文件系统都有uuid所以需要制定该选项显示的告诉; 对于NFSv4有一个特殊的文件系统,它是所有导出的文件系统的根,使用fsid=root或fsid=0指定的两者的意思完全相同。# acl# no_pnfs# RPCSEC_GSS security 选项:您可以使用特殊的字符串“gss/krb5”,“gss/krb5i”,或“gss/krb5p”来限制访问客户端的rpcsec_gss安全,使用“sec=”导出选项:
    sec=sys #后面是一个以冒号分隔的安全样式列表,它限制了对使用这些样式的客户机的导出,可用的安全样式包含sys (the default--no crypto‐ graphic security), krb5 (authentication only), krb5i (integrity protection), and krb5p (privacy protection)
    /var/lib/nfs/etab

    描述:exports配置文件中都有默认权限配置可通过etab文件查看,该文件中完整的记录了NFS共享资源的所有配置;

    $cat /var/lib/nfs/etab
    /nfs/share *(rw,sync,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,no_root_squash,no_all_squash)

    0x03 NFS安全配置

    描述:在Linux系统中的文件都有访问权限,可以指定用户访问,那么我通过NFS访问文件权限是如何设定的呢?

    比如我再NFS server上有一个文件的属主与属组都是weiyigeek,那我再client端普通用户weiyi访问这个文件,可以做修改吗?再比如如果是使用root用户访问这个文件,可以做修改吗?

    NFS文件系统的权限访问的原则是:服务器端会以客户端的用户UID与GID等身份来尝试读取服务器端的文件系统

    以下是NFS是如何判断是否一个文件可写的步骤:

    • 客户端以user1这个账户访问NFS目录,实际是以client端的user1的UID以及GID进行访问的

    • NFS server收到客户端访问请求中的UID、GID,并根据这个UID在server端所在的服务器找到相应的用户,以该用户的权限进行访问

    • 如果找不到对应UID的用户,则NFS server端会将连接的身份转换为匿名用户的连接

    • 根据/etc/exports配置文件判断该目录是否有写入权限只有在满足以下条件客户端才可以写入NFS是共享目录:

      • 1、用户有写入权限

      • 2、exports设置为有写入权限

      • 3、文件具有写入权限

    根据上述步骤的话,可以想到一种情况,如果我client端是通过root账户连接的,那我是不是对所有的文件具有可读、可写权限;在exports文件中,设定权限的时候可以指定no_root_squash、root_squash、all_squash,这三个就是控制我client连接上来的用户,最终在server端会以哪个用户进行访问, 对应着共享目录的权限。

    Tips: nfs匿名用户nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

    NFS安全配置流程:

    • 1.限制Client访问限制

    ## 1. 修改 /etc/hosts.allow 和 /etc /hosts.deny 来限制客户机数量。
    $/etc/hosts.allow
    portmap: 192.168.0.0/255.255.255.0 : allow
    portmap: 140.116.44.125 : allow
    $/etc/hosts.deny
    portmap: ALL : deny## 2.设置哪些客户端可以访问共享目录(一定不能是 * 号 通配符)$vi /etc/exports
    /nfs/share 192.168.1.2(rw,no_root_squash) 192.168.1.3(rw,no_root_squash)## 3.防火墙访问限制(RPC 111/NFS 2049)使其除了NFS Client端可以看到共享资源外其它都不行;# 下面这种方式在正式环境是不行得(所有的IP都能够访问)# firewall-cmd --permanent --zone=public --add-service=nfs# firewall-cmd --permanent --zone=public --add-service=mountd# firewall-cmd --permanent --zone=public --add-service=rpc-bind# firewall-cmd --reload# 正确的做法
    firewall-cmd --add-rich-rule "rule family=ipv4 source address=192.168.1.2 service name='nfs' accept"
    firewall-cmd --add-rich-rule "rule family=ipv4 source address=192.168.1.2 service name='mountd' accept"
    firewall-cmd --add-rich-rule "rule family=ipv4 source address=192.168.1.2 service name='rpc-bind'accept"# 或者由于rpc和nfs除了使用111和2049端口号外还会部分端口号是动态的下面可能行不通# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=192.168.1.3 port port="111" protocol="tcp" accept'# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=192.168.1.3 port port="26-1024" protocol="tcp" accept'# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=192.168.1.3 port port="2049" protocol="tcp" accept'# 对于iptables的社指定ip开放所有端口-iptables方式配置
    iptables -A INPUT -s 192.168.1.2 -p all -j ACCEPTservice iptables save## 4.防火墙不关闭,开放指定端口号## 由于rpc和nfs除了使用111和2049端口号外,还会部分端口号是动态的,故需要先配置为静态端口$vim /etc/sysconfig/nfs #CentOS系统 末尾增加如下静态端口
    RQUOTAD_PORT=30001
    LOCKD_TCPPORT=30002
    LOCKD_UDPPORT=30002
    MOUNTD_PORT=30003
    STATD_PORT=30004# firewall方式配置开放端口111,2049,30001,30002,30003,30004
    firewall-cmd --zone=public --add-port=111/tcp --add-port=111/udp --add-port=2049/tcp --add-port=2049/udp --add-port=30001/tcp --add-port=30001/udp --add-port=30002/tcp --add-port=30002/udp --add-port=30003/tcp --add-port=30003/udp --add-port=30004/tcp --add-port=30004/udp --permanent
    firewall-cmd --reload# iptables方式配置开放端口111,2049,30001,30002,30003,30004
    iptables -I INPUT -s 192.168.1.101 -p tcp -m multiport --dports 111,2049,30001,30002,30003,30004 -m comment --comment "NFS服务" -j ACCEPTservice iptables save
    systemctl restart iptables.service
    • 2.共享的文件目录权限

    ## 1. 配置 nosuid 和 noexec# SUID (Set User ID) 或 SGID (Set Group ID) 程序可以让普通用户以超过自己权限来执行。很多 SUID/SGID 可执行程序是必须的,但也可能被一些恶意的本地用户利用,获取本不应有的权限。#尽量减少所有者是 root,或是在 root 组中却拥有 SUID/SGID 属性的文件。#如禁止 set-UID 程序与直接执行其中的二进制文件在 NFS 服务器上运行,可以在 /etc/exports 加入一行
    /www www.abc.com(rw, root_squash, nosuid, noexec)
    • 3.密码认证

    ## NFS V2 / V3 版本$useradd nfsuser -s /sbin/nologin  # 创建nfs认证用户passwd nfsuser$chown -R nfsuser:nfsuser /home/upload #建立的共享文件目录需要采用nfsuser共享用户权限$cat /etc/passwd|grep nfs          # 查看用户的uid与guid
    nfsuser:x:1001:1001::/home/nfsuser:/sbin/nologin$vi /etc/exports
    /home/upload 192.168.8.0/24(rw,all_squash,anonuid=1001,anongid=1001) #设置NFS配置文件## NFS V4 采用Gss/Kerberos进行认证(后续补充)
    /srv/nfs4 gss/krb5(rw,sync,fsid=0,crossmnt,no_subtree_check)
    mount.nfs4 192.168.1.2:/nfsdata /mnt/nfs #客户端

    0x04 入坑出坑

    问题1.当NFS服务器出现网络故障,造成NFS-Client使用df -h或其它命令一直卡着不动时,解决方法如下

    $umount -lf /data$df -h
    文件系统 容量 已用 可用 已用% 挂载点
    /dev/mapper/centos-root 20G 1.2G 18G 6% /
    devtmpfs 907M 0 907M 0% /dev
    tmpfs 918M 0 918M 0% /dev/shm
    tmpfs 918M 9.0M 910M 1% /run
    tmpfs 918M 0 918M 0% /sys/fs/cgroup
    /dev/sda1 497M 138M 359M 28% /boot
    tmpfs 184M 0 184M 0% /run/user/0

    Tips:/data请手动打,不要使用Tab键自动补全,否则又会卡死


    0x05 参考连接

    • Kerberos+LDAP+NFSv4 实现单点登录(中):https://blog.51cto.com/13752418/2443823

    展开全文
  • NFS协议,搭建Windows环境NFS服务,为Windows系统下的云主机提供共享访问服务。存储格式都有哪些?文件、块和对象是三种以不同的方式来保存、整理和呈现数据的存储格式。这些格式各有各的功能和限制。文件存储会以...
  • windows下搭建NFS服务器

    千次阅读 2019-11-03 09:39:55
    windows下搭建NFS服务器 在windows下,搭建NFS服务器最简单的方式就是下载一个NFS服务器软件,然后安装就可以了。 使用的NFS服务器软件:NFS Server 1.2.43。 下载地址1:官网:...
  • 作者:蒙洋,华清远见嵌入式学院讲师。  在ubuntu上默认没有安装NFS服务器,因此: ... PC机的windows下的网络连接地址:192.168.1.100,这个应该都会设置吧!  在VMware->Settings->Network Adapter->
  • windwos搭建NFS

    2022-05-05 14:35:24
    NFS简介 概述 1、概述 网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样 在Centos 7系统中...
  • 实验题目 NFS文件共享服务 一、实验目的 1.了解网络文件服务器NFS应用。 2.掌握Linux网络上的文件共享的配置及使用 二、实验环境(软件和硬件) VMware Workstation Pro和CentOS7 2.实训室电脑 三、实验内容及步骤...
  • NFS协议,搭建Windows环境NFS服务,为Windows系统下的云主机提供共享访问服务。存储格式都有哪些?文件、块和对象是三种以不同的方式来保存、整理和呈现数据的存储格式。这些格式各有各的功能和限制。文件存储会以...
  • 通过使用NFS协议,客户机可以像访问本地目录一样访问服务器的共享资源,对于大多数负载均衡集群来说,使用NFS协议来共享数据存储是比较常见的做法,NFS也是NAS存储设备必然支持的一种协议。 NFS服务的实现依赖于RPC...
  • 如何通过Windows Server 2008 R2建立NFS存储 在我们日常工作的某些实验中,会需要使用存储服务器。而硬件存储成本高,如StarWind之类的iSCSI软存储解决方案需要单独下载服务器端程序,且配置比较繁琐,令很多...
  • NFS服务(Windows 客户端+Linux 服务端)Windows 客户端挂载1.添加NFS服务2.进入CMD界面查看NFS添加是否成功。3.挂载远程文件目录至本地4.卸载挂载文件linux客户端挂载1.在客户端上安装rpc、nfs服务2.建立挂载到本地的...
  • Windows上面挂载NFS共享

    千次阅读 2019-07-01 10:08:30
    Windows上面挂载NFS共享 众所周知,nfs和smb是Linux服务器上的文件共享协议,smb使用的是samba协议和windows的文件共享使用的是一种协议,也就是说smb是跨平台的文件共享协议,而NFS个人认为是Linux系统或者类...
  • 首先说明家庭版的windows没有自带NFS服务模块,也就是买电脑送你的那套正版系统。 不是家庭版的朋友可以继续往下看。(亲测win10企业版和win7旗舰版都自带NFS功能,按照下面的步骤开启就可以了。) 首先在window...
  • windows上搭建NFS服务器

    千次阅读 2020-11-01 23:15:05
    在进行嵌入式开发的时候,我们常用的做法是搭建NFS服务器,然后使把文件系统、调试程序放在NFS服务器上,这样可以方便调试,以前都是在linux里面开启NFS服务器,今天来说下window里的nfs服务器–haneWin 一、软件...
  • vCenter6.7挂载Windows Server2016 NFS41存储
  • 1、在WINDOWS服务器中创建NFS SERVER首先,打开服务管理器,选择添加角色;...这样,在Windows Server 2008R2建立NFS服务,然后选择一个分区,新建一个文件夹,比如NFS;在文件夹上右键,属性,...
  • nfs server

    2017-09-24 13:14:44
    windows下,建立nfs服务器,嵌入式开发板可以通过挂载到相应的目录来与window之间传输文件。 方便稳定,亲测可用。
  • 如何通过WindowsServer2008R2建立NFS存储服务?通过WindowsServer2008R2,我们可以很容易地将其作为一台NFS存储服务器,得到一个NFS软存储,轻松解决某些环境下的问题。接下来以WindowsServer2008R2SP1企业版为例:...
  • 1. 在终端输入 sudo apt-get install portmap nfs-common nfs-kernel-server 2.建立客户机访问目录 sudo mkdir /exports/yourpath 3.编辑exports文件,sudo vim /etc/exports ,在文件中添加 /exports/yourpath ...
  • Win7除了旗舰版和企业版其他版本没有NFS客户端,windows2000,windowsXP,windows2003有个sfu(windows services for unix)工具貌似比较强大,由于一直用win7而且这个软件不支持win7所以不做描述。win7自带客户端的...
  • win10系统nfs服务器搭建

    千次阅读 2020-11-10 14:53:40
    说明win10系统下如何搭建nfs服务器进行嵌入式linux系统下的开发

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,270
精华内容 10,508
关键字:

windows建立nfs