nfs 订阅
网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。 [1] 展开全文
网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。 [1]
信息
外文名
Network File System
简    称
NFS
拼    音
wangluo wenjian xitong
中文名
网络文件系统
性    质
UNIX表示层协议
相关机制
远程过程调用RPC机制
网络文件系统定义
NFS是基于UDP/IP协议的应用,其实现主要是采用远程过程调用RPC机制,RPC提供了一组与机器、操作系统以及低层传送协议无关的存取远程文件的操作。RPC采用了XDR的支持。XDR是一种与机器无关的数据描述编码的协议,他以独立与任意机器体系结构的格式对网上传送的数据进行编码和解码,支持在异构系统之间数据的传送。 [2] 
收起全文
精华内容
下载资源
问答
  • NFS

    2021-01-09 10:23:25
    NFS 1.nfs简介 1.1nfs特点 NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源 本地NFS的客户端应用可以透明(用户看不到是本地还是远程...
  • nfs

    千次阅读 2011-03-03 01:20:00
    nfs

    第一个问题是minicom出现WARNING: configuration file not found, using defaults 
    Device /dev/modem access failed的问题 
    配置转其他论坛的,如下: 
    linux下minicom的设置。 
    在root用户下输入minicom。 
    1.如果出现:minicom: WARNING: configuration file not found, using defaults 
    Device /dev/modem access failed: 没有那个文件或目录. 
    表示要设置minicom配置文件。 
    输入:minicom -s 
    此时,显示: 
    ………………………………[configuration]…………………………………… 
    …………………… Filename and paths ………………………… 
    …………………… File transfer and protocols ………………………… 
    …………………… Serial port setup ………………………… 
    …………………… Modem and dialing ………………………… 
    …………………… Screen and keyboard ………………………… 
    …………………… Save setup as df1 ………………………… 
    …………………… Save setup as…… ………………………… 
    …………………… Exit ………………………… 
    …………………… Exit from minicom ………………………… 
    …………………………………………………………………………………… 
    2. 使用down箭头选择serial port setup,出现具体各选项的配置: 
    A — Serial Device : /dev/ttyS0 
    B — lockfile Location : /var/lock 
    C — Calling Program : 
    D — Callout Program: 
    E — Bps/par/Bits : 115200 8N1 
    F — Hardware Flow Control : NO 
    G — Software Flow Control : NO 
    Change with setting? 
    将选项A的值设置为/dev/ttyS0 表示是串口1。 
    如果需要修改选项A的值,在Change with setting?选项后输入A则光标转移到A选项后, 
    可以对A选项的值进行修改。修改完,按回车键返回 
    3. 设置Modem and dialing 
    使用方向箭头选中modem and dialing 项,则修改modem and dialing 选项中的配置项。 
    需要修改的是去掉A — initing string ……:,B — Reset string ……: 
    K — Hang-up string ……三个配置项。 
    4. 选择Save as df1。 
    选择Save as df1选项将修改后的配置信息进行保存为默认的配置选项。 
    5. Exit from minicom 。 
    选择Exit from minicom 选项从配置菜单返回到命令行。 
    6. 重新启动Minicom。 
    minicom就向windows下的超级终端 
    http://www.91linux.com/html/article/linux_soft/20090205/15645.html 
    第2个问题是nfs的传输速度慢 
    如果按mount -o nolock 192.168.1.220(假设为宿主机ip):/mnt/nfs /mnt/nfs_t 来mount ,传输速度可能很慢, 只有几K到几十K左右,所以想要获得较快的速度就要对nfs进行优化。 
    也是转过来的,如下:

    nfs优化篇

    1.设置块大小 
    mount命令的risize和wsize指定了server端和client端的传输的块大 小。如果没有指定,那么,系统根据nfs的版本来设置缺省的risize和wsize大小。大多数情况是4K(4096bytes),对于nfs v2,最大是8K,对于v3,在server端设置risize和wsize的限制,最大块大小在kernel的常量 NFSSVC_MAXBLKSIZE,该常量在usr/src/linux2.4/include/linux/nfsd/const.h.所有的2.4 的的client都支持最大32K的传输块。系统缺省的块可能会太大或者太小,这主要取决于你的kernel和你的网卡,太大或者太小都有可能导致nfs 速度很慢。具体的可以使用Bonnie,Bonnie ,iozone等benchmark来测试不同risize和wsize下nfs的速度。当然,也可以使用dd来测试。 
    #time dd if=/dev/zero of=/testfs/testfile bs=8k count=1024这是来测试nfs写 
    #time dd if=/testfs/testfile of=/dev/null bs=8k 这是测试nfs读 
    测试时文件的大小至少时系统RAM的两倍,每次测试都使用umount 和mount对/testfs进行挂载,通过比较不同的块大小,得到优化的块大小。 
    2.网络传输包的大小 
    网 络在包传输过程,对包要进行分组,过大或者过小都不能很好的利用网络的带宽,所以对网络要进行测试和调优。可以使用ping -s 2048 -f hostname进行 ping,尝试不同的package size,这样可以看到包的丢失情况。同时,可以使用nfsstat -o net 测试nfs使用udp传输时丢包的多少。 
    因为统计不能清零,所以要先运行此命令记住该值,然后可以再次运行统计。如果,经过上面的统计丢包很多。那么可以看看网络传输包的大小。使用下面的命令: 
    #tracepath node1/端口号 
    #ifconfig eth0 
    比较网卡的mtu和刚刚的pmtu,使用#ifconfig eth0 mtu 16436设置网卡的mtu和测试的一致。 
    当 然如果risize和wsize比mtu的值大,那么的话,server端的包传到client端就要进行重组,这是要消耗client端的cpu资源。 此外,包重组可能导致网络的不可信和丢包,任何的丢包都会是的rpc请求重新传输,rpc请求的重传有会导致超时,严重降低nfs的性能。可以通过查看 /proc/sys/net/ipv4/ipfrag_high_thresh和/proc/sys/net/ipv4 /ipfrag_low_thresh了解系统可以处理的包的数目,如果网络包到达了ipfrag_high_thresh,那么系统就会开始丢包,直到 包的数目到达ipfrag_low_thresh。 
    3.nfs挂载的优化 
    timeo:如果超时,客户端等待的时间,以十分之一秒计算。 
    retrans:超时尝试的次数。 
    bg:后台挂载,很有用 
    hard:如果server端没有响应,那么客户端一直尝试挂载。 
    wsize:写块大小 
    rsize:读块大小 
    intr:可以中断不成功的挂载 
    noatime:不更新文件的inode访问时间,可以提高速度。 
    async:异步读写。 
    4.nfsd的个数 
    缺省的系统在启动时,有8个nfsd进程。 
    #ps -efl|grep nfsd 
    通过查看/proc/net/rpc/nfsd文件的th行,第一个是nfsd的个数,后十个是线程是用的时间数,第二个到第四个值如果很大,那么就需要增加nfsd的个数。 
    具体如下: 
    #vi /etc/init.d/nfs 
    找到RPCNFSDCOUNT,修改该值,一般和client端数目一致。 
    然后,重启服务。 
    #service nfs restart 
    #mount -a 
    5.nfsd的队列长度 
    对 于8个nfsd进程,系统的nfsd队列长度是64k大小,如果是多于8个,就要相应的增加相应的队列大小,具体的在/proc/sys/net /core/【rw】mem_default和/proc/sys/net/core/【rw】mem_max。队列的长度最好是每一个nfsd有8k的 大小。这样,server端就可以对client的请求作排队处理。如果要永久更改此值 
    #vi /etc/sysctl.conf 
    加入 
    net.core.【rw】mem_max=数目 
    net.core.【rw】mem_default=数目 
    #service nfs restart

    NFS:网络文件系统 
    (NFS:Network File System)

    网络文件系统(NFS),起初由 Sun 微系统公司进行开发,后经 IETF 扩展,现在能够支持在不同类型的系统之间通过网络进行文件共享。换言之,NFS 可用于不同类型计算机、操作系统、网络架构和传输协议运行环境中的网络文件远程访问和共享。

    NFS 使用客户端/服务器架构,并由一个客户端程序和服务器程序组成。服务器程序向其它计算机提供对文件系统的访问,其过程就叫做“输出”。NFS 客户端程序对共享文件系统进行访问时,把它们从 NFS 服务器中“输送”出来。NFS 传输协议用于服务器和客户机之间文件访问和共享的通信,该协议还支持服务器通过输出控制向一组受到限制的客户计算机分配远程访问特权。

    NFS 版本2,是 NFS 最早被广泛应用的版本,起初完全运行于 UDP 协议之上,并且不保留状态。几大厂商扩展了 NSF 版本2,使之支持 TCP 传输。NFS 版本3整合了 TCP 传输。使用了 TCP 传输后,使得广域网中的 NFS 应用更为灵活。在继承了以前版本优点的基础之上,目前,NFS 版本4在功能上有如下的改进:

    • 提高了经由 Internet 进行访问的性能。本协议能够很容易地通过防火墙;在等待时间较长时带宽较小的情况下,其性能优越;且每台服务器所连接用户的数目可扩展到相当大的数目。
    • 将 许可条款内置到协议之中,安全性得到了极大的加强。在对远程过程调用(RPC) PRCSEC_GSB 协议的支持上,本协议则建立在 ONCRPC 工作组的工作之上。另外,NFS 版本4支持客户机与服务器之间的安全对话,并要求客户机和服务器支持最简单的安全计划。
    • 支持扩展协议。本协议接受所支持协议的标准扩展,而不是打折的向后兼容。

    NFS 与 UNIX 系统息息相关,尽管它可以用于任何平台中,如 Macintosh 和 Microsoft Windows 操作系统。服务器消息块协议(SMB)和国际互联网普通文件系统(CIFS)是 NFS 的类似协议,在 Microsoft Windows 平台中,拥有着对等的网络文件系统应用。

    http://www.diybl.com/course/6_system/linux/linuxjq/2007211/17540.html

    其实就是改为mount 192.168.1.220:/mnt/nfs /mnt/nfs_t -o nolock, rsize=1024,wsize=1024,timeo=15 就能获得较快的传输速度。。。

     

    --------------============================

    http://hi.baidu.com/musickog/blog/item/9c249deab0f37133b90e2d52.html

    今天,做了一下嵌入式应用程序的实验

    在你的宿主机上交叉编译的应用程序如何在嵌入式上运行呢

    在这里我选择了用网络来挂载nfs文件系统.

    我的实验环境:

    宿主机是虚拟机centos5.4

    目标机是mini2440上的linux

    这里我用交叉网线来连接

    一,要在虚拟机安装nfs服务器

    (1)需要安装下面两个文件
    # rpm -ivh nfs-utils-1.0.1-2.9.i386.rpm portmap-4.0-54.i386.rpm
    portmap监控程序只是定向RPC通信数据流,使NFS客户机找到从NFS服务器共享的目录。

    (2)配置nfs,设置输出的共享目录

    [root@localhost mnt]# vi /etc/exports 
    这里我只是简单的设置

    /home/share *(rw,sync)

    然后,生效配置文件

    [root@localhost mnt]# exportfs -rv
    exporting *:/home/share

    起动nfs

    [root@localhost mnt]# /etc/init.d/portmap restart
    停止 portmap:                                             [确定]
    启动 portmap:                                             [确定]
    [root@localhost mnt]# /etc/init.d/nfs restart
    关闭 NFS mountd:                                          [确定]
    关闭 NFS 守护进程:                                        [确定]
    关闭 NFS quotas:                                          [确定]
    关闭 NFS 服务:                                            [确定]
    启动 NFS 服务:                                            [确定]
    关掉 NFS 配额:                                            [确定]
    启动 NFS 守护进程:                                        [确定]
    启动 NFS mountd:                                          [确定]
    [root@localhost mnt]# 

    注意起动顺序不可乱,先起动portmap再起动nfs

    二,实现虚拟机与开发板连接

    1,设置虚拟机与本地机的网络模式为桥接

    2,开发板与本地机的连接用交叉网线

    3,设置本地机,虚拟机,开发板的网络在同一个网段中

    在这里我设置为

    本地机:10.6.173.224

    虚拟机:10.6.173.225

    开发板:10.6.173.226

    ping一下,能通,嗯,成功在向你招手

    三,从超级终端里连接开发板,然后挂载nfs文件系统:

    # mount -o nolock,rw -t nfs 10.6.173.225:/home/share /mnt/nfs

    要加参数:-o nolock(一开始,我没加,就挂载不了,老是提示超时)

    然后,上网找了一些资料:

    下面附加一篇别人的总结:
    来源:http://tensing.blog.sohu.com/77399040.htm

    1 建立NFS开发环境 
    嵌入式linux的NFS开发环境包含着两个方面:一是linux server端的NFS Server支持;二是target board的NFS Client支持。 
    1.1 linux server端 
    1.1.1 以root的身份登录,编译共享目录的配置文件exports,指定共享目录及其权限。 
    #vi /etc/exports 
    在该文件中添加: 
    /home/lqm(共享目录) 192.168.1.*(rw,sync,no_root_squash) 
    添加的内容表示允许IP范围在192.168.1.*的计算机以读写的权限来访问共享目录/home/lqm。 
    【注:参数说明如下: 
    rw---读/写权限。如果设定只读权限,则设为ro。但是一般情况下,为了方便交互,要设置为rw。 
    sync--数据同步写入内存和硬盘。 
    no_root_squash--此参数用来要求服务器允许远程系统以它自己的root特权存取该目录。就是说,如果用户是root,那么他就对这个共享目录有root的权限。很明显,该参数授予了target board很大的权利。安全性是首先要考虑的,可以采取一定的保护机制,在下面会讲一下保护机制。如果使用默认的root_squash,target board自己的根文件系统可能有很多无法写入,所以运行会受到极大的限制。在安全性有所保障的前提下,推荐使用no_root_squash参数。】
    1.1.2 起用保护机制 
    可以通过设定/etc/hosts.deny和/etc/hosts.allow文件来限制网络服务的存取权限。 
    ***/etc/hosts.deny*** 
    portmap:ALL 
    lockd:ALL 
    mountd:ALL 
    rquotad:ALL 
    statd:ALL 
    ***/etc/hosts.allow*** 
    portmap:192.168.1.100 
    lockd:192.168.1.100 
    mountd:192.168.1.100 
    rquotad:192.168.1.100 
    statd:192.168.1.100 
    同时使用这两个文件就会使得只有ip为192.168.1.100的机器使用NFS服务。你的target board的ip地址设定为192.168.1.100,这样就可以了。 
    1.1.3 启动 
    首先要启动portmapper(端口映射)服务,这是NFS本身需要的。 
    #/etc/init.d/portmap start 
    然后启动NFS Server。此时NFS会激活守护进程,然后开始监听客户端的请求。 
    #/etc/init.d/nfs start 
    NFS Server启动后,还要检查一下linux server的iptables等,确定没有屏蔽NFS使用的端口和允许通信的主机。 
    可以首先在 linux server上面进行NFS的回环测设。修改/etc/hosts.allow,把ip改为linux server的ip地址,然后在linux server上执行命令: 
    #mount -t nfs <your-server-ip>:/home/lqm /mnt 
    #ls /mnt 
    如果NFS Server正常工作,应该在/mnt下面看到共享目录/home/lqm的内容。 
    1.2 target board端的client 
    1.2.1 嵌入式linux内核应该支持NFS客户端。 
    内核配置时,选择如下: 
    File system--> Network File Systems--> 
    选中NFS System support和Provide NFSvs client support,然后保存退出,重新编译内核,将生成的zImage重新下载到target board。 
    1.2.2 在target board的linux shell下,执行下列命令来进行NFS共享目录的挂载。 
    #mkdir /mnt/nfs 
    #mount -o nolock -t nfs <your-server-ip>:/home/lqm /mnt/nfs 
    #ls /mnt/nfs 
    由于很多嵌入式设备的根文件系统中不带portmap,所以一般都使用-o nolock参数,即不使用NFS文件锁,这样就可以避免使用portmap。如果顺利,在/mnt/nfs下,就可以看到linux server的共享文件夹下的内容了,而且两个文件夹内的修改是同步的。 
    2 应用程序实例 
    编写一个简单的C程序test.c 
    ------------------------------------------- 
    /*This is a test program.*/ 
    int main(void) 

    int i; 
    for(i=0;i<10;i++) 
    printf("Hello World %d times./n",i); 
    return 0; 

    ------------------------------------------- 
    编译该程序: 
    #arm-linux-gcc -o test test.c 
    2.1 FTP方式 
    首先将test下载到target board。启动target board的linux,在超级终端中执行: 
    #cd /var 
    #ftp <your-server-ip> 
    ftp>bin                //以binary mode传输文件 
    ftp>get test 
    ftp>exit 
    然后修改文件属性: 
    #chmod +x test 
    #./test 
    这时可以查看结果了。 
    2.2 NFS方式 
    在target board端挂载linux server的共享输出目录,并且运行程序。 
    #mkdir /mnt/nfs 
    #mount -o nolock -t nfs <your-server-ip>:/home/lqm /mnt/nfs 
    #ls /mnt/nfs 
    这时应该可以显示linux server的共享目录的内容。然后执行: 
    #./test 
    3 总结 
    这两种方式在应用程序不是特别复杂时区别不是很大,但是当开发程序比较复杂时,采用NFS方式显然效率要高得多。完成应用程序得开发,调试好后就可以下载 到嵌入式目标板的flash文件系统,或者直接编译到嵌入式linux内核并且烧写到flash,从而最终成为一个独立的嵌入式应用程序。 

    +++++++++++++ 
    下面是一些NFS共享的常用参数: 
    ro:只读访问 
    rw:读写访问 
    sync:所有数据在请求时写入共享 
    async:NFS 在写入数据前可以响应请求 
    secure:NFS通过1024以下的安全TCP/IP端口发送 
    insecure:NFS通过 1024以上的端口发送 
    wdelay:如果多个用户要写入NFS目录,则归组写入(默认) 
    no_wdelay:如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。 
    hide:在NFS共享目录中不共享其子目录 
    no_hide:共享 NFS目录的子目录 
    subtree_check:如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认) 
    no_subtree_check:和上面相对,不检查父目录权限 
    all_squash:共享文件的UID和GID映射匿名用户anonymous,适合公用目录。 
    no_all_squash:保留共享文件的UID和GID(默认) 
    root_squash:root用户的所有请求映射成如anonymous用户一样的权限(默认) 
    no_root_squas:root用户具有根目录的完全管理访问权限 
    anonuid=xxx:指定NFS服务器/etc /passwd文件中匿名用户的UID 
    anongid=xxx:指定NFS服务器/etc/passwd文件中匿名用户的GID

    展开全文
  • NFS服务器搭建与配置

    万次阅读 多人点赞 2018-10-18 14:42:40
    NFS服务简介 什么是NFSNFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。 ​ NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地...

    NFS服务简介

    什么是NFS?

    NFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。

    ​ NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;

    NFS一般用来存储共享视频,图片等静态数据。

    NFS挂载原理:

    <在这里插入图片描述

    图;服务器挂载结构图

    如上图示:

    当我们在NFS服务器设置好一个共享目录/home/public后,其他的有权访问NFS服务器的NFS客户端就可以将这个目录挂载到自己文件系统的某个挂载点,这个挂载点可以自己定义,如上图客户端A与客户端B挂载的目录就不相同。并且挂载好后我们在本地能够看到服务端/home/public的所有数据。如果服务器端配置的客户端只读,那么客户端就只能够只读。如果配置读写,客户端就能够进行读写。挂载后,NFS客户端查看磁盘信息命令:#df –h。

    既然NFS是通过网络来进行服务器端和客户端之间的数据传输,那么两者之间要传输数据就要有想对应的网络端口,NFS服务器到底使用哪个端口来进行数据传输呢?基本上NFS这个服务器的端口开在2049,但由于文件系统非常复杂。因此NFS还有其他的程序去启动额外的端口,这些额外的用来传输数据的端口是随机选择的,是小于1024的端口;既然是随机的那么客户端又是如何知道NFS服务器端到底使用的是哪个端口呢?这时就需要通过远程过程调用(Remote Procedure Call,RPC)协议来实现了!

    RPC与NFS通讯原理:

    ​ 因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此NFS的功能对应的端口并不固定,客户端要知道NFS服务器端的相关端口才能建立连接进行数据传输,而RPC就是用来统一管理NFS端口的服务,并且统一对外的端口是111,RPC会记录NFS端口的信息,如此我们就能够通过RPC实现服务端和客户端沟通端口信息。PRC最主要的功能就是指定每个NFS功能所对应的port number,并且通知客户端,记客户端可以连接到正常端口上去。

    那么RPC又是如何知道每个NFS功能的端口呢?

    首先当NFS启动后,就会随机的使用一些端口,然后NFS就会向RPC去注册这些端口,RPC就会记录下这些端口,并且RPC会开启111端口,等待客户端RPC的请求,如果客户端有请求,那么服务器端的RPC就会将之前记录的NFS端口信息告知客户端。如此客户端就会获取NFS服务器端的端口信息,就会以实际端口进行数据的传输了。

    注意:在启动NFS SERVER之前,首先要启动RPC服务(即portmap服务,下同)否则NFS SERVER就无法向RPC服务区注册,另外,如果RPC服务重新启动,原来已经注册好的NFS端口数据就会全部丢失。因此此时RPC服务管理的NFS程序也要重新启动以重新向RPC注册。特别注意:一般修改NFS配置文档后,是不需要重启NFS的,直接在命令执行systemctl reload nfs或exportfs –rv即可使修改的/etc/exports生效

    NFS客户端和NFS服务器通讯过程:

    在这里插入图片描述

    图:NFS工作原理图
    1. 首先服务器端启动RPC服务,并开启111端口

    2. 服务器端启动NFS服务,并向RPC注册端口信息

    3. 客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口

    4. 服务端的RPC(portmap)服务反馈NFS端口信息给客户端。

    5. 客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

    Linux下NFS服务器部署

    NFS服务所需软件及主要配置文件:

    安装NFS服务,需要安装两个软件,分别是:

    • RPC主程序:rpcbind

      NFS 其实可以被视为一个 RPC 服务,因为启动任何一个 RPC 服务之前,我们都需要做好 port 的对应 (mapping) 的工作才行,这个工作其实就是『 rpcbind 』这个服务所负责的!也就是说, 在启动任何一个 RPC 服务之前,我们都需要启动 rpcbind 才行! (在 CentOS 5.x 以前这个软件称为 portmap,在 CentOS 6.x 之后才称为 rpcbind 的!)。

    • NFS主程序:nfs-utils

      就是提供 rpc.nfsd 及 rpc.mountd 这两个 NFS daemons 与其他相关 documents 与说明文件、执行文件等的软件!这个就是 NFS 服务所需要的主要软件。

    NFS的相关文件:

    • 主要配置文件:/etc/exports
      这是 NFS 的主要配置文件了。该文件是空白的,有的系统可能不存在这个文件,主要手动建立。NFS的配置一般只在这个文件中配置即可。
    • NFS 文件系统维护指令:/usr/sbin/exportfs
      这个是维护 NFS 分享资源的指令,可以利用这个指令重新分享 /etc/exports 变更的目录资源、将 NFS Server 分享的目录卸除或重新分享。
    • 分享资源的登录档:/var/lib/nfs/*tab
      在 NFS 服务器的登录文件都放置到 /var/lib/nfs/ 目录里面,在该目录下有两个比较重要的登录档, 一个是 etab ,主要记录了 NFS 所分享出来的目录的完整权限设定值;另一个 xtab 则记录曾经链接到此 NFS 服务器的相关客户端数据。
    • 客户端查询服务器分享资源的指令:/usr/sbin/showmount
      这是另一个重要的 NFS 指令。exportfs 是用在 NFS Server 端,而 showmount 则主要用在 Client 端。showmount 可以用来察看 NFS 分享出来的目录资源。

    服务端安装NFS服务步骤:

    第一步:安装NFS和rpc。

    [root@localhost ~]# yum install -y  nfs-utils   
    #安装nfs服务
    [root@localhost ~]# yum install -y rpcbind
    #安装rpc服务
    

    第二步:启动服务和设置开启启动:

    注意:先启动rpc服务,再启动nfs服务。

    [root@localhost ~]# systemctl start rpcbind    #先启动rpc服务
    [root@localhost ~]# systemctl enable rpcbind   #设置开机启动
    [root@localhost ~]# systemctl start nfs-server nfs-secure-server      
    #启动nfs服务和nfs安全传输服务
    [root@localhost ~]# systemctl enable nfs-server nfs-secure-server
    [root@localhost /]# firewall-cmd --permanent --add-service=nfs
    success   #配置防火墙放行nfs服务
    [root@localhost /]# firewall-cmd  --reload 
    success
    

    第三步:配置共享文件目录,编辑配置文件:

    首先创建共享目录,然后在/etc/exports配置文件中编辑配置即可。

    [root@localhost /]# mkdir /public
    #创建public共享目录
    [root@localhost /]# vi /etc/exports
    	/public 192.168.245.0/24(ro)
    	/protected 192.168.245.0/24(rw)
    [root@localhost /]# systemctl reload nfs 
    #重新加载NFS服务,使配置文件生效
    

    配置文件说明:

    格式: 共享目录的路径 允许访问的NFS客户端(共享权限参数)

    如上,共享目录为/public , 允许访问的客户端为192.168.245.0/24网络用户,权限为只读。

    请注意,NFS客户端地址与权限之间没有空格。

    NFS输出保护需要用到kerberos加密(none,sys,krb5,krb5i,krb5p),格式sec=XXX

    none:以匿名身份访问,如果要允许写操作,要映射到nfsnobody用户,同时布尔值开关要打开,setsebool nfsd_anon_write 1

    sys:文件的访问是基于标准的文件访问,如果没有指定,默认就是sys, 信任任何发送过来用户名

    krb5:客户端必须提供标识,客户端的表示也必须是krb5,基于域环境的认证

    krb5i:在krb5的基础上做了加密的操作,对用户的密码做了加密,但是传输的数据没有加密

    krb5p:所有的数据都加密

    用于配置NFS服务程序配置文件的参数:

    参数作用
    ro只读
    rw读写
    root_squash当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
    no_root_squash当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
    all_squash无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
    sync同时将数据写入到内存与硬盘中,保证不丢失数据
    async优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据

    NFS客户端挂载配置:

    **第一步:**使用showmount命令查看nfs服务器共享信息。输出格式为“共享的目录名称 允许使用客户端地址”。

    [root@localhost ~]# showmount -e 192.168.245.128      
    Export list for 192.168.245.128:
    /protected 192.168.245.0/24
    /public    192.168.245.0/24
    

    showmount命令的用法;

    参数作用
    -e显示NFS服务器的共享列表
    -a显示本机挂载的文件资源的情况NFS资源的情况
    -v显示版本号

    **第二步,**在客户端创建目录,并挂载共享目录。

    [root@localhost ~]# mkdir /mnt/public
    [root@localhost ~]# mkdir /mnt/data
    [root@localhost ~]# vim /etc/fstab 
    #在该文件中挂载,使系统每次启动时都能自动挂载
    	192.168.245.128:/public  /mnt/public       nfs    defaults 0 0
    	192.168.245.128:/protected /mnt/data     nfs    defaults  0 1
    [root@localhost ~]# mount -a   #是文件/etc/fstab生效
    

    第三步:检查:

    [root@mail ~]# df -Th
    Filesystem                 Type      Size  Used Avail Use% Mounted on
    /dev/mapper/rhel-root      xfs        17G  3.1G   14G  18% /
    devtmpfs                   devtmpfs  1.4G     0  1.4G   0% /dev
    tmpfs                      tmpfs     1.4G  140K  1.4G   1% /dev/shm
    tmpfs                      tmpfs     1.4G  9.1M  1.4G   1% /run
    tmpfs                      tmpfs     1.4G     0  1.4G   0% /sys/fs/cgroup
    /dev/sda1                  xfs      1014M  173M  842M  18% /boot
    tmpfs                      tmpfs     280M   32K  280M   1% /run/user/0
    /dev/sr0                   iso9660   3.6G  3.6G     0 100% /mnt/cdrom
    192.168.245.128:/public    nfs4       17G  3.7G   14G  22% /mnt/public
    192.168.245.128:/protected nfs4       17G  3.7G   14G  22% /mnt/data
    

    在Window上挂载NFS

    第一步:在控制面板–>添加程序和功能–>添加NFS组件。
    在这里插入图片描述

    第二步:在此电脑,映射驱动器中添加nfs地址,和要共享的文件夹。

    在这里插入图片描述

    第三步:如果权限有问题,打开注册表:regedit, 在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default 下新建两个OWORD(64)位值,添加值AnonymousGid,值默认为0,AnonymousUid,值默认为0。

    展开全文
  • nfs搭建

    万次阅读 2021-06-06 22:23:36
    nfs 1. nfs简介 1.1 nfs特点 NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源 在NFS的应用中,本地NFS的客户端应用可以透明地读写...

    nfs

    1. nfs简介

    1.1 nfs特点

    • NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源
    • 在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样
    • nfs适用于Linux与Unix之间实现文件共享,不能实现Linux与Windows间的文件共享功能
    • nfs是运行在应用层的协议,其监听于2049/tcp和2049/udp套接字上
    • nfs服务只能基于IP进行认证

    1.2 nfs的应用场景

    nfs有很多实际应用场景,以下是一些常用的场景:

    • 多个机器共享一台CDROM或其他设备。这对于在多台机器中安装软件来说更加便宜与方便
    • 在大型网络中,配置一台中心NFS服务器用来放置所有用户的home目录可能会带来便利。这些目录能被输出到网络以便用户不管在哪台工作站上登录,总能得到相同的home目录
    • 不同客户端可在NFS上观看影视文件,节省本地空间
    • 在客户端完成的工作数据,可以备份保存到NFS服务器上用户自己的路径下

    1.3 nfs的体系组成

    nfs体系至少有两个主要部分:

    • 一台nfs服务器
    • 若干台客户机

    nfs体系的架构图如下:

    img

    客户机通过TCP/IP网络远程访问存放在NFS服务器上的数据
    在NFS服务器正式启用前,需要根据实际环境和需求,配置一些NFS参数

    2. nfs工作机制

    nfs是基于rpc来实现网络文件系统共享的。所以我们先来说说rpc。

    2.1 RPC

    RPC(Remote Procedure Call Protocol),远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

    RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。

    RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。

    img

    rpc工作机制如上图所示,下面来描述一下它:

    • 客户端程序发起一个RPC系统调用基于TCP协议发送给另一台主机(服务端)
    • 服务端监听在某个套接字上,当收到客户端的系统调用请求以后,将收到的请求和其所传递的参数通过本地的系统调用执行一遍,并将结果返回给本地的服务进程
    • 服务端的服务进程收到返回的执行结果后将其封装成响应报文,再通过rpc协议返回给客户端
    • 客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行

    2.2 nfs工作机制

    //NFS服务器端运行着四个进程:
        nfsd
        mountd
        idmapd
        portmapper
    
    idmapd  //实现用户帐号的集中映射,把所有的帐号都映射为NFSNOBODY,但是在访问时却能以本地用户的身份去访问
    
    mountd  //用于验证客户端是否在允许访问此NFS文件系统的客户端列表中,在则允许访问(发放一个令牌,持令牌去找nfsd),否则拒绝访问
            //mountd的服务端口是随机的,由rpc服务(portmapper)提供随机端口号
    
    nfsd    //nfs的守护进程,监听在2049/tcp和2049/udp端口上
            //不负责文件存储(由NFS服务器本地内核负责调度存储),用于理解客户端发起的rpc请求,并将其转交给本地内核,而后存储在指定的文件系统上
    
    portmapper  //NFS服务器的rpc服务,其监听于111/TCP和111/UDP套接字上,用于管理远程过程调用(RPC)
    

    下面通过一个例子来说明NFS的简单工作流程:

    需求:查看file文件的信息,此file存储在远程NFS服务端主机上(挂载在本地目录/shared/nfs中)
    

    img

    • 客户端发起查看file信息的指令(ls file)给内核,内核通过NFS模块得知此文件并不是本地文件系统中的文件,而是在远程NFS主机上的一个文件
    • 客户端主机的内核通过RPC协议把查看file信息的指令(系统调用)封装成rpc请求通过TCP的111端口发送给NFS服务端主机的portmapper
    • NFS服务端主机的portmapper(RPC服务进程)告诉客户端说NFS服务端的mountd服务在某某端口上,你去找它验证

    因为mountd在提供服务时必须要向portmapper注册一个端口号,所以portmapper是知道其工作于哪个端口的

    • 客户端得知服务端的mountd进程端口号后,通过已知的服务端mountd端口号请求验证
    • mountd收到验证请求后验证发起请求的客户端是否在允许访问此NFS文件系统的客户端列表中,在则允许访问(发放一个令牌,持令牌去找nfsd),否则拒绝访问
    • 验证通过后客户端持mountd发放的令牌去找服务端的nfsd进程,请求查看某文件
    • 服务端的nfsd进程发起本地系统调用,向内核请求查看客户端要查看的文件的信息
    • 服务端的内核执行nfsd请求的系统调用,并将结果返回给nfsd服务
    • nfsd进程收到内核返回的结果后将其封装成rpc请求报文并通过tcp/ip协议返回给客户端

    3. exports文件的格式

    nfs的主配置文件是/etc/exports,在此文件中,可以定义NFS系统的输出目录(即共享目录)、访问权限和允许访问的主机等参数。该文件默认为空,没有配置输出任何共享目录,这是基于安全性的考虑,如此即使系统启动了NFS服务也不会输出任何共享资源。

    exports文件中每一行提供了一个共享目录的设置,其命令格式为:

    <输出目录> [客户端1(选项1,选项2,...)] [客户端2(选项1,选项2,...)]
    

    其中,除输出目录是必选参数外,其他参数均是可选项。另外,格式中的输出目录和客户端之间、客户端与客户端之间都使用空格分隔,但客户端与选项之间不能有空格。

    客户端是指网络中可以访问这个NFS共享目录的计算机。客户端的指定非常灵活,可为单个主机的IP或域名,亦可为某个子网或域中的主机等。
    客户端常用的指定方式:

    客户端说明
    192.168.80.21指定IP地址的主机
    192.168.80.0/24(或172.16.12.*)指定子网中的所有主机
    www.baidu.com指定域名的主机
    *.baidu.com指定wangqing.com域中的所有主机
    *(或缺省)所有主机

    选项用来设置共享目录的访问权限、用户映射等。exports文件中的选项比较多,一般可分为三类:

    • 访问权限选项(用于控制共享目录的访问权限)
    • 用户映射选项
      • 默认情况下,当客户端访问NFS服务器时,若远程访问的用户是root用户,则NFS服务器会将其映射成一个本地的匿名用户(该用户为nfsnobody),并将其所属的用户组也映射成匿名用户组(该用户组也为nfsnobody),如此有助于提高系统的安全性。
    • 其他选项

    访问权限选项:

    访问权限选项说明
    ro设置输出目录只读
    rw设置输出目录可读写

    用户映射选项:

    用户映射选项说明
    all_squash将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody)
    no_all_squash不将远程访问的所有普通用户及所属用户组都映射为匿名用户或用户组(默认设置)
    root_squash将root用户及所属用户组都映射为匿名用户或用户组(默认设置)
    no_root_squash不将root用户及所属用户组都映射为匿名用户或用户组
    anonuid=xxx将远程访问的所有用户都映射为匿名用户,并指定该匿名用户为本地用户帐户(UID=xxx)
    anongid=xxx将远程访问的所有用户组都映射为匿名用户组,并指定该匿名用户组为本地用户组(GID=xxx)

    常用的其他选项:

    其他选项说明
    secure限制客户端只能从小于1024的TCP/IP端口连接NFS服务器(默认设置)
    insecure允许客户端从大于1024的TCP/IP端口连接NFS服务器
    sync将数据同步写入内存缓冲区或磁盘中,效率较低,但可保证数据一致性
    async将数据先保存在内存缓冲区中,必要时才写入磁盘
    wdelay检查是否有相关的写操作,如果有则这些写操作一起执行,可提高效率(默认设置)
    no_wdelay若有写操作则立即执行,应与sync配置使用
    subtree_check若输出目录是一个子目录,则NFS服务器将检查其父目录的权限(默认设置)
    no_subtree_check即使输出目录是一个子目录,NFS服务亦不检查其父目录的权限,可提高效率
    nohide若将一个目录挂载到另一个目录之上,则原来的目录通常就被隐藏起来或看起来像空的一样。要禁用这种行为,需启用hide选项

    实验

    • 服务端
    [root@localhost ~]#yum -y install nfs-utils #安装nfs
    [root@localhost ~]#systemctl start rpcbind nfs-server #启动服务(一定要先启动 rpcbind,再启动nfs-serv)
    [root@localhost ~]# mkdir /nfs #创建一个文件夹用于分享数据
    [root@localhost ~]# vim /etc/exports #编辑配置文件
    /nfs 192.168.80.0/24(rw,no_root_squash)
    
    挂在目录 分享数据的网段 权限
    [root@localhost ~]# systemctl reload nfs-server #重新加载服务
    
    • 客户端
    [root@z1 ~]# yum install -y nfs-utils    #为了使用showmount 测试
    [root@z1 ~]# showmount -e 192.168.80.31  #测试连接
    Export list for 192.168.80.31:
    /nfs 192.168.80.0/24
    [root@z1 mnt]# vim /etc/fstab
    192.168.80.31:/nfs      /mnt                    nfs     defaults        0 0 
    [root@z1 mnt]# mount -a
    [root@z1 mnt]# df -h
    Filesystem           Size  Used Avail Use% Mounted on
    devtmpfs             620M     0  620M   0% /dev
    tmpfs                650M     0  650M   0% /dev/shm
    tmpfs                650M  9.1M  641M   2% /run
    tmpfs                650M     0  650M   0% /sys/fs/cgroup
    /dev/mapper/cs-root   17G  5.8G   12G  34% /
    192.168.80.31:/nfs    17G  1.7G   16G  10% /mnt #挂载成功
    /dev/sda1           1014M  242M  773M  24% /boot
    tmpfs                130M     0  130M   0% /run/user/0
    [root@z1 mnt]# touch 123 					 #可写
    [root@z1 mnt]# ls
    123  13  14  15  16  17  19  				 #可读
    
    展开全文
  • Linux nfs Linux nfsLinux nfs
  •  一:NFS服务  nfs(network file system)网络文件系统,改服务依赖于rpcbind服务。client通过rpc?问server端的rpc。nfs通过rpc来申请port号。rpc将分配的port号映射到portmap表中。然后将port号发送给client的...
  • ⚡超容易的NFS存储服务搭建流程⚡

    万次阅读 多人点赞 2021-09-15 17:45:16
    文章目录一、NFS存储服务概念介绍二、NFS服务软件的基本作用三、NFS服务存储数据原理四、服务端NFS服务部署流程????1.检查相应存储软件是否安装????2.编写配置文件????3.创建共享目录信息,目录授权????4.启动nfs相关...

    一、NFS存储服务概念介绍

    NFS是Network File System的缩写,中文意思是网络文件系统,它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录
    NFS服务器只支持linux服务器之间共享数据存储。
    PS:windows服务器和linux服务器都存在:尽量不要使用nfs,建议使用samba ftp

    二、NFS服务软件的基本作用

    1)可以实现数据信息统一一致
    2)可以节省磁盘硬件设备成本
    

    三、NFS服务存储数据原理

    1.什么是NFS
      NFS中文名字:网络共享存储,就是通过网络共享目录,让网络上的其他服务器能够挂载访问共享目录的数据(NFS一般都是用来存放视频、附件、图片等静态数据的).
    NFS是通过网络来进行服务端和客户端数据传输的,那么只要是通过网络的就一定会有端口,那NFS的端口是什么呢?很失望的是NFS的端口是随机的,每次重启服务端口都会改变.
    那么客户端是怎样知道服务端的端口的呢?其实NFS服务器是通过远程过程调用(RPC)协议/服务来实现的,也就是说RPC服务会统一管理NFS的端口,客户端和服务端通过RPC来确定端口,进行数据传输.
    PS:(原来RPC管理服务端的NFS端口分配,客户端要传数据,那客户端的RPC会先跟服务端的RPC去要服务器的端口,要到端口后再建立连接,然后传输数据)2.什么是RPC
      RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
    RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了  传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
    RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。
    
    3.RPC和NFS之间的关系
      NFS服务端需要先启动RPC,在启动NFS,这样NFS才能到RPC注册端口信息,客户端的RPC可以通过向服务端的RPC请求获取服务端的NFS端口信息,获取到端口后,就可以以获取到的实际端口来进行数据传输了 
    
    4.RPC和NFS启动顺序
     ① 先启动RPC服务
     ② 在启动NFS服务
     ③ 客户端只启动RPC服务就OK 
    

    四、服务端NFS服务部署流程

    🔅1.检查相应存储软件是否安装

    nfs-utils rpcbind(centos6)
    #rpcbind服务属于nfs-utils 软件的一个依赖包

    [root@nfs01 ~]rpm -qa|grep -E 'nfs|rpc'
    [root@nfs01 ~]yum install nfs-utils rpcbind	
    #对nfs,rpc服务进行安装
    [root@nfs01 ~]rpm -ql nfs-utils  #查看nfs服务是否安装
    /etc/rc.d/init.d/nfs
    /usr/sbin/showmount
    
    [root@nfs01 ~]rpm -ql rpcbind    #查看rpc服务是否安装
    /etc/rc.d/init.d/rpcbind
    /sbin/rpcbind
    /usr/sbin/rpcinfo   --- 查看nfs服务是否已经进行了注册
    

    🔅2.编写配置文件

    [root@nfs01 ~] vim /etc/exports
    /data 172.16.1.0/24(rw,sync)
      ①        ②           ③
    第一列:定义nfs服务的功能项目录信息
    第二列:定义哪些网段的主机可以访问共享目录
    第三列:定义配置共享目录的一些权限或功能目录
    sync:同步传输数据
    Async:异步传输数据
    

    🔅3.创建共享目录信息,目录授权

    [root@nfs01 ~] mkdir /data -p (加p可以重复创建目录)
    [root@nfs01 ~] id nfsnobody    ---共享目录管理用户
    uid=65534(nfsnobody) gid=65534(nfsnobody) groups=65534(nfsnobody)
    [root@nfs01 ~] chown -R nfsnobody.nfsnobody /data/
    #修改/data目录的用户的用户组为nfsnobody
    

    🔅4.启动nfs相关服务

    1.先启动rpc服务
    [root@nfs01 ~] /etc/init.d/rpcbind start  #启动rpc服务
    [root@nfs01 ~] ps -ef|grep rpcbind    #查看进程是否启动rpc服务
    rpc        2957      1  0 13:20 ?        00:00:00 rpcbind
    root       2961   2915  0 13:22 pts/3    00:00:00 grep rpcbind
    
    [root@nfs01 ~]# netstat -lntup|grep rpc   #查看rpc端口信息
    tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      2957/rpcbind        
    tcp        0      0 :::111                      :::*                        LISTEN      2957/rpcbind  
    	
    2.再启动nfs
    [root@nfs01 ~] /etc/init.d/nfs start   #启动nfs服务进程
    [root@nfs01 ~] ps -ef|grep nfs    #查看进程是否启动
    root       3021      2  0 13:28 ?        00:00:00 [nfsd4]
    root       3022      2  0 13:28 ?        00:00:00 [nfsd4_callbacks]
    root       3023      2  0 13:28 ?        00:00:00 [nfsd]
    root       3024      2  0 13:28 ?        00:00:00 [nfsd]
    root       3025      2  0 13:28 ?        00:00:00 [nfsd]
    root       3026      2  0 13:28 ?        00:00:00 [nfsd]
    root       3027      2  0 13:28 ?        00:00:00 [nfsd]
    root       3028      2  0 13:28 ?        00:00:00 [nfsd]
    root       3029      2  0 13:28 ?        00:00:00 [nfsd]
    root       3030      2  0 13:28 ?        00:00:00 [nfsd]
    root       3065   2915  0 13:29 pts/3    00:00:00 grep nfs
        
    [root@nfs01 ~] rpcinfo -p localhost --- 检查本地nfs服务是否想rpc服务进行注册
    	
    

    五、客户端NFS服务部署流程

    🔅1.检查安装软件服务

    [root@backup ~]rpm -qa|grep -E 'nfs|rpc'
    检查nfs,rpc服务是否安装
    [root@nfs01 ~] yum install nfs-utils rpcbind	
    #对nfs,rpc服务进行安装
    [root@backup ~] rpm -ql nfs-utils  #查看nfs服务是否安装
    [root@backup ~] rpm -ql rpcbind    #查看rpc服务是否安装
    
    
    

    🔅2.进行共享目录挂载使用

    [root@backup ~] mount -t nfs 172.16.1.31:/data /mnt  #测试挂载目录命令
    [root@backup ~] df -h     #查看磁盘挂载情况
    Filesystem         Size  Used Avail Use% Mounted on
    /dev/sda3           48G  1.8G   44G   4% /
    tmpfs              491M     0  491M   0% /dev/shm
    /dev/sda1          190M   35M  146M  19% /boot
    172.16.1.31:/data   48G  1.8G   44G   4% /mnt
    可以看到172.16.1.31:/data的目录已经挂载成功
    
    如果挂载不成功,在服务端上使用以下命令
    [root@nfs01 ~]# showmount -e localhost
    查看是否有目录可以供挂载,如果没有地址则查看配置文件是否按要求修改
    

    🔅3.进行存储测试

    服务端 客户端都添加一些目录或文件,看是否能相互之间查看	
    
    

    补充:当存储服务挂载遇到问题,如何排查
    rpcinfo -p nfs服务端地址信息 --查看rpc服务中是否有nfs服务注册信息
    showmount -e nfs服务端地址信息 --查看nfs服务端可以使用共享目录信息

    补充:根据自己需求配置映射关系,上述内容是最基本的映射关系

    在nfs服务端到底如何配置映射信息比较合理
    1)希望www用户来管理存储共享目录
    2)希望root用户做了映射之后,也能向共享目录中存储数据

    企业案例:修改nfs默认映射用户
    将默认nfsnobody用户装变为www用户
    企业案例:修改nfs默认映射用户
    服务端操作流程:

    1.创建新的映射用户
    [root@nfs01 ~]# useradd -M -s /sbin/nologin www
    设置虚拟用户,只能用于登陆
    [root@nfs01 ~]# id www
    uid=500(www) gid=500(www) groups=500(www)
    
    2.修改nfs配置文件
    [root@nfs01 ~]# vim /etc/exports 
    /data 172.16.1.0/24(rw,sync,no_all_squash,root_squash,anonuid=500,anongid=500)
        
    3.修改目录权限信息
    [root@nfs01 ~]# chown -R www.www /data
    检查是否修改完成
    [root@nfs01 ~]# ll /data -d
    drwxr-xr-x 2 www www 4096 Sep  2 18:52 /data
    
    4.重启nfs服务
    [root@nfs01 ~]# /etc/init.d/nfs restart
    

    客户端部署流程:

    1.创建新的映射用户
    [root@backup ~]# useradd www -u 500
    为了方便使用,创建一个普通用户,为了保证创建的www用户和服务端的用户uid一致,-u参数 可以实现指定创建uid
    
    2.挂载目录
    [root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt
    
    3.进行测试
    [root@backup mnt]# touch root.txt
    [www@backup mnt]$ touch www.txt
    [fu@backup mnt]$ touch fu.txt
    touch: cannot touch `fu.txt': Permission denied
    #使用不同的用户登陆可以发现,只有root用户和www用户可以在/mnt内创建数据
    

    客户端补充:
    如果客户端创建指定uid用户发生冲突,可以参考以下信息

    [root@backup ~]# useradd www -u 500
    useradd: UID 500 is not unique  #已经有用户占用uid
    [root@backup ~]# grep 500 /etc/passwd
     #查看那个用户占用uid
    则需要在客户端和服务端修改www用户的uid
    	
    服务端删除www用户重新创建
    [root@nfs01 ~]# userdel -r www  #删除
    [root@nfs01 ~]# useradd www -u 666 -M -s /sbin/nologin #创建虚拟用户
    修改配置文件中的uid
    root@nfs01 ~]# vim /etc/exports
    /data 172.16.1.0/24(rw,sync,no_all_squash,root_squash,anonuid=666,anongid=666)
    修改挂载目录/data的管理用户和管理组,因为重新创建过用户后,/data目录的管理人还是之前的用户,没有更新
    
    客户端创建指定uid 666
    [root@backup ~]# useradd www -u 666
    [root@backup ~]# id www
    uid=666(www) gid=666(www) groups=666(www)
    

    服务端重启后可以正常使用nfs服务方法:

    确保rpcbind服务 nfs服务可以开机自启
    chkconfig nfs on 
    chkconfig rpcbind on
    	
    查看nfs和rpc服务是否开启开机自启
    [root@nfs01 ~]# chkconfig --list|grep -E  'rpc|nfs'
    

    客户端重启后可以正常使用nfs服务方法:(重启后挂载目录可能会丢失,需重新挂载)

    步骤:/etc/rc.local
    echo 'mount -t nfs 172.16.1.31:/data/ /mnt' >>/etc/rc.local
    

    PS:nfs服务存储原理

    服务端干了三件事
    1)启动rpc服务
    2)启动nfs服务
    3)向rpc服务进行注册
    客户端干了三件事
    1)建立网络连接(rpc 1112)利用mount命令进行挂载
    3)实现数据网络存储	
    
    展开全文
  • NFS笔记

    万次阅读 2020-09-04 09:24:49
    【1】Linux搭建NFS服务 【1】Linux搭建NFS服务 参考链接 linux下搭建NFS NFS服务端搭建步骤 #安装,NFS只需要安装两个软件(安装后会创建nfsnobody用户和组): yum install rpcbind nfs-utils #rpcbind:centos ...
  • nfs搭建手册

    万次阅读 2021-08-02 15:50:00
    nfs搭建手册 执行命令 需要每台服务器上都执行 yum install -y nfs-utils rpcbind mkdir -p /data/nfs/ chmod 777 /data/nfs chown -R nfsnobody:nfsnobody /data/nfs 服务端需要添加配置 echo "/data/nfs *(rw,...
  • nfs-utils:内核NFS服务器
  • nfs windows版本

    2018-02-24 15:12:08
    nfs windows版本 nfs windows版本 nfs windows版本 nfs windows版本 nfs windows版本 nfs windows版本
  • ansible-role-nfs:Ansible角色-NFS
  • 一.NFS定义 网络文件系统(NFS)是linux系统和网络附加存储文件管理器常用的网络文件系统,允许多个客户端通过共享文件访问,它可以用于提供对共享二进制目录的访问,也可以用于允许用户在统一工作组中从不同客户端...
  • rgw nfs基于nfs-ganesha的实现总结
  • NFS挂载服务器

    2018-10-31 11:27:23
    WINODWS下面NFS服务器,可以挂载NFS目录 
  • dockerized_nfs_server, Dockerized NFS服务器NFS服务器作为 Docker 容器 Dockerized NFS服务器目录在你开始之前,请先输入 启动服务器设置你自己的导出文件。停止服务器调试&调试解决方案通用信息先决条件获得 ...
  • NFS出口商 这将导出NFSv4服务器的指标。 它从/ proc / net / rpc / nfsd读取 指标输出 输出以下指标 # HELP nfs_replycache_hits Number of hits in reply cache (client is retransmitting) # TYPE nfs_replycache_...
  • NFS挂载 管理NFS挂载。 角色变量 nfs_mount_opts :默认的NFS挂载选项 nfs_version :要使用的默认NFS版本(4) nfs_share_mounts :NFS共享的字典列表: 路径:安装点 位置:nfs服务器路径 opts:挂载选项(可选...
  • NFS挂载的2种方式

    万次阅读 多人点赞 2017-03-29 17:19:49
    于是韦老师介绍了两种方式:1 仅用flash上的根文件系统启动后,手工MOUNT NFS使用NFS作为根文件系统来启动视频中只介绍了开发板这端uboot参数的设置,并未介绍Ubuntu端 NFS服务器的设置,这就导致很多学员学习时遇到...
  • NFS-开源

    2021-04-30 23:08:22
    linux NFS开发的老家; 现在请参阅linux-nfs.org。
  • solaris nfs

    2014-08-30 08:12:43
    说明NFS服务器和NFS客户机的功能;生成可用于挂接的和不可用于挂接的资源
  • NFS文档 NFS最全文档 NFS详解文档NFS文档 NFS最全文档 NFS详解文档NFS文档 NFS最全文档 NFS详解文档
  • nfs_ha.pdf

    2019-12-21 17:31:54
    linux nfs ha,linux nfs halinux nfs halinux nfs halinux nfs halinux nfs halinux nfs halinux nfs halinux nfs halinux nfs ha
  • linux NFS 学习笔记

    2021-01-10 19:50:39
    NFS,是Network File System的简写,即网络文件系统。网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS. NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样...
  • NFS服务器配置-挂载nfs

    2014-04-29 21:03:17
    本资料是适合各种开发板和linux系统 nfs服务器挂载。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 189,811
精华内容 75,924
关键字:

nfs