• Ubuntu 搭建 配置 nfs服务器


    背景

    什么是NFS?

    NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

    通过nfs,我们可以实现不同设备下文件的访问。(尤其是跨设备拷贝大型文件的时候)

    注:通过nfs还能实现从uboot直接读取远程文件系统(nfs挂载文件系统可能会导致驱动没有正常加载,这个是需要注意的)

    搭建好了NFS服务器以后,其他的设备就可以通过网络对服务器的nfs进行挂载并访问。

    NFS的安装与配置

    安装

    sudo apt-get install nfs-kernel-server -y
    

    增加配置

    sudo vi /etc/exports
    

    增加策略,每个策略一行

    设定格式如下:

    共享目录 主机名称或者IP(参数1, 参数2)
    

    例如:

    /nfs *(rw,sync,no_root_squash)
    
    -------------------------------------------------------
    ## 解释
    
    /nfs               :要共享的路径
    *                  :*通配,表示所有网段都可以访问
    sync               :同步写入硬盘
    no_root_squash     :nfs客户端共享目录使用者权限
    

    启动

    service nfs-kernel-server restart
    # (启动之前要确保对应的文件夹是存在的,否则会出现'Job for * canceled.')
    

    停止

    service nfs-kernel-server stop
    

    查看是否启动

    service nfs-kernel-server status
    或者
    netstat -a | grep nfs
    

    测试

    假设 /etc/exports文件中有一行 /nfs的配置:

    mkdir /mnt/nfs                       # 在/mnt下创建nfs目录
    touch /nfs/nfstest                   # 在/nfs目录下创建一个文件nfstest
    mount -t nfs -o nolock localhost:/nfs /mnt/nfs # 将主机/nfs目录挂载到/mnt/nfs下
    ls /mnt/nfs/                         # 查看/mnt/nfs/目录下有nfstest文件
    umount /mnt/nfs/                     # 测试完后卸载掉
    

    NFS的使用

    客户端

    mount -t nfs -o nolock,tcp 服务器IP:/配置的共享路径 /映射到本机的路径
    如:
    mount -t nfs -o nolock,tcp 192.168.5.113:/nfs /nfs # 将5.113中的/nfs挂载到本地的/nfs下
    

    NFS的有关文件

    /etc/exports NFS服务的主要配置文件
    
    /usr/sbin/exportfs NFS服务的管理命令
    
    /usr/sbin/showmount 客户端的查看命令
    
    /var/lib/nfs/etab 记录NFS分享出来的目录的完整权限设定值
    
    /var/lib/nfs/xtab 记录曾经登录过的客户端信息
    
    NFS服务的配置文件为 /etc/exports,这个文件是NFS的主要配置文件,不过系统并没有默认值,所以这个文件不一定会存在,可能要使用vim手动建立,然后在文件里面写入配置内容。
    

    nfs 配置

    nfs的配置默认是在/etc/exports中,其中的每一行代表一个规则:

    <输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)] 
    

    输出目录: 输出目录是指NFS系统中需要共享给客户机使用的目录;

    客户端: 客户端是指网络中可以访问这个NFS输出目录的计算机,客户端常用的指定方式:

    --指定ip地址的主机:192.168.0.200
    --指定子网中的所有主机:192.168.0.0/24 192.168.0.0/255.255.255.0
    --指定域名的主机:david.bsmart.cn
    --指定域中的所有主机:*.bsmart.cn
    --所有主机:*
    

    选项:选项用来设置输出目录的访问权限、用户映射等。

    服务端在/etc/exports 括号中可以指定的参数:

    选项 描述
    rw 允许读写权限
    ro 只读权限
    sync 同步模式(Default),所有数据在写入后可以请求
    async 异步模式,数据在写入过程中可以写入
    secure NFS通过1024以下的安全TCP/IP端口发送(Default)
    insecure NFS可以通过所有端口发送
    wdelay 如果多个用户要写入NFS目录,则归组写入 (Default)
    no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
    subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限 (Default)
    no_subtree_check 与subtree_check对应
    root_squash Map requests from uid/gid 0 to the anonymous uid/gid.
    no_root_squash root用户具有根目录的完全管理访问权限。
    all_squash Map all uids and gids to the anonymous user. 对公共目录访问时较有用。
    no_all_squash 保留共享文件的UID和GID (Default)
    anonuid=UID 指定匿名用户访问时映射机的用户uid
    anongid=GID 指定匿名用户访问时映射机的用户gid

    常用配置示例如下:

    /tmp     *(rw,no_root_squash)
    /public 192.168.0.*(rw)   *(ro)
    /nfs/test  192.168.0.100(rw)
    /home/linux  *.361way.com(rw,all_squash,anonuid=40,anongid=40)
    /build buildhost[0-9].**local.domain(rw)**
    /foo 2001:db8:9:e54::/64(rw) 192.0.2.0/24(rw)
    

    客户端mount时的相关参数:

    参数 描述 默认值
    suid nosuid 如果挂载点上面有任何 SUID(粘滞位) 的 binary 程序时, 你只要使用 nosuid 就可以取消 SUID 的功能! suid
    rw ro 如在服务允许写的权限,但为了安全起见,可以挂载时指定仅使用读取权限挂载 rw
    dev nodev 一般只有 /dev 这个目录挂载时才会用到 dev
    exec noexec 是否具有执行 binary file 的权限? 如果掛载的只是资料区 (例如 /home),那么可以选择 noexec exec
    user nouser 是否允许使用者进行挂载与卸载功能? 如果要保护系統,最好不要提供使用者進行掛载与卸载 nouser
    auto noauto 这个 auto 指的是『mount -a』时,是否自动挂载该挂载点。 如果你不需要这个 partition 随时被挂载,可以设为 noauto。 auto

    上面是 mount 自带的参数,除此之外,nfs 还支持指定以下参数:

    参数 参数功能 默认值
    fg bg 这两参数有点类似于进程中的fg、bg,指定fg mount时,会一直等到挂载成功或超时。指定bg时,挂载会在后台进行。 fg
    soft hard 为hard时,当C/S其中一台离线,则RPC 会持续的呼叫,直到对方恢复连线为止。如果是 soft ,那 RPC 会在 time out 后『重复』呼叫,而非『持续』呼叫, 因此系統的延迟会比较不明显。 hard
    intr 当使用hard 方式時,若加上 intr 参数, 则当 RPC 持续呼叫中,该次的呼叫是可以被中断的 (interrupted)。
    rsize wsize 读(rsize)和写(wsize)的block块大小 (block size)。 这个设定值可以影响用户端与服务器端传送缓存区的大小。一来说,在LAN网络内,有足够内存时,这个值可以设的大一些。比如 32768 (bytes) ,用于提升数据传送速度。但也不能超过网络能够传送的最大值。 rsize=1024 wsize=1024
  • 相关阅读:
    iis 5.0 不能运行 asp.net 的 原因
    股票在线讨论
    adsl 加 路由器 网关不能上网的 原因
    汽车英语
    势与子的辩证法
    中国上海的黑心培训学校
    excel 里的 图表的使用
    带宽 下载速度 比特 率 换算 速度
    硬盘分区表修复秘籍
    Bootstrap a标签的单击时停止传播事件
  • 原文地址:https://www.cnblogs.com/schips/p/12371915.html
Copyright © 2020-2023  润新知