Linux下部署NFS服务 局域网共享文件夹

NFS

一、NFS简介和架构图

  • NFS是Network File System的缩写,即网络文件系统。一种使用于分散式文件协定,功能是通过网络让不同的机器、不同的操作系统能够分享个人数据,让应用程序通过网络可以访问位于服务器磁盘中的数据。
  • NFS在文件传送或信息传送的过过程中,依赖于RPC协议。RPC,远程过程调用(Remote Procedure Call),是使客户端能够执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,就是因为NFS使用了RPC提供的传输协议,可以说NFS就是使用PRC的一个程序。
  • NFS存储服务器主要用于用户上传的数据,图片音频、等信息

二、NFS适用场景

  • 2.1 NFS 最好是部署在局域网 ,不要在公网上 ;
  • 2.2 NFS 只能在 linux 上使用 (如果想让 windows 和 Linux 之间实现数据共享建议使用 FTP 或者 samba);
  • 2.3 NFS 适合在中小型企业使用

三、服务端配置(IP:10.10.50.9)

  • 检查系统中是否安装 NFS 和 RPC ,并进行安装NFS 和RPC

    [root@NFS ~]# rpm -qa nfs-utils rpcbind

    [root@NFS ~]# yum -y install nfs-utils rpcbind       #使用 yum 安装nfs 和 rpc  
  • 在服务端创建共享目录/data/nfs/

    [root@NFS ~]# mkdir -p /data/nfs/
    [root@NFS ~]# chmod 777 /data/nfs/
    [root@NFS ~]# ll /data/
  • 编辑配置NFS配置文件

    [root@NFS ~]# cat >>/etc/exports<<EOF
    > /data/nfs 10.10.15.20(rw,sync,no_subtree_check) 10.10.12.198(rw,sync,no_subtree_check)
    > EOF
    [root@NFS ~]# cat /etc/exports
    /data/nfs 10.10.15.20(rw,sync,no_subtree_check) 10.10.12.198(rw,sync,no_subtree_check)
    [root@NFS ~]#

其中:/data/nfs 是服务器端共享的目录
10.10.15.20和10.10.12.198 是共享目录的客户端ip地址(rw,sync),其中rw代表拥有读写的权限,sync代表数据同步写入NFS服务器端的硬盘中。也可以用async,async是大数据时使用,是先写到缓存区,再写到磁盘里。no_subtree_check 即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率。

    [root@NFS ~]# exportfs -r                           #让配置文件生效 
  • 启动RPC和NFS服务

    service rpcbind start #启动rpc 
    service nfs start #启动nfs 
    service rpcbind status #查看rpc运行状态
    service nfs status #查看nfs运行状态
  • 查看NFS服务是否向rpc注册端口信息

    [root@NFS ~]# rpcinfo -p localhost

选项与参数:

-p :针对某 IP (未写则预设为本机) 显示出所有的 port 与 porgram 的信息;
-t :针对某主机的某支程序检查其 TCP 封包所在的软件版本;
-u :针对某主机的某支程序检查其 UDP 封包所在的软件版本;
  • 在NFS设定妥当之后,可以先在服务端自我测试一下是否可以联机!利用 showmount 这个指令来查看!

    [root@NFS ~]# showmount -e localhost
    Export list for localhost:
    /data/nfs     10.10.12.198,10.10.15.20
    [root@NFS ~]#

选项与参数:

    -a :显示目前主机与客户端的 NFS 联机分享的状态;
    -e :显示某部主机的 /etc/exports 所分享的目录数据。

参数说明:

    #rpcinfo  -p     检查nfs服务是否有注册端口信息
    #showmount -e    检查共享目录信息 

