资讯详情

nfs共享存储技术

概述

参考:https://blog.csdn.net/weixin_34249678/article/details/92973397

NFS是Network File System缩写和网络文件系统。NFS主要功能是让不同的主机系统通过局域网共享文件或目录。

NFS系统和Windows网络共享,类似的网络驱动器,只是windows局域网, NFS用于企业集群架构, 假如是大网站, 将使用更复杂的分布式文件系统FastDFS,glusterfs,HDFS

NFS 在数据传输或其他相关信息传输过程中,本身的服务不提供数据传输协议,NFS它被称为远程过程调用(Remote Procedure Call, RPC)协议协助 NFS 操作本身。 NFS 可以视作是一个 RPC 服务端。除了启动NFS主机需要激活RPC服务,挂载NFS目录的Client机器也需要同步激活RPC,Server端与Client端藉由RPC协议进行program port的对应。NFS主要是管理共享的目录,数据传输是RPC协议操作。

NFS的目的:

  • 实现多个服务器之间的文件共享
  • 实现多台服务器之间的数据一致性

要让NFS运行时,需要两个套件来支持外部服务。分别是:

  • nfs-utils:NFS提供主要部件rpc.nfsd及rpc.mountd这两个NFS daemons与其它相关documents以及说明文件、执行文件等组件。

  • portmap:提供端口映射功能。

访问客户端nfs server的文件,NFS Server端必须NFS的服务,NFS服务由以下两daemon(后台过程)完成:

  • rpc.nfsd:管理 Client 是否可以登录主机的权限还包括登录者 ID 的判别。

  • rpc.mountd:管理NFS文件系统,当Client端顺利通过rpc.nfsd登录主机后,可以使用NFS在服务器提供文件之前,它还将通过文件使用权 (就是那个-rwxrwxrwx与owner, group那些权限)认证程序!它会去读NFS的配置文件 /etc/exports 来比对Client通过这一关后的权限Client可获得使用NFS文件的权限。

    因此,可以通过 /etc/exports 文件管理NFS共享目录的使用权限和安全设置

linux系统搭建nfs

1.安装所有节点NFS

# 检查是否已安装nfs,没有安装nfs则通过联网yum本地安装或离线安装 rpm -qa | grep nfs  # 联网yum安装命令 yum -y install nfs-utils  # 本地离线安装 yum -y localinstall ./nfs_install_rpm/*.rpm   # 说明:nfs_install_rpm为nfs的rpm安装包目录。rpm安装包列表如下   # gssproxy-0.7.0-29.el7.x86_64.rpm   # keyutils-1.5.8-3.el7.x86_64.rpm   # keyutils-libs-1.5.8-3.el7.x86_64.rpm   # keyutils-libs-devel-1.5.8-3.el7.x86_64.rpm   # libbasicobjects-0.1.1-32.el7.x86_64.rpm   # libcollection-0.7.0-32.el7.x86_64.rpm   # libevent-2.0.21-4.el7.x86_64.rpm   # libini_config-1.3.1-32.el7.x86_64.rpm   # libnfsidmap-0.25-19.el7.x86_64.rpm   # libpath_utils-0.2.1-32.el7.x86_64.rpm   # libref_array-0.1.5-32.el7.x86_64.rpm   # libtirpc-0.2.4-0.16.el7.x86_64.rpm   # libverto-libevent-0.2.5-4.el7.x86_64.rpm   # nfs-utils-1.3.0-0.68.el7.x86_64.rpm   # rpcbind-0.2.0-49.el7.x86_64.rpm 

2.创建所有节点的目录

test ! -d /nfs && mkdir -p /nfs 

3.部署nfs服务端

# 增加防火墙规则 firewall-cmd --permanent --add-service=rpc-bind firewall-cmd --permanent --add-service=mountd firewall-cmd --permanent --add-port=2049/tcp firewall-cmd --permanent --add-port=2049/udp firewall-cmd --reload  # 配置NFS共享目录 vi /etc/exports # 插入以下内容 /nfs 192.168.52.0/24(rw,no_root_squash,no_all_squash,sync)  # 重新加载NFS配置,启动服务,增加启动自启动 exportfs -r && service rpcbind start && service nfs start && systemctl enable nfs-server 

