linux下NFS服务器的搭建配置教程

这里有两台主机,一台提供NFS服务,一台client ,具体信息如下:

client : 192.168.1.100
server: 192.168.1.200
domain: 361way

一、NFS 服务端配置

 

1、安装软件包

# yum -y install nfs-utils

2、启动服务

 
# systemctl start rpcbind nfs-server
nfs-server服务依赖rpcbind服务,如果不启动rpcbind服务时,直接启动nfs-server服务会出现报错:
# systemctl start nfs-server
Job for nfs-server.service failed. See 'systemctl status nfs-server.service' and 'journalctl -xn' for details.
#使用journalctl查看到的详细报错内容如下
Aug 08 23:18:21 www.111cn.net kernel: svc: failed to register nfsdv3 RPC service (errno 97).
Aug 08 23:18:21 www.111cn.net kernel: svc: failed to register nfsaclv3 RPC service (errno 97).
Aug 08 23:18:21 www.111cn.net sm-notify[2573]: Version 1.3.0 starting
Aug 08 23:18:21 www.111cn.net rpc.mountd[2567]: Caught signal 15, un-registering and exiting.
Aug 08 23:18:21 www.111cn.net systemd[1]: Stopped NFSv4 ID-name mapping service.
-- Subject: Unit nfs-idmapd.service has finished shutting down

3、配置idmapd.conf

 

# vim /etc/idmapd.conf

找到Domain项,修改为如下内容

Domain=361way.com

配置该处是为了解决指定uid和gid后,挂载显示为nobody的问题 ,详细可以查看我之前写的 --- nfs只能挂载为nobody的解决方法 。

 

4、exports 配置

 

编辑/etc/exports 增加需要共享的目录:

/nfs 192.168.1.0/24(rw)
括号内可以不加任何参数,默认是读的权限。需要注意的是IP地址和括号之间不能留有空格。

5、重启服务

 

重启服务或执行如下命令使上面的配置生效

# exportfs  -rv

exporting 102.168.1.0/24:/nfs

6、防火墙配置

 
# firewall-cmd --permanent --add-service=rpc-bind
# firewall-cmd --permanent --add-service=nfs
# firewall-cmd --reload

二、NFS客户端配置

 

1、安装软件包

# yum -y install nfs-utils

客户端也必须安装该包,不然在mount时会提示找不到nfs参数。如下:

# mount -t nfs 192.168.1.200:/nfs /mnt

mount: wrong fs type, bad option, bad superblock on 192.168.1.200:/nfs,

       missing codepage or helper program, or other error

       (for several filesystems (e.g. nfs, cifs) you might

       need a /sbin/mount.<type> helper program)

       In some cases useful info is found in syslog - try

# rpm -qf /usr/sbin/mount.nfs      //可以看出mount.nfs是属于该包中的一个命令,等价于mount -t nfs

nfs-utils-1.3.0-0.8.el7.x86_64

2、idmapd.conf配置

 

配置成和服务端的相同值,如下:

 

# vim /etc/idmapd.conf

找到Domain项,修改为如下内容

Domain=361way.com

3、启动rpcbind服务

 

# systemctl start rpcbind

4、开机挂载设置

 

编辑/etc/fstab 可以设置nfs-client主机开机后自动挂载服务端的目录,在/etc/fstab中增加如下行:

192.168.1.200:/nfs  /mnt                   nfs     defaults        0 0
除了这种挂载之外,还有autofs按需挂载,这个在后面讲autofs服务时会提到。

三、权限与参数

 

1、权限相关

按照上面的配置给rw权限,理论上来讲我们可以写入文件---nfs目录的为root默认创建,但实际上呢?

# ll
total 0
-rw-r--r--. 1 root      root      0 aug  8 23:40 a
# touch test
touch: cannot touch ‘test’: Read-only file system
可以ls 读取,无法写入。由于nfs为root用户创建,我们在nfs服务端(1.200)主机上先给nfs目录赋予777的权限:
服务端配置
# chmod 777 nfs
客户端测试
# touch test
# ls -l
total 0
-rw-r--r--. 1 root      root      0 Aug  8 23:40 a
-rw-r--r--. 1 nfsnobody nfsnobody 0 Aug  8 23:42 test

