5.7 NFS,NTP 服务

1、NFS 概念介绍

NFS就是Network FileSystem的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件, NFS服务器允许NFS客户端将远端NFS服务器共享的目录挂载到本地文件系统中。在NFS客户端看来,NFS服务器共享的目录就好像自己的磁盘分区和目录一样,可以使用cp、cd、mv、rm及df等与磁盘相关的命令,在使用上相当便利。

NFS包含3个版本:NFSv2、NFSv3、NFSv4。RHEL6/CENTOS6或以上版本是以NFSv4作为默认版本。

nfs端口:2049

RPC端口:111

a. NFS 工作原理

在Linux下实现文件共享有多种方式,NFS就是其中之一。网络文件系统(NFS)协议是由Sun MicroSystem在20世纪80年代为了提供对共享文件的远程访问而设计和实现的。该协议采用Client/Server模型, 通过使用Sun开发的远程过程调用协议(RPC Protocol)来实现运行在一台计算机上的程序来调用在另一台远程机器上运行的子程序。

NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此NFS的功能对应的端口并不固定(但可以在配置文件中固定端口),客户端要知道NFS服务器端的相关端口才能建立连接进行数据传输,而RPC就是用来统一管理NFS端口的服务,并且统一对外的端口是111(rpc的端口),RPC会记录NFS端口的信息,如此我们就能够通过RPC实现服务端和客户端沟通端口信息。PRC最主要的功能就是指定每个NFS功能所对应的port number,并且通知客户端,使客户端可以正常连接到nfs服务器。

5.7 NFS,NTP 服务_第1张图片

① 首先服务器端启动RPC服务,并开启111端口

② 服务器端启动NFS服务,并向RPC注册端口信息

③ 客户端启动RPC(rpcbind服务),向服务端的RPC(rpcbind)服务请求服务端的NFS端口

④ 服务端的RPC(rpcbind)服务反馈NFS端口信息给客户端。

⑤ 客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输

b. NFS V4 相关进程
  • mountd 负责客户端来源认证的进程,认证成功后接受客户端的挂载请求,工作在随机端口,及时向RPC注册。
  • nfs负责文件读写,工作在TCP/UDP的2049端口。
  • quotad负责限定客户端在本地能使用多大磁盘空间,工作在随机端口,即时向RPC注册。
  • idmapd负责用户ID映射。
  • nlockmgr NFS的服务器端锁机制进程,当有一个客户端进程要访问服务器端处理文件之前就会先向NFS注册加锁,以免同时两个客户端进程同时处理一个文件导致文件崩溃;一个进程处理完成之后就会通知NFS释放锁。
c. 实验拓扑

主机名

角色

Ip地址

Server

NFS服务端

192.168.137.5

CentOS01

NFS客户端

192.168.137.6

2、NFS 服务端配置
a. 安装并启动服务
# 服务端安装服务
yum install -y nfs-utils rpcbind
  • rpcbind :RPC主程序,可以将NFS视为RPC下的一个子程序,在CentOS 5.x以前这个软件称为portmap,在CentOS 6.x之后才称为 rpcbind 的。
  • nfs-utils :NFS主程序,包含rpc.nfsd,rpc.mount两个deamons。这个就是 NFS 服务所需要的主要软件。
# 服务端启动服务并设置开机自启动
systemctl start rpcbind
systemctl enable rpcbind
systemctl start nfs
systemctl enable nfs

# 服务端查看端口号
netstat -antup | grep 2049
netstat -antup | egrep "nfs|rpc"

5.7 NFS,NTP 服务_第2张图片

b. 创建客户端访问用户及共享目录
# 创建客户端访问用户
useradd -M -s /sbin/nologin www

# 创建共享目录
mkdir /opt/webroot
mkdir /opt/bbs
echo "abc" > /opt/webroot/aa.txt
echo "123" > /opt/bbs/bb.txt
chmod -R a+w /opt/webroot/
chown -R www:www /opt/bbs/
c. 服务器配置文件

共享目录是指在NFS服务器上需要给客户端共享出来的目录,在设置共享目录的时候要使用绝对路径。客户端是指所有可以访问NFS服务器共享目录的计算机。

/etc/exports

NFS服务的主配置文件,该文件的最主要目的是发布共享目录并为共享目录限制权限

/var/lib/nfs/xtab

这个文件主要用来记录客户端与NFS服务器的连接记录,如果想查看哪些客户端曾经连接过NFS服务器,查看该文件即可。

/var/lib/nfs/etab

主要记录了NFS 所共享出来的目录的完整权限设定值

编辑主配置文件:共享目录 [客户端地址1(权限)] [客户端地址2(权限)]……

vim /etc/exports
 	/opt/webroot	192.168.137.0/24(rw,no_root_squash)
	/opt/bbs	192.168.137.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

