• Linux搭建NFS服务


    一、NFS服务简单介绍

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

    二、NFS权限参数说明

    权限

    说明

    rw

    表示可读写权限

    ro

    表示只读权限

    sync

    请求或写入数据时,数据同步写入到NFSServer的硬盘才返回(优点,数据安全不会丢,缺点,性能比不启用该参数要差)

    async

    写入时数据会先写到内存缓冲区,只到硬盘有空档才会再写入磁盘,这样可以提高写入效率!;风险为若服务器宕机或不正常关机,会损失缓冲区为写入磁盘的数据(解决办法:服务器主板加电池或加UPS不间断电源)!

    no_root_squash

    访问NFS Server共享的用户如果是root的话,它对该共享目录具有root权限。这个配置原本是为无盘客户端准备的,用户避免应用

    root_squash

    如果访问NFS Server共享目录的用户是root,则它的权限将被压缩或匿名用户,同时它的UID和GID通常会变成nfsnobody帐号身份

    all_squash

    不管访问NFS Server共享目录的用户身份如何,它的权限都将被压缩成匿名用户,同时它的UID和GID通常会变成nfsnobody帐号身份。在早期多个NFS客户端同时写入NFS Server数据时,这个参数很有用

    *在生产中配置NFS的重要技巧

    1)、确保所有客户端服务器对NFS共享目录都具备相同的用户访问权限

           a、all_squash把所有客户端都压缩成固定的匿名用户(UID相同)

           b、就是aninuid,anongid指定的UID和GID的用户

    2)、所有的客户端和服务端都需要有一个相同的UID和GID用户,即nfsnobody(UID必须相同)

    anonuid

    参数以anon*开头即指anonymous匿名用户,这个用户的UID设置值通常为nfsnobody的UID值,当然也可以自行设置这个UID值。但是,UID必须存在于/etc/passwd中。在多NFS Clients时,如多台Web Server共享一个NFS目录,通过这个参数可以使得不同的NFS Clients写入的数据对所有NFS Clients保持同样的用户权限,即为配置的匿名UID对应用户权限,这个参数很有用,一般默认即可

    anongid

    同anonuid,区别就是把uid(用户id)换成gid(组id)

    noatime

    在文件系统上不更新inode访问时间

    nosuid

    不允许设置用户标识或设置组标识为才能生效

    intr

    当服务器宕机或者无法到达时,允许中断NFS请求

    noexec

    当服务器宕机或者无法到达时,允许中断NFS请求

    rsize=8192和wsize=8192

    通过设定大的同时传输的数据块大小(bytes),以提高NFS读写的速度

    nodiratime

    不允许更新文件系统上的目录 inode 访问记录

    三、搭建NFS服务

    1、NFS服务搭建环境说明

    系统环境:CentOS7.5  64位

    NFS服务端:

    •主机名:nfs-master

    •IP地址:172.16.2.31

    NFS客户端

    •主机名:nfs-client

    •IP地址:172.16.2..32

    2、NFS服务端搭建步骤

    第一步:安装并检查NFS和RPC服务

    yum install nfs-utils rpcbind -y
    rpm -qa nfs-utils rpcbind

    第二步:启动RPC服务和NFS服务 (必须先启动RPC服务,然后再启动NFS服务)

    systemctl start rpcbind
    systemctl start nfs
    ps -ef|grep rpc
    ps -ef|grep nfs
    lsof -i:111
    rpcinfo -p localhost

    第三步:设置开机自启动并检查

    systemctl enable rpcbind
    systemctl enable nfs
    systemctl list-unit-files --type=service|grep "enabled"|egrep "rpcbind|nfs"

    第四步:创建共享目录

    mkdir /data 
    chown -R nfsnobody.nfsnobody /data
    ls -ld /data

    第五步:配置共享/data目录

    cat>>/etc/exports<<EOF
    #NFS server share directories
    /data 172.16.2.0/24(rw,sync)
    EOF
    cat /etc/exports

    第六步:平滑重启NFS服务并检查服务

    systemctl reload nfs
    cat /var/lib/nfs/etab

    第七步:本地查看挂载目录

    showmount -e 172.16.2.31

    3、NFS客户端搭建步骤

    第一步:安装NFS和RPC服务并检查

    yum install nfs-utils rpcbind -y
    rpm -qa nfs-utils rpcbind

    第二步:启动RPC服务(不需要启动NFS服务,原因是不安装NFS服务的话没有showmount这个命令)

    systemctl start rpcbind 
    ps -ef|grep rpc
    lsof -i:111

    第三步:设置开机自启动并检查

    systemctl enable rpcbind
    systemctl list-unit-files --type=service|grep "enabled"|grep "rpcbind"

    第四步:检查服务端的NFS挂载目录是否OK

    showmount -e 172.16.2.31

    第五步:挂载设置开机自动挂载

    mount -t nfs 172.16.2.31:/data /mnt
    echo "mount -t nfs 172.16.2.31:/data /mnt">>/etc/rc.local
    
    #提示:也可以放入/etc/fstab,如果要放入/etc/fstab,需启用netfs服务。这是因为fstab会优先于网络被Linux系统加载。网络没启动时执行fstab会导致连不上NFS服务器端,无法实现开机自动挂载。

    第六步:查看是否挂载成功

    [root@nfs-client ~]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda2 57G 1.6G 53G 3% /
    devtmpfs 225M 0 225M 0% /dev
    tmpfs 236M 0 236M 0% /dev/shm
    tmpfs 236M 5.6M 230M 3% /run
    tmpfs 236M 0 236M 0% /sys/fs/cgroup
    /dev/sda1 190M 93M 84M 53% /boot
    tmpfs 48M 0 48M 0% /run/user/0
    172.16.2.31:/data 57G 1.6G 53G 3% /mnt
  • 相关阅读:
    分页得到查询总数的方法 mysql
    input[type="file"] change事件第二次不触发
    小程序post请求,后台接收不到数据的解决方法
    Docker安装Kibana
    Docker安装ElasticSearch
    Docker安装Redis
    Docker安装Tomcat
    Docker安装 Nginx
    mysql服务设置远程连接 解决1251 client does not support ..问题
    Docker 安装MySQL容器
  • 原文地址:https://www.cnblogs.com/wutao666/p/9772229.html
Copyright © 2020-2023  润新知