细心的你不知道有没有发现,默认在不指定映射的用户时,系统指定的是nfsnobody用户和组。所以针对不能写入的问题,我们除了可以将nfs目录的权限设置为777外,还可以在不改变nfs目录的默认权限外,通过将nfs用户和属主更改为nfsnobody用户,使客户端挂载后可以写入,两种方法任选其一。

2、参数相关

这里的参数有两部分---服务端参数、客户端参数。

先来看服务端在/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时的相关参数:

客户端mount时的相关参数:

参数 描述 默认值
suid
nosuid
如果挂载点上面有任何 SUID(粘滞位) 的 binary 程序时,
你只要使用 nosuid 就可以取消 SUID 的功能!
suid
rw
ro
如在服务允许写的权限,但为了安全起见,可以挂载时指定仅使用读取权限挂载 rw
dev
nodev
一般只有 /dev 这个目录挂载时才会用到 dev
exec
noexec
是否具有执行 binary file 的权限?
如果?煸氐闹皇亲柿锨 (例如 /home),那么可以选择 noexec
exec
user
nouser
是否允许使用者进行挂载与卸载功能?
如果要保护系?,最好不要提供使用者?行?煸赜胄对?/td>
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 方式?r,若加上 intr 参数, 则当 RPC 持续呼叫中,该次的呼叫是可以被中断的 (interrupted)。 ?]有
rsize
wsize
读(rsize)和写(wsize)的block块大小 (block size)。 这个设定值可以影响用户端与服务器端传送缓存区的大小。一来说,在LAN网络内,有足够内存时,这个值可以设的大一些。比如 32768 (bytes) ,用于提升数据传送速度。但也不能超过网络能够传送的最大值。 rsize=1024
wsize=1024

如,在挂载时可以按如下参数mount:

 

如,在挂载时可以按如下参数mount:

 
# mount -t nfs -o nosuid,noexec,nodev,rw \
> -o bg,soft,rsize=32768,wsize=32768 \
> 192.168.1.200:/nfs/public /mnt/public

四、nfs服务相关

 

在老发行版中的nfs中我们经常将服务分为如下几个:

rcp.nfsd  --- nfs服务提供者,主服务;

rpc.mountd --- 验证nfs客户端挂载相关程序;

rpc.lockd (非必须) --- 解决多个客户端同时挂载一个nfs服务端时,多个客户端同时写入一文件的问题,开启该服务可以避免该问题的发生,需客户端也同时开启该服务;

rpc.statd(非必须)--- 与rpc.lockd相关,避免多个客户端同时访问同一文件时可能造成文件损坏的问题,该服务会进行文件检测。使用时也需服务端和客户端同时开启;

rpc.idmapd ---解决nfs挂载时的nobody问题。

在查看新版本之前,我们先看下rhel7/centos7下的nfs服务相关的rpc服务和nfs文件,如下:

rpc相关服务:

# systemd-cgls|grep rp[c]

  ├─rpc-statd.service

  │ └─2501 /usr/sbin/rpc.statd --no-notify

  │ └─2502 /usr/sbin/rpc.idmapd

  │ └─2503 /usr/sbin/rpc.mountd

  ├─rpcbind.service

  │ └─2486 /sbin/rpcbind -w

nfs相关服务有:

# ll nfs*

-rw-r--r--. 1 root root 345 Mar  6  2015 nfs-blkmap.service

-rw-r--r--. 1 root root 215 Mar  6  2015 nfs-blkmap.target

-rw-r--r--. 1 root root 477 Mar  6  2015 nfs-client.target

-rw-r--r--. 1 root root 144 Mar  6  2015 nfs-config.service