客户端指定方式:

  • 使用IP地址指定单一主机 10.20.30.40
  • 使用IP地址指定范围主机 172.16.0.0/16
  • 使用IP地址指定范围主机 192.168.1.*
  • 使用域名指定单一主机 www.test.com
  • 使用域名指定范围主机 *.test.com或www[1-8].test.com或www?.test.com
  • 使用通配符指定所有主机 *

NFS权限设置:

  • ro 设置共享权限为只读
  • rw 设置共享权限为读写
  • root_squash 对于访问NFS server共享目录的用户,如果是root的话会被压缩成为nobody用户身份。
  • no_root_squash 访问nfs server共享目录的用户如果是root的话,它对该目录具有root权限。这个项目极不安全,不建议使用
  • all_squash 不管访问nfs server共享目录的用户身份如何包括root,它的权限都将被压缩成为匿名用户,同时他们的uid和gid都会变成nobody或nfsnobody账户的uid,gid。在多个nfs客户端同时读写nfs server数据时,这个参数很有用可以确保大家写入的数据的权限是一样的。
  • Anonuid 设置匿名账号的UID,说明客户端以什么权限来访问服务端,在默认情况下是nfsnobody。
  • Anongid 同anonuid,就是把uid换成gid而已
  • Sync 请求写入数据时,将数据同步写入内存和硬盘,保证不丢失数据。这可能导致效率降低
  • async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
d. 重启服务

一般修改NFS配置文档后,是不需要重启NFS的,直接在命令执行systemctl reload nfs或exportfs -rv即可使修改的/etc/exports生效

 systemctl reload nfs

 # 查看NFS服务器共享目录
 showmount -e localhost

e. exportfs 命令

描述:用于维护当前主机中NFS服务器的输出目录列表

语法:exportfs [选项]

  • -rv使NFS服务器重新读取exports文件的设置,不需重启NFS服务器
  • -auv 用于停止当前主机中NFS服务器的所有目录输出
  • -av 用于输出NFS服务器的所有共享目录
  • -v 显示输出列表同时,显示导出的设定参数

3、NFS 客户端配置
a. 安装并启动服务
# 安装服务
yum install -y nfs-utils rpcbind

# 启动rpc服务
systemctl start rpcbind
systemctl enable rpcbind

# 查看服务器共享目录
showmount -e 192.168.137.5

b. 客户端挂载

挂载NFS服务器上/opt/webroot目录到本地/var/www/html目录下

挂载NFS服务器上/opt/bbs目录到本地/var/www/bbs目录下

# 创建挂载目录
mkdir -p /var/www/{html,bbs}

# 挂载文件
mount -t nfs 192.168.137.5:/opt/webroot /var/www/html
mount -t nfs 192.168.137.5:/opt/bbs /var/www/bbs

# 查看挂载情况
df -h

c. 查看测试文件
cat /var/www/html/aa.txt 
cat /var/www/bbs/bb.txt
4、NTP 概念介绍

NTP(Network Time Protocol)时间网络协议,主要用来同步网络中各个计算机的时间的协议,它的用途是把计算机的时钟同步到世界协调时UTC,解决集群服务器时间不同步,数据时间问题不一致问题,其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms。

a. NTP 服务

NTP 服务属于 C/S 架构模式 , 在建立本地服务时最好与上层服务器进行时间同步,来给本地提供时间同步服务。

阿里云ntp时间服务器

ntp1.aliyun.com

ntp2.aliyun.com

ntp3.aliyun.com

ntp4.aliyun.com

ntp5.aliyun.com

ntp6.aliyun.com

ntp7.aliyun.com

国家授时中心服务器IP地址:210.72.145.44

b. NTP 工作流程
  • 客户端将采用随机端口向 NTP 服务器(UDP:123) 发出时间同步请求
  • NTP 服务器收到请求后会将发出调校时间
  • NTP 客户端接收到 NTP 服务器的消息后,以进行调整,从而完成时间同步
c. 实验拓扑

主机名

角色

Ip地址

Server

NTP服务端

192.168.137.5

CentOS01

NTP客户端

192.168.137.6

5、NTP 服务器配置
a. 安装服务
# 安装ntp
yum install -y ntp
b. /etc/ntp.conf
# 我们每一个system clock的频率都有小小的误差,机器运行一段时间后时间会不精确,
# NTP会自动来监测我们时钟的误差值并予以调整,并把记录下来的误差先写入driftfile
driftfile /var/lib/ntp/drift
# 默认是拒绝所有来源的任何访问
restrict default nomodify notrap nopeer noquery
restrict 127.0.0.1 
restrict ::1
# 允许192.168.1.0网段中的服务,访问本ntp服务器来同步时间
restrict 192.168.137.0 mask 255.255.255.0
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server ntp3.aliyun.com iburst
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
disable monitor