四、客户端配置(IP:10.10.12.198,10.10.15.20)

  • 查看系统中是否有nfs和rpc

    [root@rsync ~]#  rpm -qa nfs-utils rpcbind
  • 进行安装服务,并启动服务

    [root@rsync ~]# yum -y install nfs-utils rpcbind

    [root@rsync ~]# service rpcbind start #启动rpc 
    [root@rsync ~]# service nfs start #启动nfs 
  • 创建挂载目录

    [root@rsync]# mkdir -p /data/nfs
  • 查看客户端是否可以收到服务端的共享信息

    [root@rsync nfs]# showmount -e 10.10.50.9
    Export list for 10.10.50.9:
    /data      10.10.12.198,10.10.15.20
    [root@rsync nfs]#
  • 进行nfs 共享目录的挂载

    mount -t nfs 10.10.50.9:/data/nfs /data/nfs

    [root@localhost nfs]# df -h
    Filesystem               Size  Used Avail Use% Mounted on
    /dev/mapper/centos-root   50G   23G   28G  45% /
    devtmpfs                 3.8G     0  3.8G   0% /dev
    tmpfs                    3.8G     0  3.8G   0% /dev/shm
    tmpfs                    3.8G  8.9M  3.8G   1% /run
    tmpfs                    3.8G     0  3.8G   0% /sys/fs/cgroup
    /dev/mapper/centos-home  407G  6.0G  401G   2% /home
    /dev/sda1               1014M  147M  868M  15% /boot
    tmpfs                    770M     0  770M   0% /run/user/0
    10.10.50.9:/data/nfs   50G   21G   30G  42% /data/nfs

服务端:

    [root@NFS nfs]# echo "nfs" > test.txt

客户端:

    [root@rsync data]# cat /data/nfs/test.txt
    nfs


五、问题

1,在部署nfs的时候,共享了一个文件夹。为了让远程nfs客户端挂载这个文件夹的时候都有可读写权限,我需要把服务器上的用户uid、gid设置成nfs服务端文件夹一样的权限。不过因为之前新建的用户uid、gid都是系统自动生成的,几台服务器之前某个用户的uid、gid可能都不一样,

解决方法

1. 需要把这个uid、gid都设置成统一某个值。

# usermod -u 2005 thn
# groupmod -g 2005 thn

  thn用户的家目录下面的文件属主和属组会在命令执行后自动修改成新的uid、gid对应的属主 属  组,但是其他文件目录需要手动修改。手动修改的命令也比较简单。

# find / -user 2001 -exec chown -h thn {} \;
# find / -group 2001 -exec chgrp -h thn {} \;

 这样用户和组的uid、gid就修改好了。可以用id命令看下是否修改的如我们所愿。

# ls -l /home/thn/
# id -u thn
# id -g thn
# grep thn /etc/passwd
# grep thn /etc/group

2.

服务端

# echo N > /sys/module/nfsd/parameters/nfs4_disable_idmapping
# service rpcbind restart

客户端

# echo N > /sys/module/nfs/parameters/nfs4_disable_idmapping
# service rpcbind restart

现在在服务端和客户端将发送字符串主体而不是数字 ID

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Linux中使用NFS(Network File System)共享文件夹,可以按照以下步骤进行设置: 1. 在两台电脑上安装NFS软件包。在大多数Linux发行版上,可以通过包管理器来安装。例如,在Ubuntu上,可以使用以下命令安装: ``` sudo apt-get install nfs-kernel-server nfs-common ``` 2. 在服务器上创建一个共享文件夹。可以选择一个现有的文件夹或创建一个新的文件夹。假设要共享的文件夹是`/home/user/shared`。 3. 编辑NFS服务器的导出文件`/etc/exports`。可以使用文本编辑器进行编辑,例如: ``` sudo nano /etc/exports ``` 4. 在配置文件中添加以下内容: ``` /home/user/shared <client_IP>(rw,sync,no_subtree_check) ``` 将`<client_IP>`替换为允许访问共享文件夹的客户端IP地址。如果要允许多个客户端访问,可以用逗号分隔它们。 5. 保存并关闭文件。 6. 重新加载NFS服务器配置: ``` sudo exportfs -a ``` 7. 在客户端电脑上,安装NFS软件包(如果尚未安装)。 8. 在客户端电脑上创建一个用于挂载共享文件夹的目录。假设要将共享文件夹挂载到`/mnt/shared`目录。 9. 使用以下命令在客户端上挂载共享文件夹: ``` sudo mount <server_IP>:/home/user/shared /mnt/shared ``` 将`<server_IP>`替换为NFS服务器的IP地址。 10. 现在,你可以在客户端上访问`/mnt/shared`目录,其中包含NFS服务器共享文件夹的内容。你可以在此目录中读取和写入文件。 请注意,为了进行访问,你可能需要在防火墙中允许NFS流量(默认为UDP端口2049)。 这样,你就可以在两台Linux电脑之间使用NFS共享文件夹及其子文件了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值