-rw-r--r--. 1 root root 240 Mar  6  2015 nfs-idmapd.service

lrwxrwxrwx. 1 root root  18 Aug  8 23:18 nfs-idmap.service -> nfs-idmapd.service

lrwxrwxrwx. 1 root root  17 Aug  8 23:18 nfs-lock.service -> rpc-statd.service

-rw-r--r--. 1 root root 300 Mar  6  2015 nfs-mountd.service

lrwxrwxrwx. 1 root root  19 Aug  8 23:18 nfs-secure-server.service -> rpc-svcgssd.service

lrwxrwxrwx. 1 root root  16 Aug  8 23:18 nfs-secure.service -> rpc-gssd.service

-rw-r--r--. 1 root root 881 Mar  6  2015 nfs-server.service

lrwxrwxrwx. 1 root root  18 Aug  8 23:18 nfs.service -> nfs-server.service

-rw-r--r--. 1 root root 567 Mar  6  2015 nfs-utils.service

在新版本中默认情况下nfs-server和rpcbind服务开启后,nfs-mountd、nfs-lock、nfs-idmapd几个服务都默认会开启。而且从上面也可以看出nfs-lock 和 nfs-statd 两个对应的是同一个文件,可见在新版本中两个服务已进行了合并。

 

五、挂载时用户权限对应

 

还按上面的示例,不过我们将exports的配置更改为如下:

/nfs 102.168.1.0/24(rw,no_all_squash)
服务端共享了/nfs 目录

 

服务端有一个用户zhangshan,对应的用户uid和gid 都是1000 ,zhangshan用户创建一个文件server-zhangshan

客户端主机上uid和gid为1000对应的用户是lishi ,lishi 用户挂载后创建一个文件client-lishi

服务端还有一个用户wangwu ,uid和gid为5000 ,客户端上该uid 和 gid没有对应用户,wangwu创建了一个文件server-wangwu

当在客户端挂载后,在客户端上看到的文件server-zhangshan 、client-lishi 对应的用属主和属组,都是lishi ;而在服务端上看到的这两个文件的属主都是zhangshan ;在客户端上看到的server-wangwu看到的对应属主和属组是5000:5000 。所以客户端和服务器端都是以/etc/passwd、/etc/group中的uid和gid 对应相应的文件属主和属组的,如果两边的uid和gid不一致,就会出现上面描述的情况。在实际中应用中应尽量让目录对应的属主和属组的uid和gid 一致。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索权限
, 文件
, 参数
, 配置
, 用户
括号
linux搭建nfs服务器、linux nfs服务器配置、搭建linux服务器配置、nfs服务器搭建、ubuntu搭建nfs服务器,以便于您获取更多的相关知识。

时间: 2024-09-18 14:51:26

linux下NFS服务器的搭建配置教程的相关文章

Linux下Storm集群搭建配置教程

准备服务器 4台服务器,在每台hosts配置,命名为storm storm1 storm2 storm3,storm用作nimbus,drpc,admin等 java环境要配置好 部署zookeeper集群 为每台zookeeper目录建立data.log目录,并在data下新建文件myid,内容分别为1,2,3 zoo.cfg配置 dataDir=/usr/local/zookeeper/data dataLogDir=/usr/local/zookeeper/log server.1=sto

Linux下nfs服务器搭建技巧

  使用linux进行嵌入式开发的时候,为了方便开发,通常是将开发板挂载到宿主机的文件系统上,然后将代码放到共享给开发板的目录中,再通过开发板运行. 首先查看是否安装了 nfs 软件包,yum list installed | grep nfs.如果安装,则可进行下面设置. nfs 服务器端配置: 1.首先建立共享目录:在根目录下建立share目录.执行 mkdir /share 2.然后对 exports 文件进行编辑:vim /etc/exports 如果之前没有通过 nfs 共享过目录,该

Linux下apache+php+mysql搭建配置记录

