NFS:Network File System

使用NFS需要启用RPC(remoteprocedure call),RPC可以指定每个NFS功能所对应的端口号,重启RPC后,RPC所管理的所有NFS功能服务都需重新向RPC注册。

设置NFS需要安装nfs-utils和portmap程序,使用rpm –q可以查看是否安装。

  • nfs-utils:提供rpc.nfsd和rpc.mountd两个daemon与其他document说明文件。

  • rpc.nfsd:管理client是否能够登入主机,及对登入者ID的辨别。

  • rpc.mountd:管理NFS文件系统,读取/etc/exports对比client取得相应的权限。

  • portmap:端口映射;在启动rpc之前做好端口映射工作。

NFS的配置文件:

  • /etc/exports:NFS配置文件

  • /var/lib/nfs/*tab:NFS服务器日志放置路径;etab记录共享出来的目录完整权限设置值;xtab记录曾经连接到此NFS主机的相关客户端数据

NFS的两个命令:

  • /usr/sbin/exportfs:维护NFS共享资源;重新共享/etc/exports变更目录或将NFS server共享目录卸载或重新共享

  • /usr/sbin/showmount:在客户端查看NFS服务器共享出来的目录资源

/etc/exports配置文件

/etc/exports配置文件说明

格式:
<输出目录> [ 客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)]

共享目录必须使用绝对路径,权限部分依照不同的权限共享给不同的主机,括号内是设置权限参数的位置,权限不止一个时,使用 , 隔开,主机名和括号连在一起。

主机名设置可以使用网段:192.168.1.0/24或完整IP:192.168.1.23;也可以使用主机名称,但此主机名称需要存在于/etc/hosts中或使用DNS可以找到,找到IP即可,主机名支持通配符,如*?

/mnt/sda4/share/images     192.168.23.129(rw)
# 设置共享目录/mnt/sda4/share/images,仅192.168.23.129主机允许访问此共享目录,具有读写权限 /mnt/sda4/share/data 192.168.23.129(rw) *(ro)
# 设置共享目录/mnt/sda4/share/data,192.168.23.129可以读写该共享目录,其他主机只可以读取该共享目录 /mnt/sda4/share/icon 192.168.23.129(no_root_squash)
# 设置共享目录/mnt/sda4/share/icon,仅192.168.23.129可以访问和读写,root登录时拥有root权限 /mnt/sda4/share/ds 192.168.23.0/24(rw)
# 设置共享目录/mnt/sda4/share/ds,仅有192.168.23.0/24网段的主机才可访问和读写此目录文件 /mnt/sda4/share/diaos *(rw,all_squash,anonuid=500,anongid=500)
# 设置共享目录/mnt/sda4/share/diaos,所有主机都允许访问此共享目录,具有读写权限,但他们访问该共享目录时,已将其UID、GID设置成500。NFS server主机中UID、GID=500的权限已经设置好

权限参数说明:

  • Rw:read-write可读写的权限
  • Ro:read-only只读权限
  • no_root_squash:登入nfs主机使用共享目录的用户,如果是用户root,对于此共享目录具有root权限,不建议使用。
  • root_squash:登入nfs主机使用共享目录的用户,如果是用户root,此用户权限将被压缩为匿名用户,其UID和GID都会被压缩为nobody(nfsnobody)系统账号的身份。
  • all_squash:共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
  • no_all_squash 保留共享文件的UID和GID(默认)。
  • anonuid:xxx;指定nfs服务器/etc/passwd文件中匿名用户的UID。
  • anongid:xxx;指定nfs服务器/etc/passwd文件中匿名用户的GID。
  • sync:数据同步写入到内存与硬盘中。
  • async:数据先暂存于内存中,而非直接写入硬盘。
  • secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置)。
  • insecure:允许客户端从大于1024的tcp/ip端口连接服务器。
  • wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置)。
  • no_wdelay:若有写操作则立即执行,与sync配合使用。
  • hide:在NFS共享目录中不共享其子目录。
  • no_hide:共享NFS目录的子目录。
  • subtree_check:如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)。
  • no_subtree_check:和上面相对,不检查父目录权限。
  • subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置)。
  • no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率。

权限说明:

1.NFS server和NFS client具有相同的UID和账号

如果NFS server和NFS client具有相同共享文件账号和相同UID,客户端登入NFS server时,就会拥有/etc/exports设置的权限

2.NFS server和NFS client具有不同的账号

如果NFS client不拥有NFS server共享文件账号,或NFS client的账号在NFS server不存在,是否可以读写共享目录,需要查看NFS server的权限而定,其身份会变为匿名用户nobody

3.NFS client的身份为root

默认情况下,客户端的root身份会被压缩成匿名用户nobody

一、服务器端配置

创建共享目录

mkdir /home/share # 创建分享目录
chown nobody.nogroup /home/share # 修改分享目录权限
chmod 777 /home/share

创建或修改/etc/exports配置文件

vim /etc/exports
cat /etc/exports
# /home/share 192.168.102.15(rw,sync) *(ro)
# 配置说明: 对192.168.102.15赋予读写权限,其他机器仅有只读权限。 # 重启portmap和nfs服务
service portmap restart
service nfs restart
exportfs

重新修改 /etc/exports,执行 exportfs [-aruv] 命令

语法:exportfs [-aruv]

参数说明:

  • -a :全部挂载(或卸除) /etc/exports 档案内的设定
  • -r :重新挂载 /etc/exports 里面的设定,此外,亦同步更新 /etc/exports 及/var/lib/nfs/xtab 的内容!
  • -u :卸除某一目录
  • -v :在 export 的时候,将分享的目录显示到屏幕上!

服务器端使用showmount命令查询nfs的共享状态

showmount -e # 默认查看自己共享的服务,前提是要DNS能解析自己,不然容易报错
showmount -a # 显示已经与客户端连接上的目录信息

Iptables 防火墙

-A INPUT -p tcp -m state --state NEW -m multiport --dport 111,2049,4001,32764:32767 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m multiport --dport 111,2049,4001,32764:32767 -j ACCEPT

启动NFS

# 启动nfs服务器
# service portmap start
# service nfs start
# 查询nfs服务器状态
# service portmap status
# service nfs status
# 停止nfs服务器
# 停止nfs运行时,需要先停止nfs服务再停止portmap服务,对于系统中有其他服务(如NIS)需要使用时,不需要停止portmap服务
# service nfs stop
# service portmap stop
/etc/init.d/portmap start # 启动RPC进程,为NFS提供端口
/etc/init.d/nfs start
/etc/init.d/nfslock start # 来控制文件一致性 # 设置nfs服务器的自动启动状态
chkconfig --list portmap
chkconfig --list nfs
# 设置portmap和nfs服务在系统运行级别3和5自动启动。
chkconfig --level 35 portmap on
chkconfig --level 35 nfs on

启动自动挂载nfs文件系统

格式:
<server>:</remote/export> </local/directory> nfs < options> 0 0 # 修改 /etc/fstab 文件
vim /etc/fstab

二、客户端配置

/etc/init.d/portmap start # 开启客户端的RPC
/etc/init.d/nfslock start # 开启客户端的nfslock(与服务器端对应) # showmount –e nfs服务器IP
showmount –e 192.168.23.128[S2] # 检查一下RPC是否开启 # nfs挂载 格式:mount nfs服务器IP:共享目录 本地挂载点目录
mkdir -p /mnt/share/client/images # 创建挂载目录
mount -t nfs 192.168.23.128:/mnt/sda4/share/b /mnt/share/client/images # 设置共享挂载点 mount | grep nfs # 设置成开机启动挂载
# 修改/etc/fstab文件
vim /etc/fstab
# 192.168.23.128:/mnt/sda4/share/images /mnt/share/client/images nfs defaults,rw 0 0
# 可以使用autofs设置客户端需要时自动挂载,不需要时若干分钟后自动卸载,还可在/etc/fstab或客户端手动挂载时设置一些参数,方便客户端使用。

NFS服务器+客户端配置的更多相关文章

  1. NFS 服务器的配置

    1. 安装 NFS 服务器 [root@localhost btools]#rpm -q nfs-utils 如果没有安装,从对应 Linux 操作系统版本的安装光盘上找到 nfs-utils 的安装 ...

  2. RHEL6.4上Samba/NFS服务器简单配置

    近期在RHEL6.4上尝试搭建一个NAS,底层使用XFS文件系统,对外主要提供samba协议和NFS协议共享,这里把主要步骤记录下来. 环境:RHEL6.4,IP:192.168.50.117 1.关 ...

  3. Linux NFS服务器的安装与配置

    一.NFS服务简介 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的操 ...

  4. (转)Linux NFS服务器的安装与配置

    转自:http://www.cnblogs.com/mchina/archive/2013/01/03/2840040.html 由于在6系列里面,portmap已经改名了 ,6系列需要使用 serv ...

  5. 【转载】Linux NFS服务器的安装与配置

    一.NFS服务简介 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的操 ...

  6. Linux NFS服务器的安装与配置(转载)

    一.NFS服务简介 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的操 ...

  7. NFS服务器的安装与配置

    由于实验室的项目需要实现在CephFS之上建立NFS之上,所以记录一下NFS服务器的安装与配置流程. 1.NFS服务的简介: NFS 是 Network File System 的缩写,是Sun公司于 ...

  8. Linux NFS服务器的安装与配置方法(图文详解)

    这篇文章主要介绍了Linux NFS服务器的安装与配置方法(图文详解),需要的朋友可以参考下(http://xb.xcjl0834.com) 一.NFS服务简介 NFS 是Network File S ...

  9. Linux NFS服务器的简明配置6.8

    Linux NFS服务器的简明配置6.8   Linux NFS服务器的简明配置 一.NFS服务简介 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的 ...

随机推荐

  1. JSP 登录与注册的小案例

    源代码连接地址如下:链接:http://pan.baidu.com/s/1nvEuHBj 密码:qsr1 #properties文件 driver=oracle.jdbc.driver.OracleD ...

  2. 点击切换panel

    //点击标题切换 $("li[class^='fore-']").click(function(){ var nomber = $(this).index();//点击的第几个 $ ...

  3. gradle基础的build文件模板_tomcat

    group '组织名' version '版本号' /* 支持的插件 */ apply plugin: 'java' // 项目基础变成语言支持为java apply plugin: 'war' // ...

  4. 浅析angular,react,vue.js jQuery使用区别

    前端越来越混乱了,当然也可以美其名曰:繁荣.当新启动一个前端项目,第一件事就是纠结:使用什么框架,重造什么轮子? PS:大牛留言讨论那么,希望看完此篇,能够给你一个清晰的认识,或者让你更加地纠结和无所 ...

  5. sql server 数据库 日期格式转换

    日期时间转字符串:Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), ...

  6. SpringMVC之控制器的单例和多例管理

    版权声明:本文为博主原创文章,未经博主允许不得转载. 在使用Spring3对控制器Controller进行bean管理时,如果要对控制器是否单例进行管理. 有两种方式配置多例模式: 1.springX ...

  7. Windows Phone 三、样式和资源

    定义样式和引用资源 <Page.Resources> <!-- 向资源字典中添加一个键为ButtonBackground值为SolidColorBrush对象 --> < ...

  8. Python中递归的最大次数

    实际应用中遇到了一个python递归调用的问题,报错如下: RuntimeError: maximum recursion depth exceeded while calling a Python ...

  9. JAVA基本类库介绍

    我们曾经讲过,Java已经为编程者编制了许多类,这些类已经经过测试,基本上不存在错误,这些类都是我们编程的基础.如果不利用这些已存在的类,我们的 编程工作将变得异常复杂,所以我们应尽可能多的掌握Jav ...

  10. css2 [lang|=en] 误区

    [lang|=en] w3c说明:css2选择器,选择以en开头的的lang属性. w3c的这个解释是有误区的,en开头,但是en后面必须要有-,也就是说是选择的是en-开头