搭建NFS服务器
admin
2023-03-23 11:20:37
0
  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 囉。


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


相关内容

热门资讯

特朗普下令不打了,美国的“余粮... 可以说戛然而止,快得让很多人都无法适应。前两周,每一天美国都要打击伊朗一通。就在7月24日白宫会议前...
穆杰塔巴最新表态:支持黎真主党 △伊朗最高领袖穆杰塔巴·哈梅内伊(资料图)当地时间7月26日晚,伊朗最高领袖穆杰塔巴·哈梅内伊对黎巴...
美军瘫痪一艘驶向伊朗的油轮,特... 美国总统特朗普虽下令暂停打击伊朗,但美军仍在执行对霍尔木兹海峡的封锁任务。针对美军瘫痪一艘驶向伊朗油...
“小牌大耍”的底气到底是哪里来... 澎湃首席评论员 李平这两天,“艺人李权哲乘高铁占座事件”在网上引发热议,该艺人参加的活动主办方曾发布...
越南籍船舶南海遇险沉没,中方已... 据凤凰卫视报道,一艘越南船舶7月24日夜间在越南庆和以东220海里附近遇险沉没,船上共62名越南籍人...
李权哲占座、蒙面、装死:娱乐圈... 你买了一张高铁一等座的票,找到自己的位置,18A。有人坐着。你拿出手机看了眼购票记录——没错,18A...
杭州景区咖啡店闯入1条幼蛇,仅... 夏天气温高、湿度大,蛇类活动进入高峰期,千万别被“小蛇无害”的刻板印象骗了!有些幼蛇看着迷你可爱,实...
AI开源公开信签署企业增至50... IT之家 7 月 26 日消息,英伟达、微软、IBM、Meta 等 25 家美国科技企业本周(7 月...
南阳快手短视频代运营企业的服务... 在短视频平台快速发展的背景下,企业通过快手等渠道进行内容运营已成为常见的市场动作。对于希望借助短视频...
普通人该如何跟上科技发展的步伐 这个被称作科技的词汇, 听起来既有宏大之感, 又颇为遥远, 好似仅仅归属于在实验室里专心致志钻研的科...