4.部署nfs客户端

# 查看共享目录列表。可跳过
showmount -e 192.168.52.141

# 挂载目录
mount -t nfs 192.168.52.141:/nfs /nfs

# 将挂载命令写入 /etc/fstab文件:开机时系统就自动挂载 NSF
vi /etc/fstab
# 追加插入以下内容
192.168.52.141:/nfs /nfs nfs defaults,vers=4.0

# 测试挂载目录:在/mynfs目录中创建文件,然后在NFS服务端的共享目录中查看文件是否存在,存在则代表共享成功。
# 卸载NFS目录
umount /nfs

NFS的套件结构

介绍

  • /etc/exports:NFS的主要配置文件。系统可能没有预设,所以这个文件不一定会存在,可能要使用 vi 主动的建立这个文件

  • /usr/sbin/exportfs:维护NFS共享资源的命令,可以利用这个命令重新共享 /etc/exports 变更的目录资源、将NFS Server分享的目录卸载或重新分享等等,这个指令是NFS系统里面相当重要的。

  • /usr/sbin/showmount:一个重要的NFS命令。exportfs是用在NFS Server端,而showmount则主要用在Client端。这个showmount可以用来察看NFS共享出来的目录资源。

  • /var/lib/nfs/*tab:在NFS服务器的登录档都放置到/var/lib/nfs/目录里面,在该目录下有两个比较重要的登录档,一个是etab ,主要记录了 NFS 所分享出来的目录的完整权限设定值;另一个xtab则记录曾经连结到此NFS主机的相关客户端资料。

  • /var/lib/nfs/rmtab:状态文件,列出了挂接导出文件的远程客户机清单。

/etc/exports配置文件的语法与参数

# 格式示例
# vi /etc/exports
/tmp         192.168.1.0/24(ro)   localhost(rw)   *.ev.ncku.edu.tw(ro,sync)
[分享目录]  [第一个主机(权限)]   [可用主机名]    [可用域名]

/etc/exports文件的内容非常简单,每一行由共享路径,客户端列表以及每个客户端后紧跟的访问选项构成:

[共享的目录] [主机名或IP(参数,参数)]

  • 参数是可选的,当不指定参数时,nfs将使用默认选项。默认的共享选项是 sync,ro,root_squash,no_delay

  • 当主机名或IP地址为空时,则代表共享给任意客户机提供服务。

  • 当将同一目录共享给多个客户机,但对每个客户机提供的权限不同时,可以这样:

    [共享的目录] [主机名1或IP1(参数1,参数2)] [主机名2或IP2(参数3,参数4)]

# NFS共享的常用参数(注意:参数之间只用逗号(,)分隔,中间不能有空格!):
    
ro		# read-only,只读访问权限
rw		# read-write,可读写的权限
sync	# 资料同步写入到内存与硬盘中
async	# 资料会先暂存于内存中,而非直接写入硬盘
secure	# NFS通过1024以下的安全TCP/IP端口发送
insecure	# NFS通过1024以上的端口发送
wdelay		# 如果多个客户要写入NFS目录,则归组写入(默认)
no_wdelay	# 如果多个客户要写入NFS目录,则立即写入,当使用async时,无需此设置。
hide		# 在NFS共享目录中不共享其子目录
no_hide		# 共享NFS目录的子目录
subtree_check		# 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check	# 和上面相对,不检查父目录权限
no_all_squash		# 保留共享文件的UID和GID(默认)
all_squash			# 不论登入 NFS 的使用者身份为何, 他的UID和GID映射匿名客户anonymous
					  # (通常也就是 nobody(nfsnobody)),适合公用目录。
root_squash			# 在登入NFS主机使用共享之目录的使用者如果是root时,那么这个使用者的权限将被映射成为匿名使用者
					  # 通常它的 UID 与 GID 都会变成nobody(nfsnobody) 那个系统帐号的身份的权限;(默认) 
no_root_squas		# 登入NFS主机使用共享目录的使用者,如果是root的话,那么对于这个共享的目录来说,它就具有root的权限!
					  # 这个项目『极不安全』,不建议使用!
anonuid=xxx			# 指定NFS服务器/etc/passwd文件中匿名客户的UID
anongid=xxx			# 指定NFS服务器/etc/passwd文件中匿名客户的GID

  • 单个主机:可以用短名及完全限定名,或者用IP地址;

    例如student01、student01.flying.com.cn或者192.168.10.1都是合法的主机名。

  • Net-Group:可以列出/etc/netgroup文件中或NFS网组映射中定义的整组主机。网组名以@开头。

  • 通配符主机:.discuz.net *.*.comsenz.com

  • 掩码:192.168.1.0/255.255.255.0

# vi /etc/exports

# 1.将/tmp共享出去给任意主机使用,所有人都可以读写、存取,同时让root写入的文件还是具有root的权限
  # 任何人都可以用 /tmp ,用通配字符(*)来处理主机名称,重点在no_root_squash
/tmp *(rw,no_root_squash)

# 2.同一目录针对不同范围开放不同权限
  # 将一个公共的目录/home/public公开出去,但是只有限定局域网内192.168.0.0/24这个网段可以读写,其他人则只能读取
  # 通配字符仅能用在主机名称的分辨上面,IP或网段就只能用192.168.0.0/24的状况,不可以使用192.168.0.*
/home/public 192.168.0.0/24(rw) *(ro)

# 3.仅给某个单一主机使用的目录设置
  # 将一个私人的目录 /home/test 开放给192.168.0.100这个Client端的机器来使用
/home/test    192.168.0.100(rw) 		# 只要设定 IP 正确即可!

# 开放匿名登入的情况
  # 让*.linux.org网域的主机,登入我的NFS主机时,可以存取 /home/linux,但是其存资料的时候,使的UID与GID都变成40这个身份的使用者, 假设NFS服务器上的UID 40已经有设定妥当:
  # # 如果要开放匿名,那么重点是all_squash,并且要配合anonuid
/home/linux   *.linux.org(rw,all_squash,anonuid=40,anongid=40)

showmount:NFS的连接观察

showmount [-ae] [hostname|IP]
# 参数:
-a		# 这个参数是一般在NFS SERVER上使用,是用来显示已经mount上本机nfs目录的cline机器
-e		# 显示主机的 /etc/exports 所共享的目录。

exportfs:维护NFS共享资源

每次修改了配置文件后,可以用exportfs命令重新扫描/etc/exports文件,来使改动立刻生效。

exportfs [-aruv]
# 参数:
-a		# 全部挂载(或卸载)/etc/exports文件内的设置
-r		# 重新挂载/etc/exports里面的设置,此外,亦同步更新/etc/exports及/var/lib/nfs/xtab 的内容!
-u		# 卸载某一目录
-v		# 在export的时候,将分享的目录显示到屏幕上!

实例:

# 重新挂载一次 /etc/exports的设置
exportfs -arv
  # 输出:
  # exporting 192.168.0.100:/home/test
  # exporting 192.168.0.0/24:/home/public
  # exporting *.linux.org:/home/linux
  # exporting *:/home/public
  # exporting *:/tmp

# 全部卸载
exportfs -auv

/etc/fstab:开机自动挂载

etc/fstab文件的作用

磁盘被手动挂载之后都必须把挂载信息写入/etc/fstab这个文件中,否则下次开机启动时仍然需要重新挂载。

系统开机时会主动读取/etc/fstab这个文件中的内容,根据文件里面的配置挂载磁盘。这样只需要将磁盘的挂载信息写入这个文件中就不需要每次开机启动之后手动进行挂载了。

标签: arv连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台