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
在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服务器。
① 首先服务器端启动RPC服务,并开启111端口
② 服务器端启动NFS服务,并向RPC注册端口信息
③ 客户端启动RPC(rpcbind服务),向服务端的RPC(rpcbind)服务请求服务端的NFS端口
④ 服务端的RPC(rpcbind)服务反馈NFS端口信息给客户端。
⑤ 客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输
主机名 |
角色 |
Ip地址 |
Server |
NFS服务端 |
192.168.137.5 |
CentOS01 |
NFS客户端 |
192.168.137.6 |
# 服务端安装服务
yum install -y nfs-utils rpcbind
# 服务端启动服务并设置开机自启动
systemctl start rpcbind
systemctl enable rpcbind
systemctl start nfs
systemctl enable nfs
# 服务端查看端口号
netstat -antup | grep 2049
netstat -antup | egrep "nfs|rpc"
# 创建客户端访问用户
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/
共享目录是指在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)
客户端指定方式:
NFS权限设置:
一般修改NFS配置文档后,是不需要重启NFS的,直接在命令执行systemctl reload nfs或exportfs -rv即可使修改的/etc/exports生效
systemctl reload nfs
# 查看NFS服务器共享目录
showmount -e localhost
描述:用于维护当前主机中NFS服务器的输出目录列表
语法:exportfs [选项]
# 安装服务
yum install -y nfs-utils rpcbind
# 启动rpc服务
systemctl start rpcbind
systemctl enable rpcbind
# 查看服务器共享目录
showmount -e 192.168.137.5
挂载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
cat /var/www/html/aa.txt
cat /var/www/bbs/bb.txt
NTP(Network Time Protocol)时间网络协议,主要用来同步网络中各个计算机的时间的协议,它的用途是把计算机的时钟同步到世界协调时UTC,解决集群服务器时间不同步,数据时间问题不一致问题,其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms。
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
主机名 |
角色 |
Ip地址 |
Server |
NTP服务端 |
192.168.137.5 |
CentOS01 |
NTP客户端 |
192.168.137.6 |
# 安装ntp
yum install -y ntp
# 我们每一个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
server ntp1.aliyun.com iburst
# 启动服务
systemctl start ntpd
systemctl enable ntpd
# 查看端口
netstat -antup | grep 123
# 查看 NTP 服务的状态
ntpstat
ping ntp1.aliyun.com
ntpq -p
remote |
远程NTP的FQDN或 IP(* 代表正在使用的NTP 服务,+ 代表下一个候选服务器 ) |
refid |
上层NTP 主机的位置 |
st |
Stratum阶层 |
when |
几秒前曾经做过的更新 |
poll |
下一次更新在几秒之后 |
reach |
本地向上层请求的次数 |
delay |
传输过程的延迟10^(-3) |
offset |
时间补偿描述10^(-3) 秒 |
jitter |
Linux系统时间与BIOS时间差 |
# 安装ntp
yum install -y ntp
描述:同步硬件时钟
语法:hwclock [功能] [选项...]
功能:
选项:
# 查看当前硬件时钟和系统时间
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
描述:同步系统时间
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
# 修改ntp服务配置文件
vim /etc/ntp.conf
server 192.168.1.11 iburst
# 修改当前系统时间
date -s "2099-09-09 00:00:00"
# 启动服务
systemctl start ntpd
systemctl enable ntpd
# 查看系统时间
date
chrony是网络时间协议NTP的另一种实现,与网络时间协议后台程序ntpd不同,它可以更快、更准确的同步系统时钟,是centos7默认时间服务器。
chrony可以将系统时钟与NTP服务器、参考时钟(例如GPS接收器)和使用手表和键盘的手动输入同步。它还可以作为NTPv4(RFC 5905)服务器和对等服务器运行,为网络中的其他计算机提供时间服务。是ntpd的替代方案。在互联网上同步的两台机器之间的典型精度在几毫秒内;在局域网上,精度通常在几十微秒内。使用硬件时间戳或硬件参考时钟,可以达到亚微秒精度。
chrony中包含两个程序,chronyd是一个可以在启动时启动的守护程序,chronyc是一个命令行接口程序,可用于监视chronyd的性能,并在运行时更改各种操作参数。
chrony的优势
① 更快的同步时间只需要数分钟而非数小时,从而最大程度减少了时间和频率的误差,这对于非全天24小时运行的台式计算机或系统而言非常有用
② 能够更好的响应时钟频率的快速变化,这对于具备不稳定时钟的虚拟机或导致时钟频率发生变化的节能技术而言非常有用
③ 在初始同步后,它不会停止时钟,以防对需要系统时间保持单调的应用程序造成影响
④ 应对临时非对称延迟(例如,在大规模下载造成链接饱和时)提供了更好的稳定性
⑤ 无需对服务器进行定期轮询,因此具备间歇性网络链接的系统任然可以快速同步时钟
# 安装chrony
yum install -y chrony
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
# 启动服务
systemctl enable --now chronyd
# 查看服务端口
netstat -antup | grep chronyd
chronyc sources -v
yum install -y ntp chrony
vim /etc/chrony.conf
# 添加hosts解析
vim /etc/hosts
192.168.137.5 CentOS_Server
systemctl enable --now chronyd
chronyc sources -v
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
Name/IP address 表示源的名称或IP地址,或者参考时钟的refid值
NP 这是当前为服务器保留的采样点数,通过这些点执行线性回归方法来估算出偏移值
NR 这是在最后一次回归之后具有相同符号的偏差值的运行次数。如果此数字相对于样本数量开始变得太小,则表明直线不再适合数据。如果运行次数太少,则chronyd丢弃旧样本并重新运行回归,直到运行次数变得可接受为止
Span 这是最旧和最新样本之间的间隔。如果未显示任何单位,则该值以秒为单位。
Frequency 这是服务器的估算偏差值的频率,单位为百万分之一。在这种情况下,计算机的时钟估计相对于服务器以10 ** 9的速度运行1个部分
Freq Skew 这是Freq的估计误差范围(再次以百万分率计)
Offset 这是源的估计偏移量
Std Dev 这是估计的样本标准偏差
# 更改系统时间
date -s "2022-7-17 22:30:30"
# 等2分钟再同步时间
chronyc -a makestep