restrict default nomodify notrap nopeer noquery

  • ignore:拒绝所有类型的NTP 连接
  • nomodify:客户端不能使用ntpdc 与 ntpq 程序来修改服务器的时间参数,但可以同步时间
  • noquery:不提供NTP 服务
  • notrap:不提供trap 远程日志服务
  • notrust:拒绝没有认证的客户端提供NTP

server ntp1.aliyun.com iburst

  • prefer 优先级设定
  • iburst 当一个运程 NTP 服务器不可用时,向它发送一系列的并发包进行检测。
  • burst 当一个运程 NTP 服务器可用时,向它发送一系列的并发包进行检测。
c. 启动服务查看状态
# 启动服务
systemctl start ntpd
systemctl enable ntpd

# 查看端口
netstat -antup | grep 123

# 查看 NTP 服务的状态
ntpstat

ping ntp1.aliyun.com

d. 查看上层ntp服务状态
ntpq -p

remote

远程NTP的FQDN或 IP(* 代表正在使用的NTP 服务,+ 代表下一个候选服务器 )

refid

上层NTP 主机的位置

st

Stratum阶层

when

几秒前曾经做过的更新

poll

下一次更新在几秒之后

reach

本地向上层请求的次数

delay

传输过程的延迟10^(-3)

offset

时间补偿描述10^(-3) 秒

jitter

Linux系统时间与BIOS时间差

6、NTP 客户端配置
a. 安装服务
# 安装ntp
yum install -y ntp
b. hwclock命令

描述:同步硬件时钟

语法:hwclock [功能] [选项...]

功能:

  • -h, --help 显示此帮助并退出
  • -r, --show 读取硬件时钟并打印结果
  • --set 将 RTC 设置为 --date 指定的时间
  • -s, --hctosys 从硬件时钟设置系统时间
  • -w, --systohc 从当前系统时间设置硬件时钟
  • --systz 基于当前时区设置系统时间
  • --adjust 根据自上次时钟设置或调整后的系统漂移来调整RTC
  • -c, --compare 定期将系统时钟与 CMOS 时钟相比较
  • --getepoch 打印内核的硬件时钟纪元(epoch)值
  • --setepoch 将内核的硬件时钟纪元(epoch)值设置为
  • --epoch 选项指定的值
  • --predict 预测 --date 选项所指定时刻读取到的 RTC 值
  • -V, --version 显示版本信息并退出

选项:

  • -u, --utc 硬件时钟保持为 UTC 时间
  • --localtime 硬件时钟保持为本地时间
  • -f, --rtc <文件> 代替默认文件的特殊 /dev/... 文件
  • --directisa 直接访问 ISA 总线,而非 /dev/rtc
  • --badyear 忽略 RTC 年份(由于 BIOS 损坏)
  • --date <时间> 指定要设置的硬件时钟时间
  • --epoch <年> 指定作为硬件纪元(epoch)值起始的年份
  • --noadjfile 不访问 /etc/adjtime;需要使用 --utc 或 --localtime 选项
  • --adjfile <文件> 指定调整文件的路径;
  • 默认为/etc/adjtime
  • --test 不更新,只显示将进行什么操作
  • -D, --debug 调试模式
# 查看当前硬件时钟和系统时间
date;hwclock -r

# 修改当前操作系统时间
date -s "2022-7-17 22:30:30"  
date;hwclock -r

# 同步硬件时钟为系统时钟
hwclock -s    
date;hwclock -r

# 同步系统时钟为硬件时钟
hwclock --set  --date "2022-7-17 22:30:30"
date;hwclock -r

hwclock -w
date;hwclock -r
c. ntpdate 命令

描述:同步系统时间

date -s "2022-7-11 22:30:30"

ntpdate 192.168.1.11
date


#添加计划任务
crontab -e      
0 0 * * * /usr/sbin/ntpdate 192.168.1.11 &>> /dev/null
d. 使用ntp服务同步系统时间
# 修改ntp服务配置文件
vim /etc/ntp.conf
	server 192.168.1.11 iburst

5.7 NFS,NTP 服务_第3张图片

# 修改当前系统时间
date -s "2099-09-09 00:00:00"

# 启动服务
systemctl start ntpd
systemctl enable ntpd

# 查看系统时间
date

7、Chrony 概念介绍

chrony是网络时间协议NTP的另一种实现,与网络时间协议后台程序ntpd不同,它可以更快、更准确的同步系统时钟,是centos7默认时间服务器。

chrony可以将系统时钟与NTP服务器、参考时钟(例如GPS接收器)和使用手表和键盘的手动输入同步。它还可以作为NTPv4(RFC 5905)服务器和对等服务器运行,为网络中的其他计算机提供时间服务。是ntpd的替代方案。在互联网上同步的两台机器之间的典型精度在几毫秒内;在局域网上,精度通常在几十微秒内。使用硬件时间戳或硬件参考时钟,可以达到亚微秒精度。

