Skip to main content
您好,欢迎光临IDC汇,需要什么服务器直接咨询客服,方便快捷。客服QQ 点击这里给我发消息
首页 > 服务器技术 »正文

搭建NFS服务器

服务器技术 webadmin 2020-07-25 08:51:00 查看评论 加入收藏
  1. 简介

  NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用(Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFSSERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责信息的传输。

2.部署

2.1部署环境

操作系统:CentOS Linux release 7.3.1611 (Core)

服务端:10.0.1.16

客户端:10.0.1.1 10.0.1.2

2.2安装服务器端
2.2.1在服务器端使用yum安装nfs-utils服务

命令如下:

#yum list |grep nfs-utils #查看是否有nfs-utils的rpm包

#yum install nfs-utils.x86_64 -y  #安装nfs-utils

2.2.2创建相关用户并指定用户id和用户组id,然后设置目录的属主和用户组

#groupadd -g 1005 rick

#useradd -g 1005 -u 1005-M rick

#mkdir -p /share/data

#chown -R rick:rick /share/data

注:1005是用户id和用户组id,这个实验我使用自定义的;也可以使用默认的,使用

cat /etc/passwd |grep rick 命令行查看,例如

rick:x:1001:1001::/home/rick:/bin/bash

以冒号为分隔符,第一个字段是用户名称;第二个字段是密码,是隐藏的;第三个字段是用户id;第四个字段是用户组id;第五个字段是描述;第六个字段是用户的主目录;第七个字段是用户可用的shell。

2.2.3配置共享目录并且设置权限,编辑nfs配置文件/etc/exports

命令:vim /etc/exports

添加  /share/data    *(rw,sync,all_squash,anonuid=1005,anongid=1005)

      共享目录  权限设置,*代表允许所有ip访问,其他权限参考2.4节

注:这里为了方便使用*来设置可访问共享目录的ip,为了安全起见,部署的时候建议指定可访问的单个ip或者一个网段,

例如

/share/data   10.0.1.1(rw,sync,all_squash,anonuid=1005,anongid=1005)

#指定单个ip可访问共享文件目录

/share/data   10.0.1.0/24(rw,sync,all_squash,anonuid=1005,anongid=1005)

#指定某个网段可以访问共享文件目录

或者

/share/data   10.0.1.1(rw,sync,all_squash,anonuid=1005,anongid=1005)

10.0.1.2(rw,sync,all_squash,anonuid=1005,anongid=1005)

#上面两行是连接起来的哦,ip()空格ip(),多个ip使用空格分隔

#指定多ip可访问共享文件目录

2.2.4 启动rpc(可能系统已经启动)和nfs服务

systemctl start rpcbind.service

systemctl start nfs-server.service

2.2.5 防火墙开放111(rpc端口)和2049(nfs端口)

#firewall-cmd --permanent --add-port=111/tcp

#firewall-cmd --permanent --add-port=2049/tcp

#firewall-cmd --reload

 

2.3 安装客户端
2.3.1 需要安装nfs服务,然后挂载nfs服务器端的共享目录

yum install nfs-utils.x86_64 -y

mount -t nfs 10.0.1.16:/share/data /opt

注:/opt目录是自定义的,如果本地没有此目录会自动创建

2.3.2开机自动挂载

vim /etc/fstab

添加10.0.1.16:/share/data /opt nfs defaults 0 0

2.4 权限参数设置参考表


參數值

內容說明

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 囉。


本文是参考鸟哥的私房菜-服务器而进行的实验,且本文没有鸟哥写的那么详细。


广告06

微信