第1章  环境说明 1.1 系统说明 CentOS 6.4 1.2 软件说明 httpd-2.4.10.tar.gz apr-util-1.5.3.tar.gz apr-1.5.1.tar.gz pcre-8.34.tar.gz php-5.6.0.tar.bz2 libmcrypt-2.5.3.tar.gz mysql-5.1.51.tar.gz 第2章  Apache搭建说明 2.1 安装依赖包 yum install make openldap-devel ntp vim-enhanced

windows下svn服务器快速搭建图文教程_win服务器

服务器端VISUALSVN SERVER 3.3.1 下载地址 客户端TortoiseSVN 1.8.13下载地址: 1.安装服务器端程序  选择服务器和管理界面都安装 选择安装路径和版本库存放路径,选择版本库的访问方式为http或https 2. 创建新用户 users上右击创建两个测试用户xujian和yuanhai     3.创建两个组group1和group2,并把用户添加到用户组 4.创建版本库 在Repositories上右键-->Create NewRepository-->创

linux下svn结合apache的配置教程

1.安装apahce apr-1.4.8.tar.gz apr-util-1.5.2.tar.gz httpd-2.2.27.tar.gz 安装apr tar -zxvf apr-1.4.8.tar.gz  cd apr-1.4.8  ./configure --prefix=/usr/lcal/apr  make && make install 安装apr-util tar -zxvf apr-util-1.5.2.tar.gz  cd apr-util  ./configure --p

Linux下源码编译安装配置SVN服务器的步骤分享_Linux

说明: SVN(subversion)的运行方式有两种: 一种是基于Apache的http.https网页访问形式: 还有一种是基于svnserve的独立服务器模式. SVN的数据存储方式也有两种:一种是在Berkeley DB数据库中存储数据:另一种是使用普通的文件FSFS存储数据. 由于Berkeley DB方式在使用中有可能锁住数据,一般建议使用FSFS方式更安全. 实现目的: 以svnserve的独立服务器模式,使用FSFS数据存储方式源码编译安装配置SVN服务器. 具体操作: 操作系统

Linux下DNS服务器搭建详解

Linux下DNS服务器搭建详解 简介: DNS服务器的作用就是就好比生活中的电话簿.114查号台一样,为各种网络程序找到对应目标主机的IP地址或对应的主机域名. DNS系统的作用: 正向解析:根据主机名称(域名)查找对应的IP地址(实际应用中最多的) 反向解析:根据IP地址查找对应的主机域名(不常用,一般用于搭建邮件服务器时.) 根据服务器与所提供域名解析记录的关系,将DNS服务器分为不同的角色: 缓存域名服务器 也称为 唯高速缓存服务器 通过向其他域名服务器查询获得域名->IP地址记录 将域

阿里云Linux下FTP服务器搭配配置

  阿里云服务器是国内目前 最好的一个云服务器了,不过价格方面也比较贵了,下面我们来给各位介绍在阿里云Linux下FTP服务器搭配配置了,大概方法 与linux下搭配ftp服务器区别不大,只是一些小细节了. 一.aliyun Linux(Redhat)安装vsftp软件 1.更新yum源 首先需要更新系统的yum源,便捷工具下载地址:update_source.zip.这里需要注意的是,目前文件无法传输,所以想要运行 update_source.sh 只能用文本打开,复制粘贴到阿里云服务器系统运

CentOS 7.x下的LEMP环境搭建详细教程_Linux

最近由于项目需求,将服务器从CentOS6升级到CentOS7,对应的PHP版本也升级到PHP5.6.我们熟悉的有LEMP环境一键安装包,但是本文我们将单独安装各个组件模块,并搭建一个完整的PHP运行平台. 我们常说的LNMP环境是指Linux/nginx/MySQL/PHP组合,而LEMP是什么呢?其实Nginx的发音是Engine-X = E,LEMP包是由Linux.nginx.MariaDB/MySQL和PHP组成的,那么看来LEMP和LNMP是一样的,而现在业内习惯性的称作LEMP.M