Linux下的NFS服务

一:概念:

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

最早由sun公司开发,是类unix系统间实现磁盘共享的一种方法。

缺点:

1:nfs属于本地文件系统,在高并发场景和大存储量下,需要使用分布式存储mfs,  FastDFS, tfs(taobao)等。

2:客户端的数据都是通过明文传送。客户端没有用户认证机制,安全性能一般,所以建议一般在局域网内使用。

3:容易发生单点故障,即server服务器宕机所有的客户端都不能访问。

使用场景:web集群中NFS服务器主要用于存储用户上传的信息,方便集群中机器获取用户数据。如图片 附件 头像 视频 音频。

二:工作原理

NFS服务依赖于RPC(Remote Procedure Call)服务。nfsd默认端口2049,实际使用过程中因为需要提供不同的服务,因此NFS启动时还会随机调用系统的空闲端口。在centos5.x中默认调用1024以下端口,centos6.x后默认调用的端口号一般较大,30000以上。因为NFS随机端口的原因所以需要RPC服务来和client端确认传输端口等。

因为NFS服务启动时需要向RPC注册端口信息,所以RPC要在NFS服务启动之前启动。

在NFS server上创建用于共享的目录/data,client用mount将/data挂载到自己本地一个目录上,挂载目录可以和/data名称不同。将挂载信息写入本机开机启动文件里 如 /etc/rc.local

客户端无需启动NFS服务,但需要启动RPC服务。

三:实现


主机


角色


ip


cnetos6.5


NFS server


192.168.1.240


centos6.5


NFS client


192.168.86.131

1:安装软件

NFS server需要至少安装两个软件nfs-utils 和rpcbind。客户端只要安装rpcbind。

rpm -qa nfs-utils rpcbind

安装完nfs服务一般会自动生成配置文件exports,如果没有就自己创建一个 /etc/exports


1

2


yum install -y nfs-utils  rpcbind

cat /etc/exports

  

创建共享目录,将文件所有者指定为nfsnobody。nfsnobody用户在安装nfs时会自动创建。

如果不指定共享用户,则nfs系统在分配权限时会以用户uid为主,客户端如果用root账户会在服务器被自动降级至nfsnobody。


1

2


mkdir  -p /data/nfs

chown -R nfsnobody:nfsnobody /data/nfs

2server配置文件

格式:共享目录     指定共享对象(共享参数)

例: /data   192.168.1.0/24(rw,sync)

将 /data  共享给192.168.1.x ,客户端权限rw

其中共享对象可以用通配符,比如 * 代表所有地址。

配置参数:

rw: 读写

ro :只读

sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;

async:是大数据时使用,是先写到缓存区,必要时再写到磁盘里。

all_squash:所有访问用户都映射为匿名用户或用户组;
no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组;

root_squash(默认):将来访的root用户映射为匿名用户或用户组;

no_root_squash:来访的root用户保持root帐号权限;

wdelay(默认):检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率;

no_wdelay:若有写操作则立即执行,应与sync配合使用;

subtree_check
:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限;

no_subtree_check(默认):即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

配置server参数


1

2

3


#nfs dir /data/nfs

/data/nfs  192.168.1.0/24(rw)

/data/nfs  192.168.86.131(rw)

也可以写成一行


1


/data/nfs  192.168.1.0/24(rw) 
192.168.86.131(rw,sync)

启动服务:注意先启动rpcbind再启动nfs


1

2

3

4

5

6

7

8


[[email protected] data]# service rpcbind start

Starting rpcbind: [ OK ]

[[email protected] data]# service nfs start

Starting NFS services: [ OK ]

Starting NFS quotas: [ OK ]

Starting NFS mountd: [ OK ]

Starting NFS daemon: [ OK ]

Starting RPC idmapd: [ OK ]

查询nfs挂载,showmount  -e
 192.168.1.240 后面可以接ip来查看。


1

2

3


[[email protected] data]# showmount -e

Export list for localhost:

/data/nfs 192.168.1.0/24,192.168.86.131

NFS服务开启后,查看共享目录参数


1

2

3


[[email protected] data]# cat /var/lib/nfs/etab

