美文网首页
Linux下搭建并使用nfs(网络文件系统)

Linux下搭建并使用nfs(网络文件系统)

作者: 按时吃饭_63fb | 来源:发表于2019-07-25 15:50 被阅读0次

    NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端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服务器和若干台客户机。下面以一台服务器两台客户机为例(都是一样的linux机器,可以自己选择哪一台做服务器)

    比如我这里,选择了ip为10.0.0.26作为服务器,客户机ip分别是10.0.2.18,10.0.2.20.

    (以下代码加粗的为需要在机器上敲的指令,如果指令没有权限记得前面加上sudo

    1前期准备:

    1.安装nfs-utils和rpcbind

    先看系统有没有安装这两个东西:

    [root@sr126 ~]# rpm -qa |grep nfs

    [root@sr126 ~]# rpm -qa |grep rpcbind

    图1-检查是否安装过

    像图一就是已经安装过,如果没有安装则敲下面的指令进行安装。

    [root@sr126 ~]# yum-yinstallnfs-utils rpcbind

    2.设置开机启动服务

    [root@sr126 ~]# chkconfig nfs on

    [root@sr126 ~]# chkconfig rpcbind on

    2服务端配置:

    1.创建共享目录 

    [root@sr126 ~]# mkdir /share

    2.编辑/etc/exports文件添加如下内容 

    [root@sr126 ~]# vim /etc/exports 

    添加内容如下:

    /share 10.0.2.18(rw,sync)

    /share 10.0.2.20(rw,sync)

    (因为我需要共享到两个服务器里所以加了两条,大家可以根据需要进行删减。试过10.0.2.*的方式发现不行,所以就用了最笨的方法每条都加上了)

    图2-/etc/exports 内容

    网上的示例一般是这样的:

    /share 192.168.2.0/24(rw,no_root_squash,no_all_squash,sync)
    常见的参数则有:

    参数值    内容说明

    rw  ro    该目录分享的权限是可读写 (read-write) 或只读 (read-only),但最终能不能读写,还是与文件系统的 rwx 及身份有关。

    sync  async    sync 代表数据会同步写入到内存与硬盘中,async 则代表数据会先暂存于内存当中,而非直接写入硬盘!

    no_root_squash  root_squash    客户端使用 NFS 文件系统的账号若为 root 时,系统该如何判断这个账号的身份?预设的情况下,客户端 root 的身份会由 root_squash 的设定压缩成 nfsnobody, 如此对服务器的系统会较有保障。但如果你想要开放客户端使用 root 身份来操作服务器的文件系统,那么这里就得要开 no_root_squash 才行!

    all_squash    不论登入 NFS 的使用者身份为何, 他的身份都会被压缩成为匿名用户,通常也就是 nobody(nfsnobody) 啦!

    anonuid  anongid    anon 意指 anonymous (匿名者) 前面关于 *_squash 提到的匿名用户的 UID 设定值,通常为 nobody(nfsnobody),但是你可以自行设定这个 UID 的值!当然,这个 UID 必需要存在于你的 /etc/passwd 当中! anonuid 指的是 UID 而 anongid 则是群组的 GID 啰。

    设置配置生效:

    [root@sr126 ~]# exportfs -r

    启动服务

    [root@sr126 ~]# service rpcbind start

    [root@sr126 ~]# service nfs start

    本机查询nfs服务器

    [root@sr126 ~]# showmount -e localhost

    图3-本机查询 nfs服务器

    3客户端配置:

    查看服务器抛出的共享目录信息

    [root@sr418 ~]# showmount -e 10.0.0.26

    图4-服务器的共享目录信息

    [root@sr418 ~]# mount -t nfs 10.0.0.26:/share /mnt

    (这里是将本机的mnt目录与服务器的share目录共享,这样进入到mnt就可以看到服务器中share文件夹内所有内容啦)

    这里有可能会报无权限,是我遇见的大坑。一种可能就是你服务器端/etc/exports写的配置不对,还有一种可能是你没有给用户设置权限。也就是给服务器端当前用户配一下权限

    [root@sr126 ~]# sudo chown sparkuser:sparkuser -R share/

    mount成功后就可以查看挂载情况啦

    [root@sr418 ~]# df -h

    图5-挂载情况

    如上图5所示可以看到服务器端的share文件夹已经挂载到了当前客户端的mnt上了

    相关文章

      网友评论

          本文标题:Linux下搭建并使用nfs(网络文件系统)

          本文链接:https://www.haomeiwen.com/subject/qorcrctx.html