zoukankan      html  css  js  c++  java
  • linux:NFS

    1.简介

    2.安装

    安装分为服务端和客户端

    【1】我们先拿一台机做服务端

    yum install nfs-utils rpcbind -y

    然后我们查查看安装没有,查询一个包是否被安装
    # rpm -q < rpm package name>

    列出所有被安装的rpm package
    # rpm -qa

    那么我们查查看执行没有

    rpm -qa nfs-utils rpcbind

    【2】

    vi /etc/exports

     配置格式

    复制代码
        <输出目录> 客户端(选项:访问权限,用户映射,其他]
            输出目录是指NFS系统中所定义的共享给客户端使用的文件系统
            客户端是定义网络中可以访问这个NFS共享目录的IP地址或网段或域名等
                客户端常用的指定方式
                    指定ip地址的主机:192.168.100.1
                    指定一个子网:192.168.100.0/24 也可以写成:192.168.100.0/255.255.255.0
                    指定域名的主机:david.bsmart.cn
                    指定域中的所有主机:*.bsmart.cn
                    所有主机:*
            选项用来设置输出目录的访问权限、用户映射等。
                NFS主要有3类选项:
                    设置输出目录只读:ro
                    设置输出目录读写:rw
                用户映射选项
                    all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
                    no_all_squash:与all_squash取反(默认设置);
                    root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);
                    no_root_squash:与rootsquash取反;
                    anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
                    anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);
                其它选项
                    secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
                    insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
                    sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
                    async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
                    wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
                    no_wdelay:若有写操作则立即执行,应与sync配合使用;
                    subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
                    no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

    简单配置

    /data *(async,insecure,no_root_squash,no_subtree_check,rw)
    
    
    /data:与nfs服务客户端共享的目录
    *:允许所有的网段访问,也可以使用具体的IP
    rw:挂接此目录的客户端对该共享目录具有读写权限
    async:资料同步写入内存和硬盘
    no_root_squash:root用户具有对根目录的完全管理访问权限。
    no_subtree_check:不检查父目录的权限。

    一定要记得给目录授权

    chown -R nfsnobody.nfsnobody /data

    设置服务开机启动并立即启动

    systemctl enable rpcbind.service
    systemctl enable nfs-server.service
    
    systemctl start rpcbind.service
    systemctl start nfs-server.service

    检验

    showmount -e 你的ip

    【2】再开一台机做客户端,在客户端上执行

    (/upfile是客户端的路径,/data是你服务端的路径)

    scp -r /upfile root@服务端ip:/data

    安装nfs,客户端不需要服务,但需要对应的命令

    yum install nfs-utils -y

    然后进行挂载。

    mount -t nfs 1.*.*.37:/data /upfile

     这个时候进入/upfile目录,可以看到1.*.*.37的/data下面的东西了。

    【3】常用指令

    查看挂载情况

    df -h

    解除挂载

    umount 本机被挂载的目录

     关于umount,经常遇到device busy的情况,这时候一般加个参数-l ,表示lazy umount,关于这个下面解释一下(来源于互联网)

    这是最常用的一种方式,这种方式要求被卸载分区是空闲的。如:
     
    # umount /dev/sdb1
     
    # umount /media/disk
     
    第一条命令把设备sdb上的第一个分区从系统上卸载。而第二条命令的作用则是卸载被挂载到/media/disk上的分区。
     
    注意,只有在分区未被程序使用的情况下才能成功用此法卸载,否则会报错,如:
     
    umount: /dev/sdb1: device is busy
     
     
     
    lazy umount
     
    lazy umount正是针对上面错误中的busy而提出的,即可以卸载“busy”的文件系统。
     
    举个例子,假设/dev/sdb1被mount到/media/disk,且处于“busy”状态,那么可以执行:
     
    # umount -l /media/disk
     
    请注意,该方法并不是完全安全的,lazy umount主要完成如下操作:
     
    立即从目录结构中实现卸载,即新进程将无法通过/media/disk访问/dev/sdb1。
     
    正在访问该文件系统的程序不受影响。即正在操作/media/disk的进程不会被打断,且仍可以读写/dev/sdb1中的所有文件。
     
    如果所有进程对/media/disk的操作都执行完,那么才真正地umount。
     
    由此可知,lazy umount并没有真正实现umount,仅用于特殊需要的情况,而用这种方法来卸载U盘是不安全的。
     
     
     
     
  • 相关阅读:
    Python3之random模块常用方法
    Go语言学习笔记(九)之数组
    Go语言学习笔记之简单的几个排序
    Go语言学习笔记(八)
    Python3之logging模块
    Go语言学习笔记(六)
    123. Best Time to Buy and Sell Stock III(js)
    122. Best Time to Buy and Sell Stock II(js)
    121. Best Time to Buy and Sell Stock(js)
    120. Triangle(js)
  • 原文地址:https://www.cnblogs.com/daysn/p/10216623.html
Copyright © 2011-2022 走看看