/data/nfs   192.168.86.131(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,root_squash,no_all_squash)

/data/nfs   192.168.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,root_squash,no_all_squash)

让nfs服务开机启动


1

2

3

4

5

6

7


[[email protected] ~]# chkconfig rpcbind on

[[email protected] ~]# chkconfig nfs on

[[email protected] ~]# chkconfig --list
rpcbind

rpcbind 0:off  
1:off  
2:on    3:on    4:on    5:on    6:off

[[email protected] ~]# chkconfig --list nfs

nfs 0:off   1:off  
2:on    3:on    4:on    5:on    6:off

3:客户端配置

安装rpcbind和nfs,启动rpcbind,nfs可以不启动。

客户端挂载nfs共享目录


1


mount -t nfs
192.168.1.240:/data/nfs /nfs    #挂载nfs server的/data/nfs 到/nfs


1

2

3

4

5

6

7

8


[[email protected] ~]# df -h

Filesystem           
Size  Used Avail Use% Mounted on

/dev/sda2             9.5G 
2.0G  7.1G  22% /

tmpfs                
491M     0  491M   0% /dev/shm

/dev/sda1             190M  
33M  147M  19% /boot

/dev/sdb1             4.8G  
11M  4.6G   1% /data

192.168.1.240:/data/nfs

2.9G 
2.7G  126M  96% /nfs  # nfs挂载信息

注:一般不将nfs挂载信息写入fstab,因为nfs依赖于rpc服务,rpc服务启动晚于fstab时会出错。可以将挂载信息写入 /etc/rc.local


1

2

3

4


vim  /etc/rc.local

#mount nfs_data

mount -t nfs
192.168.1.240:/data/www/image/  /data/www/image/

mount -t nfs
192.168.1.240:/data/www/user/  /data/www/user/

  

关于默认账户

nfs客户端写数据除了nfs配置文件要有rw权限,对于目录也要有对应操作权限。

如果/data/nfs目录没有给写入权限,即使exports里设置了rw也是没有权限写入的。客户端默认操作账户为nfsnobody。


1

2

3

4

5


[[email protected] ~]# cat /var/lib/nfs/etab

/data/nfs   192.168.86.131(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,root_squash,no_all_squash)

/data/nfs   192.168.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,root_squash,no_all_squash)


查看/var/lib/nfs/etab其中 anonuid=65534,anongid=65534 为默认账户uid,即nfsnobody的默认uid

查看已挂载设备挂载参数 cat /proc/mounts 


1

2


[[email protected] ~]# cat /proc/mounts |grep 192

192.168.1.240:/data/nfs /mnt nfs4
rw,noexec,relatime,vers=4,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.240,minorversion=0,local_lock=none,addr=192.168.1.240
0 0

  

客户端挂载优化参数

noatime
      不更新文件的inode访问时间戳,文件很多时此参数可以提高效率。

nodiratime
  不更新目录的访问时间戳,同上。

nosuid
        关闭挂载目录的suid

noexec
       不允许执行二进制文件。shell脚本无法直接使用,但是用sh  xxx.sh依然可以调用。

rsize
          系统每次读取的最大字节,centos6.5默认131072,此参数过小会影响系统的I/O效率.

wsize
         系统每次写入的最大字节,同上

defaults
使用默认的选项。默认选项为rw、suid、dev、exec、anto
 nouser与async。

例: mount  -o  nosuid  noexec
noatime   -t nfs  192.168.1.240:/data/nfs  /mnt

卸载挂载点,如果提示 /mnt: device is
busy
,可以用lf参数强制卸载

umount  -lf  /mnt

原文地址:https://www.cnblogs.com/yangjiquan/p/11368325.html

时间: 2024-10-11 11:09:39

Linux下的NFS服务的相关文章

Linux 下部署 NFS 服务

Linux 下部署 NFS 服务 一般应用场景: 服务器端分配出共享的磁盘空间, 被一个或者多个客户端挂载,来实现数据共享,集中管理与维护和访问控制等. 步骤: 服务器端 - CentOS 7 安装必要的包: nfs-utils , rpcbindyum -y install nfs-utilsyum -y install rpcbind 配置 etc/exports 文件exports配置的参数选项比较多,具体细节用man去查看和了解.这里对主要4个参数做一个说明: all_squash :

