YUM概述
YUM (Yellow dog Updater Modified)
基于RPM包构建的软件更新机制
可以自动解决依赖关系
所有软件包由集中的YUM软件仓库提供
准备安装源
软件仓库的提供方式
FTP服务:ftp://.......
HTTP服务:http://...... 比如:在线源
本地目录:file://...... 比如:yum仓库
RPM软件包的来源
CentOS发布的RPM包集合
第三方组织发布的RPM包集合
用户自定义的RPM包集合
baseurl=ftp://ip/centos7
构建CentOS 7 软件仓库
RPM包来自CentOS 7 DVD光盘
通过FTP方式提供给客户机
[root@localhost~]#mkdir -p /var/ftp/centos7
[root@localhost~]#cp -rf/media/cdrom/* /var/ftp/centos7
[root@localhost~]#rpm -ivh /media/cdrom/Packages/vsftpd-3.0.2-21.e17.x86 64.rpm
[root@localhost~]#systemctl start vsftpd
[root@localhost~]#systemctl enable vsftpd
在软件仓库中加入非官方RPM包组
包括存在依赖关系的所有RPM包
使用createrepo工具建立仓库数据文件
[root@localhost ~]#mkdir /var/ftp/other
[root@localhost ~]#cd /var/ftp/other 非官方的RPM要先放入该目录下
[root@localhost ~]#createrepo -g /media/cdrom/repodata/repomd.xml ./ 该条命令生成repo文件 .xml=.conf
访问YUM仓库
为客户机指定YUM仓库位置
配置文件: /etc/yum.repos.d/centos7.repo
本地YUM仓库
为客户机指定YUM仓库位置
配置文件:/etc/yum.repos.d/centos7.repo
本地YUM仓库
将Centos 7 光盘放入光驱
挂载镜像到仓库位置,URL地址为file:///media/cdrom
[root@localhost~]#vi /etc/yum.repos.d/local.repo
......
[local]
name=CentOS 7.3
becaurl=file:///media/cdrom media/cdrom:挂载点
enable=1
gpgcheck=0
YUM工具概述
关于YUM命令
由软件包yum-3.4.33-150.el7.centos.noarch提供
用来访问YUM仓库,查询、下载及安装、卸载软件包
YUM的配置文件
基本设置:/etc/yum.conf
仓库设置:/etc/yum.repos.d/*.repo
日志文件:/var/log/yum.log
YUM缓存目录
存放下载的软件包、仓库信息等数据
位于/var/cache/yum/$basearch/(硬件架构,如x86_64)$releasever(OS版本)
[root@localhost~]#yum clean all 清理缓存数据
[root@localhost~]#yum makecache 建立数据缓存
软件包查询
查询软件包
yum list [软件包]
yum into [软件名]
yum search <关键词>
yum whatprovides <关键词>
示例
[root@localhost ~]#yum list 列出所有软件
[root@localhost ~]#yum list httpd
[root@localhost ~]#yum info vsftpd
[root@localhost ~]#yum search gcc
[root@localhost ~]#yum whatprovides vim
查询软件包组(带*号,不需要下载依赖包)
yum grouplist[包组名]
yum groupinto <包组名>
示例
[root@localhost ~]#yum grouplist
[root@localhost ~]#yum grouplist gnome-desktop (建议直接[root@localhost ~]#yum grouplist gnome-desktop* )
[root@localhost ~]#yum groupinfo gnome-desktop
软件安装、升级
安装软件
yum install [软件名]
yum groupinstall <包组名>
升级软件
yum updata
yum groupupdate
示例 -y表示自动确认
[root@localhost ~]#yum -y install net-snmp
[root@localhost ~]#yum -y groupinstall gnome-desktop
[root@localhost ~]#yum -y update
软件卸载
卸载软件
yum remove<软件名>
yum groupremove<包组名>
示例
[root@localhost ~]#yum -y remove autofs
[root@localhost ~]#yum -y groupremove gnome-desktop
NFS服务简介
什么是NFS?
NFS就是Network File System 的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。
NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;NFS一般用来存储共享视频,图片等静态数据。
NFS挂载原理:
1.首先服务器端启动RPC服务,并开启111端口
2.服务器端启动NFS服务,并向RPC注册端口信息
3.客户端启动RPC(portmap服务),向服务端RPC(portmap)服务请求服务端的NFS端口
4.服务端的RPC(portmap)服务反馈NFS端口信息给客户端。
5.客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。
RPC与NFS通讯原理
因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此NFS的功能对应的端口并不固定,客户端要知道NFS服务器的相关端口才能建立连接进行数据传输,而RPC就是用来统一管理NFS端口的信息,并其统一对外的端口是111,PRC会记录NFS端口的信息,如此我们就能通过RPC实现服务端和客户端沟通端口信息。PRC最主要的功能就是指定每个NFS功能所对应的port number,并且通知客户端,记客户端可以连接到正常端口上去。
那么PRC又是如何知道每个NFS功能的端口呢?
首先当NFS启动后,就会随机的使用一些端口,然后NFS就会向RPC
vi /etc/exports时里面的权限参数
用于配置NFS服务程序配置文件的参数:
参数 作用
ro 只读
rw 读写
root squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
no root squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
all squas 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
sync同时将数据写入到内存与硬盘中,保证不丢失数据
async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
NFS共享存储服务 (独立的一个服务器)
NFS(Network File System)网络文件系统
依赖于RPC(远端过程调用)
需安装nfs-utils、rpcbind软件包
系统服务:nfs、rpcbind
共享配置文件:/etc/exports
使用NFS发布共享资源
安装nfs-utils、rpcbind软件包
[root@localhost~]yum -y install nfs-utils rpcbind
[root@localhost~]#systemctl enable nfs
[root@localhost~]#systemctl enable rpcbind
设置共享目录
[root@localhost~]#mkdir -p /opt/wwwroot 目录的作用是做挂载点
[root@localhost~]#vi /etc/exports
/opt/wwwroot 192.168.7.0/24(rw.sync.no_root_squash)
/var/ftp/pub 192.168.4.11(ro) 192.168.4.110(rw)
例
[root@serverl ~]# chkconfig --level 35 nfs on 两个都是开机自启动的命令
注意:正在将请求转发到“systemctl enable nfs.service”。
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@serverl ~]# chkconfig --level 35 rpcbind on
注意:正在将请求转发到“systemctl enable rpcbind.service”。
server1,server2做web客户机1.2.2 服务器做nfs 名字分别修改server1,server2,nfs
三者要保证在同一网段 三者网段为20.0.0.10 20.0.0.11 20.0.0.12
客户机(nsf)开启服务:
[root@server1 ~]# yum -y install rpcbind nfs 安装该软件包
建立共享目录:
[root@nfs ~]# mkdir /opt/web1
[root@nfs ~]# mkdir /opt/web2
[root@nfs ~]# cd /opt/web1
[root@nfs web1]# vi index.html
<html><head><title>web1</title></head><body><h1>this is web1!</h1></body></html>
[root@nfs ~]# cd /opt/web2
[root@nfs web2]# vi index.html
<html><head><title>web2</title></head<body>><h1>this is web2!<h1></body></html>
[root@server1 web2]# cd
[root@nfs ~]# vi /etc/exports
/opt/web1 20.0.0.10(ro)
/opt/web2 20.0.0.11(ro)
[root@nfs ~]# systemctl start nfs
[root@nfs ~]# systemctl start rpcbind
[root@nfs ~]# netstat -anpt 出现下面两条,说明服务已开启
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::2049 :::* LISTEN -
[root@server1 ~]# showmount -e 20.0.0.12
Export list for 20.0.0.12:
/opt/web2 20.0.0.11
/opt/web1 20.0.0.10
客户机1. 2:[root@server1 ~]# yum -y install httpd 安装软件包
客户机1: apache已启好
[root@serverl1 ~]# showmount -e 20.0.0.12 验证
Export list for 20.0.0.12:
/opt/web2 20.0.0.11
/opt/web1 20.0.0.10
mount 20.0.0.12:/opt/web1 /var/www/html/
df -Th
客户机2: apache已启好
[root@serverl2 ~]# showmount -e 20.0.0.12 验证
Export list for 20.0.0.12:
/opt/web2 20.0.0.11
/opt/web1 20.0.0.10
mount 20.0.0.12:/opt/web2 /var/www/html/
df -Th
nfs服务端:
[root@nfs ~]# chkconfig --level 35 nfs on
注意:正在将请求转发到“systemctl enable nfs.service”。
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@nfs ~]# chkconfig --level 35 rpcbind on
注意:正在将请求转发到“systemctl enable rpcbind.service”。
客户机1:
vi /etc/httpd/conf/httpd.conf
#ServerName www.example.com:80 修改为ServerName www.example.com:80
systemctl start httpd 重启服务
netstat -anpt | grep httpd 查看80端口是否开启
curl http://localhost 查看网页
进虚拟机里面:网页输入 http://localhost
客户机2
systemctl start httpd
netstat -anpt | grep httpd 查看80端口是否开启
curl http://localhost 查看网页
进虚拟机里面:网页输入 http://localhost
清理缓存数据
yum clean all
建立yum缓存
yum makecache
nfs(共享存储服务)
server : 192.168.1.100 (需要安装rpcbind和nfs软件包)
client1 : 192.168.1.101 预装apache
client2 : 192.168.1.102 预装apache
nfs-utils来实现nfs的共享发布与访问,rpcbind依赖rpc(远程过程调用),充当nfs客户端与服务器的中介,完成运
项目需求:利用nfs存储服务来实现制作两个不同的网页,将这两个网页分别作为两个网站的主页。
yum -y install nfs-utils rpcbind
chkconfig --level 35 nfs on #chkconfig工具管理nfs服务
chkconfig --level 35 rpcbind on #chkconfig工具管理rpcbind服务
mkdir /opt/web1
cd /opt/web1
vi index.html
<html><time>web1</title><body><h1>this is the web1!</h1><body></html>
mkdir -p /opt/web2
vi index.html
<html><title>web2</title><body><h1>this is the web2!</h1></body></html>
vi /etc/exports
/opt/web1 192.168.1.101(ro)权限是只读,不允许更改(rw是读写权限,sync是服务器和客户机间开启同步,no_r)
/opt/web2 192.168.1.102(ro)
service rpcbind start
service nfs start
netstat -anpt | grep 111
netstat -anpt | grep nfs
showmount -e 查询nfs服务器发布的共享目录 (nfs服务器本地查看自己共享的目录 )
showmount -e 192.168.1.100 客户机查询nfs服务器发布的共享目录
客户机挂载使用nfs资源
yum -y install httpd(两客户机需要安装apache服务,默认apache没有主页)
客户机1:
mount 192.168.1.100:/opt/web1 /var/www/html 将服务器上的目录文件挂载到本地
tail -l /etc/mtab (测试挂载结果,成功与否) /df -Th
systemctl start httpd
netstat -anpt | grep httpd
客户机2:
mount 192.168.1.100:/opt/web2 /var/www.html
tail -l /etc/mtab / df -Th
systemctl start httpd
systemctl enable httpd
netstat -anpt | grep httpd
测试:
客户机1: hhtp://localhost
客户机2: hhtp://localhost
将存储服务器上的资源永久挂载需要改/etc/fstab
客户机1:
vi /etc/fstab
192.168.1.100:/opt/web1 /var/www/html nfs defaults,_netdey 0 0 #_netdey代表需要使用网络
客户机2:
vi /etc/fstab
192.168.1.100:/opt/web2 /var/www/html nfs defaults,_netdev 0 0
时间的同步的作用:
NTP:(Network TimeProtocol,网络时间协议)是用来使计算机时间同步的一种协议。它可以使计算机对其服务器或时钟源做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒)。对于服务器群集来说,这个是一个很重要的服务,因为群集需要保证每个服务器的时间是保持一致的,这样它们在执行同一个任务时才不会出现有的服务器有滞后的现象,这样群集的状态才是健康的。
NTP的工作模式:C/S模式
NTP的协议及端口号:UDP协议123号端口
配置步骤:
服务器端:
yum -y insatll ntp ntpdate
ntpdate ntp.aliyun.com(先保证自己的)
1.修改配置文件
vi /etc/ntp.conf
8 restrict default nomodify
#restrict、default定义默认访问规则,nomodify禁止远程主机修改本地服务器配置。
17 restrict 20.0.0.0 mask 255.255.255.0 nomodify notrap
#从20.0.0.1-20.0.0.254的主机都可以使用我们的NTP服务器来同步时间
21-24行删除
加两行
fudge 127.127.1.0 stratum10 设置本机的时间层级为10级,0级代表时间层级是0级,是向其他服务器提供时间同步源的意思,不要设置为0级
Stratum 0
NTP网络从权威时间源获取时间。这些权威的时间源,也称为第0层设备,是高精度的计时设备,被认为是准确的,并且几乎没有延迟或与之相关联。图中的时钟表示第0层设备
Stratum 1
第1层设备直接连接到权威时间源。它们充当主要的网络时间标准。
Stratum 2 and Lower
第2层服务器通过网络连接到第1层设备。诸如NTP客户端之类的第2层设备通过使用第1层服务器的NTP数据包来同步其时间。它们还可以充当第3层设备的服务器
较小的层号表示服务器比较大的层号更接近授权时间源,层数越大,层数越低。最大跃点数为15.
层16(最低层级别)指示设备未同步。可以将同一层级别上的时间服务器配置为与同一层级别上的其他时间服务器作为对等方,以备份或验证时间。
server 127.127.1.10 #指定本机为时间同步源
2.启动服务
systemctl start ntpd
3.检查服务开放情况
netstat -aupu | grep ntpd
4.设置周期性任务计划
crontab -e
* * * * * /usr/sbin/ntpdate ntp.aliyun.com
5.验证效果
data 验证下时间(获取本地时间,格式是年月日时分秒)
客户端:
1.安装同步软件
yum -y install ntpdate
2.设定同步源
ntpdate 20.0.0.10
3.创建任务计划
crontab -e
* * * * * /usr/sbin/ntpdate 20.0.0.10
4.验证效果
data 验证下时间
远程yum仓库
远程yum仓库
用一台服务器,去搭建一个yum仓库的服务,被远程的另外一台服务器所使用,直接可以进行访问
自定义yum仓库,同时不仅本地可以使用,其他服务器也可以使用
利用ftp的模式可以有效通过
IP:20.0.0.11 主机名:server1
作为服务端,提供软件源环境
IP:20.0.0.12 主机名:server2
作为客户端,享有软件包源
服务端:连接镜像
挂载镜像
[root@server1 ~]# mount /dev/sr0 /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@server1 ~]# df -HT //查看镜像文件是否成功挂载
[root@server1 ~]# ls /mnt/ //查看挂载目录中的内容
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
安装ftp服务,并在/var目录下查看是否生成ftp文件
[root@server1 var]# yum -y install vsftpd
[root@server1 ~]# cd /var/
ftp
[root@server1 var]# cd ftp/
[root@server1 ftp]# ls
pub(公共的包)
创建文件,作为yum仓库的源点(官方源)
[root@server1 ftp]# mkdir centos7
[root@server1 ftp]# ls
centos7 pub
[root@server1 ftp]# ls centos7/
[root@server1 ftp]# cp -rf /mnt/* centos7/ & //将/mnt目录下所以的文件复制到新建的目录下,并放在后台允许
[1] 12585
[root@server1 ftp]# jobs
[1]+ 运行中 cp -i -rf /mnt/* centos7/ &
创建一个扩展的目录(扩展源)
[root@server1 ftp]# mkdir other
[root@server1 ftp]# ls
centos7 other pub
[root@server1 ftp]# createrepo -g /mnt/repodata/repomd.xml other/
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
查看两个目录内容是否已存在
[root@server1 ftp]# cd centos7/
[root@server1 centos7]# ls
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
[root@server1 centos7]# cd ../other/
[root@server1 other]# ls
repodata
[root@server1 other]# cd repodata/
[root@server1 repodata]# ls
01a3b489a465bcac22a43492163df43451dc6ce47d27f66de289756b91635523-filelists.sqlite.bz2
401dc19bda88c82c403423fb835844d64345f7e95f5b9835888189c03834cc93-filelists.xml.gz
5dc1e6e73c84803f059bb3065e684e56adfc289a7e398946574d79dac6643945-primary.sqlite.bz2
5f62201963ee83e178738d9f88078560377cc06f972a4c0094ab3be00cae515f-repomd.xml
6bf9672d0862e8ef8b8ff05a2fd0208a922b1f5978e6589d87944c88259cb670-other.xml.gz
7c36572015e075add2b38b900837bcdbb8a504130ddff49b2351a7fc0affa3d4-other.sqlite.bz2
c48538ac0f65ece36eb71d41b76f1eb1f98c58cc26777348490feaed8f38ab56-repomd.xml.gz
dabe2ce5481d23de1f4f52bdcfee0f9af98316c9e0de2ce8123adeefa0dd08b9-primary.xml.gz
repomd.xml
开启ftp服务
[root@server1 repodata]# cd ~
[root@server1 ~]# systemctl start vsftpd
查看21号端口(连接端口(连接服务器))是否开启
[root@server1 ~]# netstat -ntap | grep 21
tcp6 0 0 :::21 :::* LISTEN 12961/vsftpd
查看20号端口(数据传输端口(控制上传和下载))是否开启(此时,没有开启)
[root@server1 ~]# netstat -ntap | grep 20
关闭防火墙和核心防护
[root@server1 ~]# systemctl stop firewalld.service
[root@server1 ~]# setenforce 0
客户端测试是否能通过ftp服务连接上服务端
客户端:
下载ftp服务:[root@server2 ~]# yum -y install ftp
访问服务端:
[root@server2 ~]# ftp 20.0.0.11
Connected to 20.0.0.11 (20.0.0.11).
220 (vsFTPd 3.0.2)
Name (20.0.0.11:root): ftp (使用匿名登录)
331 Please specify the password.
Password: (匿名登录不需要密码。直接回车)
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls //查看文件,发现登录的是站点目录
227 Entering Passive Mode (20,0,0,11,96,132).
150 Here comes the directory listing.
drwxr-xr-x 8 0 0 220 Dec 29 07:53 centos7
drwxr-xr-x 3 0 0 22 Dec 29 08:19 other
drwxr-xr-x 2 0 0 6 Aug 03 2017 pub
226 Directory send OK.
ftp> bye //退出
221 Goodbye.
在yum仓库源中,创建新目录
[root@server2 ~]# cd /etc/yum.repos.d/ (本地yum仓库存放的镜像文件位置)
[root@server2 yum.repos.d]# mkdir bak
将同路径所以以.repo结尾的文件放到bak中
[root@server2 yum.repos.d]# mv *.repo bak/
[root@server2 yum.repos.d]# ls
backup bak
[root@server2 yum.repos.d]# ls bak/
local.repo
[root@server2 yum.repos.d]# yum clean all(清除yum仓库缓存)
[root@server2 yum.repos.d]# yum list (列出资源库中特定的可以安装或更新以及已经安装的rpm包)
[root@server2 yum.repos.d]# vim centos7.repo (创建文件)(以下为内部添加的内容)
[base]
name=centos7.Packages
baseurl=ftp://20.0.0.11/centos7
enabled=1
gpgcheck=1
gpgkey=ftp://20.0.0.11/centos7/RPM-GPG-KEY-CentOS-7
[other]
name=other.Packages
baseurl=ftp://20.0.0.11/other
enabled=1
gpgcheck=0
[root@server2 yum.repos.d]# yum list(列出资源库中特定的可以安装或更新以及已经安装的rpm包)
测试是否能安装软件包:(发现可以安装成功)
[root@server2 yum.repos.d]# yum install httpd -y
已安装: httpd.x86_64 0:2.4.6-67.el7.centos
[root@server2 yum.repos.d]# systemctl start httpd
[root@server2 yum.repos.d]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since 二 2020-12-29 17:33:35 CST; 17s ago
关闭防火墙和核心防护
[root@server2 yum.repos.d]# systemctl stop firewalld.service
[root@server2 yum.repos.d]# setenforce 0
可以访问apache网站
[root@server2 yum.repos.d]# yum update (yum更新)
[root@server2 yum.repos.d]# yum upgrade(也是yum更新)
两者之间的区别
yum update(更新软件包,更新软件和系统内核)
yum upgrade(只更新软件包)
[root@server2 yum.repos.d]# yum upgrade (提示没有更新包,是因为此时服务端的包是最新的)
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
No packages marked for update
服务器是可以更新包的
[root@server1 other]# yum upgrade
附加:
yum 是 Fedora RHEL Centos SUSE等linux 发行版的 软件包管理工具
通过 执行 man yum 查看yum的帮助信息 可以知道
yum makecache 是 将服务器上的软件包信息 现在本地缓存,以提高 搜索 安装软件的速度
yum 主要的一下命令如下:
yum search 软件包 搜索软件包
yum install 软件包 安装软件包
yum remove 软件包
yum update 更新系统
等等
若安装软件报错,可以尝试
yum clean all
yum list
来解决
NFS
服务器:20.0.0.11 主机名:server1
客户端:20.0.0.12 主机名:server2
服务端配置:
服务器端提供存储空间,供其他人用
服务器添加一块磁盘,40G,确定,并重启虚拟机,做验证
[root@server1 ~]# ls /dev/(查看磁盘是否添加成功)
sdb
[root@server1 ~]# fdisk /dev/sdb //分区
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x080492dd 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@server1 ~]# mkfs.xfs /dev/sdb1 //格式化分区
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=1310656 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5242624, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@server1 ~]# vim /etc/fstab //挂载
/dev/sdb1 /mnt xfs defaults 0 0
[root@server1 ~]# mount -a
[root@server1 ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sdb1 xfs 20G 33M 20G 1% /mnt
安装两个包
[root@server1 ~]# yum -y install nfs-utils rpcbind (rpcbind:远程过程调用 nfs-utils:工具包)
两个服务设置为开机自启动,不影响实验
[root@server1 ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@server1 ~]# systemctl enable rpcbind.service
Created symlink from /etc/systemd/system/multi-user.target.wants/rpcbind.service to /usr/lib/systemd/system/rpcbind.service.
修改共享(存储)的配置文件
[root@server1 ~]# vim /etc/exports(里面内容是空的,需要自己添加)
/mnt 20.0.0.0/24(rw,sync,no_root_squash)(/mnt提供资源磁盘的挂载点)(20.0.0.0/24:接收提供服务的网段)(rw:支持他人可读可写)(sync:同步)(no_root_squash:不然对 方降级处理)
启动服务(nfs、rpcbind)
[root@server1 ~]# systemctl start nfs
[root@server1 ~]# systemctl start rpcbind
查看服务是否启动
[root@server1 ~]# netstat -anpt | grep rpcbind
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 2567/rpcbind
tcp6 0 0 :::111 :::* LISTEN 2567/rpcbind
关闭防火墙,核心防护
[root@server1 ~]# systemctl stop firewalld.service
[root@server1 ~]# setenforce 0
查看资源服务是否已经提供出去
[root@server1 ~]# showmount -e
Export list for server1:
/mnt 20.0.0.0/24
客户端验证(磁盘资源是否正常使用)
关闭防火墙,核心防护
[root@server2 ~]# systemctl stop firewalld.service
[root@server2 ~]# setenforce 0
安装httpd服务
[root@server2 ~]# yum -y install httpd
httpd服务网站站点位置:[root@server2 ~]# cd /var/www/html/
站点如何使用服务端提供的存储空间?
第一种方式:
[root@server2 ~]# mount 20.0.0.11:/mnt /var/www/html/
[root@server2 ~]# df -Th(查看是否挂载成功)
20.0.0.11:/mnt nfs4 40G 33M 40G 1% /var/www/html
第二种方式:
[root@server2 ~]# umount /var/www/html/ (取消挂载,避免对第二种方案产生影响)
启动自动挂载:
[root@server2 ~]# vim /etc/fstab
20.0.0.11:/mnt /var/www/html nfs defaults,_netdev 0 0
[root@server2 ~]# mount -a
[root@server2 ~]# df -Th
20.0.0.11:/mnt nfs4 40G 33M 40G 1% /var/www/html
挂载上去之后,就可以写入数据
[root@server2 ~]# cd /var/www/html/
[root@server2 html]# ls
[root@server2 html]# vim index.html
<h1>this is nfs web</h1>
[root@server2 html]# cat index.html
<h1>this is nfs web</h1>
启动httpd服务
[root@server2 html]# systemctl start httpd
其他设备进行访问
验证该文件存储在服务器还是本地中:
服务器上查看:(发现存在与远程服务器上,这就叫做远程存储)
[root@server1 ~]# cd /mnt/
[root@server1 mnt]# ls
index.html
[root@server1 mnt]# cat index.html
<h1>this is nfs web</h1>
如果此时服务器突然宕机:模拟宕机
[root@server1 mnt]# systemctl stop nfs
客户端操作:
[root@server1 mnt]# df -TH(输入之后无显示内容)
如何解决:(xshell另起一台终端)tty(控制终端数量)
[root@server2 ~]# umount -lf /var/www/html(l:解除正在繁忙的挂载点 f:强制)(不要用tab键,否正会卡住)
[root@server2 ~]# df -HT(此时内容才恢复出来)
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda3 xfs 42G 4.8G 37G 12% /
devtmpfs devtmpfs 941M 0 941M 0% /dev
tmpfs tmpfs 956M 0 956M 0% /dev/shm
tmpfs tmpfs 956M 18M 938M 2% /run
tmpfs tmpfs 956M 0 956M 0% /sys/fs/cgroup
/dev/sda5 xfs 21G 34M 21G 1% /home
/dev/sr0 iso9660 4.6G 4.6G 0 100% /mnt
/dev/sda1 xfs 1.1G 182M 882M 18% /boot
tmpfs tmpfs 192M 4.1k 192M 1% /run/user/42
tmpfs tmpfs 192M 37k 192M 1% /run/user/0
附加:mount -a
mount -a 就是重新加载fstab文件中的内容,相当于更新你刚刚修改fstab文件内容