chrony中包含两个程序,chronyd是一个可以在启动时启动的守护程序,chronyc是一个命令行接口程序,可用于监视chronyd的性能,并在运行时更改各种操作参数。

chrony的优势

① 更快的同步时间只需要数分钟而非数小时,从而最大程度减少了时间和频率的误差,这对于非全天24小时运行的台式计算机或系统而言非常有用

② 能够更好的响应时钟频率的快速变化,这对于具备不稳定时钟的虚拟机或导致时钟频率发生变化的节能技术而言非常有用

③ 在初始同步后,它不会停止时钟,以防对需要系统时间保持单调的应用程序造成影响

④ 应对临时非对称延迟(例如,在大规模下载造成链接饱和时)提供了更好的稳定性

⑤ 无需对服务器进行定期轮询,因此具备间歇性网络链接的系统任然可以快速同步时钟

8、Chrony 服务器配置
a. 安装服务
# 安装chrony
yum install -y chrony
b. 修改配置文件
vim /etc/chrony.conf
  server ntp1.aliyun.com iburst
  server ntp2.aliyun.com iburst
  server ntp3.aliyun.com iburst
  # 指定允许的客户端网段来当前时间服务器节点同步时间
  allow 192.168.137.0/24   

5.7 NFS,NTP 服务_第4张图片

c. 启动服务查看端口
# 启动服务
systemctl enable --now chronyd

# 查看服务端口
netstat -antup | grep chronyd

d. 查看时间同步源
chronyc sources -v

5.7 NFS,NTP 服务_第5张图片

9、Chrony 客户端配置
a. 安装服务
yum install -y ntp chrony
b. 修改配置文件
vim /etc/chrony.conf

# 添加hosts解析
vim /etc/hosts
	192.168.137.5 CentOS_Server
c. 启动服务并设置开机自启动
systemctl enable --now chronyd	
d. 查看时间同步源状态
chronyc sources -v

5.7 NFS,NTP 服务_第6张图片

M 表示授时时钟源 ^表示服务器,= 表示二级时钟源 ,#表示本地连接的参考时钟

S 指示源的状态 *当前同步的源,+表示其他可接受的源,?表示连接丢失的源,x表示一个认为是 falseticker 的时钟(即它的时间与大多数其他来源不一致),~表示其时间似乎具有太多可变性的来源

Name/IP address 表示源的名称或IP地址,或者参考时钟的refid值 无

Stratum 表示源的层级 层级1表示本地连接的参考时钟,第2层表示通过第1层级计算机的时钟实现同步,依此类推。

Poll 表示源轮询的频率 以秒为单位,值是基数2的对数,例如值6表示每64秒进行一次测量,chronyd会根据当时的情况自动改变轮询频率

Reach 表示源的可达性的锁存值(八进制数值) 该锁存值有8位,并在当接收或丢失一次时进行一次更新,值377表示最后八次传输都收到了有效的回复

LastRx 表示从源收到最近的一次的时间,通常是几秒钟,字母m,h,d或y分别表示分钟,小时,天或年,值10年表示从未从该来源收到时间同步信息

Last sample 表示本地时钟与上次测量时源的偏移量 方括号中的数字表示实际测量的偏移值,这可以以ns(表示纳秒),us(表示微秒),ms(表示毫秒)或s(表示秒)为后缀;方括号左侧的数字表示原始测量值,这个值是经过调整以允许应用于本地时钟的任何偏差;方括号右侧表示偏差值,+/-指示器后面的数字表示测量中的误差范围,+偏移表示本地时钟快速来源

chronyc sourcestats -v  

5.7 NFS,NTP 服务_第7张图片

Name/IP address 表示源的名称或IP地址,或者参考时钟的refid值

NP 这是当前为服务器保留的采样点数,通过这些点执行线性回归方法来估算出偏移值

NR 这是在最后一次回归之后具有相同符号的偏差值的运行次数。如果此数字相对于样本数量开始变得太小,则表明直线不再适合数据。如果运行次数太少,则chronyd丢弃旧样本并重新运行回归,直到运行次数变得可接受为止

Span 这是最旧和最新样本之间的间隔。如果未显示任何单位,则该值以秒为单位。

Frequency 这是服务器的估算偏差值的频率,单位为百万分之一。在这种情况下,计算机的时钟估计相对于服务器以10 ** 9的速度运行1个部分

Freq Skew 这是Freq的估计误差范围(再次以百万分率计)

Offset 这是源的估计偏移量

Std Dev 这是估计的样本标准偏差

e. 手动同步
# 更改系统时间
date -s "2022-7-17 22:30:30"

# 等2分钟再同步时间
chronyc -a makestep

你可能感兴趣的:(J-C云计算运维,linux,运维)