Linux下开启nfs服务

1.什么是NFS(Network FileSystem) NFS 就是 Network FileSystem 的缩写,最早之前是由 Sun 所发展出来的.他最大的功能就是可以透过网络,让不同的机器.不 同的操作系统.可以彼此分享个别的档案 ( share file ),所以,也可以简单的将他看做是一个 file server 呢!这个  NFS Server 可以让你的 PC 来将网络远程的 NFS 主机分享的目录,挂载到本地端的机器当中,所以,在本地端的机器看起来,那个远程主 机的目录就好象是

linux下搭建NFS服务(指定WWW用户)

第1章 搭建NFS服务(指定WWW用户) 1.1 服务端操作(在nfs01服务端) 1.1.1 安装NFS服务 rpm -qa nfs-utils rpcbind yum install nfs-utils rpcbind -y rpm -qa nfs-utils rpcbind 1.1.2 启动服务 /etc/init.d/rpcbind start /etc/init.d/nfs start rpcinfo -p localhost chkconfig nfs on chkconfig rp

linux下配置NFS服务

1.服务器端配置1).查看NFS安装包 #rpm -qa nfs -utils rpcbind2).安装软件包名称nfs-utils-1.2.3-70.el6_8.2.x86_64rpcbind-0.2.0-12.el6.x86_643).启动NFS服务a.启动并查看RPC服务#/etc/init.d/rpcbind start#/etc/init.d/rpcbind statusb.启动并查看NFS服务#/etc/init.d/nfs start#/etc/init.d/nfs statusc

linux下设置NFS服务

//参照<鸟哥的Linux私房菜>之“简易NFS服务器设定”,只陈述设置过程 1. 关于NFS(Network FileSystem)和RPC(Remote Procedure Call) NFS,即网络文件系统,作用:可以使本地主机通过网络将远程NFS主机分享的目录挂载到本地主机之中. RPC,“远程过程调用”,NFS使用RPC协议进行数据传递.所以NFS Server和Client均要启动RPC才能进行数据传递. 2.Server端的设定 /etc/exports NFS的主要配置文件 /

Linux下的NFS服务配置

NFS == network file system 网络文件系统,通过网络通信去实现文件的读取和写入 需要有一个server端和client端的通信形式,本机可以访问远程机的文件 有A B C 三台机器,在A上做一个NFS,使得B和C都能访问,同步共享文件 步骤: 服务端IP 192.168.174.128 下载 yum install -y nfs-utils rpcbind (rpcbind用来客户端与服务器端之间的通信) vim /etc/exports 写入 /mnt 192.168.

局域网内Linux下开启ftp服务的“曲折路”和命令复习

今天主要学习了Linux下网络配置以及vsftp(FTP)和samba的服务配置,学习起来,难度也就一般,并没有特别难,可是在可以做实验的时候,却并没有自己想像的那么顺利,可见,很多事情看起来不难,做起来却又是另外一回事.特作此篇以作纪念. 一:vsftpd 的配置. 1,首先,最好已经进行yum源的配置(如果没有配置,可以搜索我的日记,做好配置),方便于我们安装vsftpd. 只需一句命令即可: [[email protected] ~]# yum -y install vsftpd 喝杯茶,

linux下安装telnet服务

安装telnet服务 1.用root身份进入到tec/xinetd.d目录,然后再安装telnet服务 yun install telnet-server -y 2.打开配置文件 vim telnet 3.  重启xinetd服务 service xinetd restart 4.如果连接不上,关闭防火墙 iptables -F 以上是本菜鸟的实验步骤,不足之处还请各位大神指正 linux下安装telnet服务,布布扣,bubuko.com

linux下的apache服务自启动的几种方式

1,如果是安装包安装在Linux系统下,那么可以使用 [[email protected] ~]# service httpd restart 从而可以开启或者重启apache服务 与此同时,它的标准方式是: [[email protected] ~]# /etc/rc.d/init.d/httpd start 或者[[email protected] ~]# /etc/rc.d/init.d/httpd stop 或者[[email protected] ~]# /etc/rc.d/init.