Linux网络服务--远程YUM仓库与NFS(构建远程YUM仓库与NFS共享存储服务,YUM与NFS工具的使用)

文章目录

  • 前言
  • 一:构建远程YUM仓库
      • 1.1:YUM概述
      • 1.2:准备网络安装源(服务器端)
          • 1.2.1:软件仓库的提供方式
          • 1.2.2:RPM软件包的来源
          • 1.2.3:构建CentOS7软件仓库
          • 1.2.4:在软件仓库中加入非官方RPM包组
          • 1.2.5:配置软件仓库位置(客户机端)
      • 1.3:构建实验
          • 1.3.1:构建环境
          • 1.3.2:实验过程
      • 1.4:yum工具概述
      • 1.5:软件包查询
      • 1.6:软件安装升级与卸载
  • 二:NFS共享存储服务
      • 2.1:网络文件系统(Network File System)
      • 2.2:使用NFS发布共享资源
      • 2.3:在客户机中访问NFS共享资源
      • 2.4:构建NFS实验
          • 2.4.1:实验环境
          • 2.4.2:实验过程

前言

  • Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

  • 网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(pressentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。

    对于大多数负责均衡群集来说,使用NFS协议来共享数据存储是比较常见的做法,NFS也是NAS存储设备必然支持的一种协议。

    但是,NFS没有用户认证机制,而且数据在网络上明文传输,所以安全性很差,一般只能在局域网中使用。

一:构建远程YUM仓库

1.1:YUM概述

  • YUM(Yellow dog Updater, Modified)

  • 基于RPM包构建的软件更新机制

  • 可以自动解决依赖关系

  • 所有软件包由几种的YUM软件仓库提供

    Linux网络服务--远程YUM仓库与NFS(构建远程YUM仓库与NFS共享存储服务,YUM与NFS工具的使用)_第1张图片

1.2:准备网络安装源(服务器端)

1.2.1:软件仓库的提供方式
  • FTP服务:ftp://…
  • HTTP服务: http://…
  • 本地目录:file://…
1.2.2:RPM软件包的来源
  • CentOS发布的RPM包集合
  • 第三方组织发布的RPM包集合
  • 用户自定义的RPM包集合
1.2.3:构建CentOS7软件仓库
  • RPM包来自CentOS7 DVD光盘
  • 通过FTP,HTTP或本地目录提供给客户机
1.2.4:在软件仓库中加入非官方RPM包组
  • 包括存在依赖关系的所有RPM包
  • 使用createrepo工具建立仓库数据文件
1.2.5:配置软件仓库位置(客户机端)
  • 为客户机指定YUM仓库位置

    配置文件:/etc/yum.repo.d/*.repo

  • 直接以CentOS 7光盘作软件仓库

    将CentOS7光盘放入光驱

    指定仓库位置,URL地址为file:///media/cdrom

1.3:构建实验

1.3.1:构建环境
  • VMware 软件
  • centos7虚拟机两台
1.3.2:实验过程

第一步:将centos7光盘镜像挂载到服务端(光盘镜像要连接状态)

[root@localhost ~]# hostnamectl set-hostname server		'修改主机名为服务端,方便区分'
[root@localhost ~]# su
[root@server ~]# mount /dev/sr0 /mnt	'将镜像挂载到本地'
mount: /dev/sr0 is write-protected, mounting read-only
[root@server ~]# df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/sda2      xfs        20G  3.1G   17G  16% /
...省略部分内容
/dev/sr0       iso9660   4.3G  4.3G     0 100% /mnt
[root@server ~]# 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

第二步:进入服务器站点,将镜像复制到文件夹

[root@server ~]# cd /var
[root@server var]# ls		'发下没有ftp站点,所以需要安装vsftpd软件'
account  cache  db     games   kerberos  local  log   nis  preserve  spool  yp
adm      crash  empty  gopher  lib       lock   mail  opt  run       tmp
[root@server var]# yum install vsftpd -y	'安装vsftpd'
...省略部分内容
[root@server var]# ls
account  cache  db     ftp    gopher    lib    lock  mail  opt       run    tmp
adm      crash  empty  games  kerberos  local  log   nis   preserve  spool  yp
[root@server var]# cd ftp
[root@server ftp]# ls
pub
[root@server ftp]# pwd
/var/ftp
[root@server ftp]# mkdir centos7	'在站点下创建文件夹,存放镜像'
[root@server ftp]# ls
centos7  pub
[root@server ftp]# ls centos7
[root@server ftp]# cp -rf /mnt/* centos7/&	'将镜像强制复制到centos7中,并在后台运行'
[1] 9301
[root@server ftp]# jobs			'查看后台运行程序'
[1]+  Running                 cp -i -rf /mnt/* centos7/ &
[root@server ftp]# mkdir other		'创建扩展目录,用于创建repodata数据文件'
[root@server ftp]# ls
centos7  other  pub
'若已将作为源发布的其他 rpm 安 
装包文件存放到/var/ftp/other 目录下,则可执行以下操作为其创建 repodata 数据。'
[root@server ftp]# createrepo -g /mnt/repodata/repomd.xml  other		'以现有的repodata目录为样板 '
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[1]+  Done                    cp -i -rf /mnt/* centos7/
[root@server ftp]# ls centos7
CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7
EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL
[root@server ftp]# ls other/repodata
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
[root@server other]# cd

第三步:开启vsftpd服务

[root@server ~]# systemctl start vsftpd
[root@server ~]# netstat -ntap | grep 21
tcp6       0      0 :::21                   :::*                    LISTEN      12216/vsftpd        
[root@server ~]# netstat -ntap | grep 20

vsftpd中

21端口负责连接服务器

20端口负责上传和下载

[root@server ~]# systemctl stop firewalld.service 	'关闭防火墙'
[root@server ~]# setenforce 0

第四步:进入客户端配置:安装ftp服务,查看是否可以看到站点

[root@client ~]# yum install ftp -y
[root@client ~]# ftp 192.168.197.172	'使用ftp用匿名方式登录服务端'
Connected to 192.168.197.172 (192.168.197.172).
220 (vsFTPd 3.0.2)
Name (192.168.197.172:root): ftp	'输入名称'
331 Please specify the password.
Password:	'输入root用户登录密码'
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls	'发现可以查看到站点中的文件'
227 Entering Passive Mode (192,168,197,172,88,1).
150 Here comes the directory listing.
drwxr-xr-x    8 0        0             220 Nov 25 03:15 centos7
drwxr-xr-x    3 0        0              22 Nov 25 03:16 other
drwxr-xr-x    2 0        0               6 Oct 30  2018 pub
226 Directory send OK.
ftp> bye
221 Goodbye.

第五步:将所有的repo文件移动到文件夹中

[root@client ~]# cd /etc/yum.repos.d/
[root@client yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo
[root@client yum.repos.d]# mkdir bak
[root@client yum.repos.d]#mv *.repo bak
[root@client yum.repos.d]#ls bak
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo

第六步:清空缓存,自己写一个repo文件,并将秘钥复制到其中

[root@client yum.repos.d]# vim centos7.repo 
[base]		'//仓库类别'
name=centos7.packages		'//仓库名称(说明) '
baseurl=ftp://192.168.197.172/centos7		'//URL 访问路径 '
enabled=1		'//启用此软件仓库 '
gpgcheck=1		'//验证软件包的签名 '
gpgkey=ftp://192.168.197.128/centos7/RPM-GPG-KEY-CentOS-7		'将服务端复制的秘钥粘贴到此,//GPG 公钥文件的位置 '

[other]
name=other.packages
baseurl=ftp://192.168.197.172/other
enabled=1
gpgcheck=0		'//不验证软件包的签名 '
'在服务端查看秘钥并复制'
[root@server ftp]# ls centos7 	'服务端查看'
CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7
EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL

第七步:此时yum list 已经生效(可以安装安装软件包和进行更新相关操作了)

  • yum update 更新软件包,连内核一起更新

    yum upgrade 只更新软件包,但不更新内核

1.4:yum工具概述

  • 关于yum命令
    • 由软件包yum-…提供
    • 用来访问yum仓库,查询,下载及安装,卸载软件包
  • yum的配置文件
    • 基本设置:/etc/yum.conf
    • 仓库设置:/etc/yum.repos.d/*.repo
    • 日志文件:/var/log/yum.log
  • yum缓存目录
    • 存放下载的软件包,仓库信息等数据
    • 位于/var/cache/yum/ b a s e a r c h ( 硬 件 架 构 , 如 x 8 6 6 4 ) / basearch(硬件架构,如x86_64)/ basearch(x8664)/releasever(OS版本)
  • 清理缓存数据
    • yum clean all

1.5:软件包查询

  • 查询软件包
    • yum list [软件名]…
    • yum info [软件名]…
    • yum search <关键词>…
  • 查询软件包组
    • yum grouplist [包组名]…
    • yum groupinfo <包组名>…

1.6:软件安装升级与卸载

  • 安装软件

    • yum install [软件名]
    • yum groupinstall <包组名>
  • 升级软件

    • yum update

    • yum groupdate

    • yum update 更新软件包,连内核一起更新

      yum upgrade 只更新软件包,但不更新内核

  • 卸载软件

    • yum remove <软件名>…
    • yum groupremove <包组名>…

二:NFS共享存储服务

2.1:网络文件系统(Network File System)

  • 依赖于RPC(远程过程调用)
  • 需安装nfs-utils,rpcbind软件包
  • 系统服务:nfs,rpcbind
  • 共享配置文件:/etc/exports

2.2:使用NFS发布共享资源

  • 安装nfs-utils,rpcbind软件包

    • 提供RPC支持的服务为rpcbind,提供NFS共享的服务为nfs,安装完成后建议调整为开机自启动状态
    • 手动加载NFS共享服务时,应先启动rpcbind,然后在启动nfs
  • 设置共享目录

    • NFS的配置文件为/etc/exports,文件内容默认为空(无任何共享)

    • 在exports文件中设置共享资源时,记录格式为“目录位置 客户机地址(权限选项)”

    • [root@localhost opt]# mkdir wwwroot
      [root@localhost opt]# vim /etc/exports
      /opt/wwwroot  192.168.197.171(rw,sync,no_root_squash)
      
      
  • 启动NFS服务程序

    [root@localhost opt]# mkdir wwwroot
    [root@localhost opt]# vim /etc/exports
    [root@localhost opt]# systemctl start rpcbind
    [root@localhost opt]# systemctl start nfs
    [root@localhost opt]# netstat -nuap | grep rpcbind
    udp        0      0 0.0.0.0:600             0.0.0.0:*                           48338/rpcbind       
    udp        0      0 0.0.0.0:111             0.0.0.0:*                           48338/rpcbind  
    
  • 查看本机发布的NFS共享目录

    showmount -e

2.3:在客户机中访问NFS共享资源

  • 安装rpcbind软件包,并启动rpcbind服务

    • 若要正常访问NFS共享资源,客户机中也需要安装rpcbind软件包,并启动rpcbind服务
    • 为了可以使用showmount查询工具,建议将nfs-utils软件包也一并装上
    • 使用 “showmount -e 服务器地址”可以查看NFS服务器端共享了那些目录
  • 手动挂载NFS共享目录

    • 以root用户身份执行mount操作,将NFS服务器共享的/opt/wwwroot目录挂载到本地目录/var/www/html
    • 与挂载本地文件系统不同的是,设备位置处应指出服务器地址
    • 如:mount 192.168.197.171:/opt/wwwroot /var/www/html
    • 完成挂在后,访问客户机的/var/www/html文件夹,相当于访问NFS服务器中的/opt/wwwroot文件夹,其中的网络映射过程对于用户程序来说是透明的
  • fstab自动挂载设置

    • 修改/etc/fstab配置文件,加入NFS共享目录的挂载设置。

    • 注意将文件系统类型设置为nfs,挂载参数建议添加_netdev(设备需要网络)

    • 若添加soft,intr参数可以实现软挂载,允许在网络中断时放弃挂载。

    • [root@localhost opt]# vim /etc/fstab
      192.168.197.171:/opt/wwwroot /var/www/html      nfs     defaults,_netdev        0 0
      
  • 强制卸载NFS

    • NFS客户端与服务器端的耦合度是非常高的,如果客户端正在挂载使用,服务器端NFS服务突然停掉了,那么在客户端就会出现df -h命令卡死的现象
    • 此时使用umount命令是无法直接卸载的,需要加上-lf才能卸载
    • 出现卡死现象时,需要重新打开一个终端,执行 cat/etc/rc.local命令,查看挂载点
    • 然后使用umount命令卸载,其中-l表示解除正在繁忙的文件系统,-f表示强制

2.4:构建NFS实验

2.4.1:实验环境
  • VMware软件
  • 两个centos7系统,一个做客户端,一个做服务端
2.4.2:实验过程
  • 第一步:服务端添加硬盘并重启,服务端和客户端都修改名称

    客户端修改
    [root@localhost ~]# hostnamectl set-hostname client
    [root@localhost ~]# su
    [root@client ~]# 
    服务器端修改
    [root@localhost ~]# hostnamectl set-hostname server
    [root@localhost ~]# su
    [root@server ~]# 
    
  • 第二步:格式化并挂载刚添加的硬盘

    格式化磁盘步骤省略,如有疑问查看我之前博客
    [root@server ~]# vim /etc/fstab
    [root@server ~]# mount -a
    [root@server ~]# df -hT
    Filesystem     Type      Size  Used Avail Use% Mounted on
    /dev/sda2      xfs        20G  4.1G   16G  21% /
    devtmpfs       devtmpfs  898M     0  898M   0% /dev
    tmpfs          tmpfs     912M     0  912M   0% /dev/shm
    tmpfs          tmpfs     912M  9.0M  903M   1% /run
    tmpfs          tmpfs     912M     0  912M   0% /sys/fs/cgroup
    /dev/sda5      xfs        10G   52M   10G   1% /home
    /dev/sda1      xfs       6.0G  174M  5.9G   3% /boot
    tmpfs          tmpfs     183M  8.0K  183M   1% /run/user/42
    tmpfs          tmpfs     183M     0  183M   0% /run/user/0
    /dev/sdb1      xfs        20G   33M   20G   1% /mnt
    
    
  • 第三步:安装nfs-utils rpcbind,并设置为开机自启

    [root@server ~]# yum install nfs-utils rpcbind -y
    [root@server ~]# 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@server ~]# systemctl enable rpcbind.service 
    Created symlink from /etc/systemd/system/multi-user.target.wants/rpcbind.service to /usr/lib/systemd/system/rpcbind.service.
    
  • 第四步:设置共享目录,启动服务并关闭防护墙

    [root@server ~]# vim /etc/exports
    /mnt    192.168.197.0/24(rw,sync,no_root_squash)
    [root@server ~]# systemctl start nfs
    [root@server ~]# systemctl start rpcbind
    [root@server ~]# netstat -ntap | grep rpc
    tcp        0      0 0.0.0.0:35312           0.0.0.0:*               LISTEN      14124/rpc.statd     
    tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      14125/rpc.mountd    
    tcp6       0      0 :::20048                :::*                    LISTEN      14125/rpc.mountd    
    tcp6       0      0 :::58102                :::*                    LISTEN      14124/rpc.statd  
    [root@server ~]# systemctl stop firewalld.service 
    [root@server ~]# setenforce 0
    
    
  • 第五步:查看本机发布的NFS共享目录

    [root@server ~]# showmount -e
    Export list for server:
    /mnt 192.168.197.0/24
    
    
  • 第六步:进客户端,关闭防火墙,安装httpd服务

    [root@client ~]# systemctl stop firewalld.service 
    [root@client ~]# setenforce 0
    [root@client ~]# yum install httpd -y
    
  • 第七步:手动挂载NFS共享目录或者使用自动挂载

    [root@client ~]# mount 192.168.197.173:/mnt /var/www/html
    [root@client ~]# df -hT
    Filesystem           Type      Size  Used Avail Use% Mounted on
    /dev/sda2            xfs        20G  4.1G   16G  21% /
    devtmpfs             devtmpfs  898M     0  898M   0% /dev
    tmpfs                tmpfs     912M     0  912M   0% /dev/shm
    tmpfs                tmpfs     912M  9.0M  903M   1% /run
    tmpfs                tmpfs     912M     0  912M   0% /sys/fs/cgroup
    /dev/sda5            xfs        10G   37M   10G   1% /home
    /dev/sda1            xfs       6.0G  174M  5.9G   3% /boot
    tmpfs                tmpfs     183M   12K  183M   1% /run/user/42
    tmpfs                tmpfs     183M     0  183M   0% /run/user/0
    192.168.197.173:/mnt nfs4       20G   32M   20G   1% /var/www/html
    
    [root@client ~]# umount /var/www/html
    [root@client ~]# vim /etc/fstab
    192.168.197.173:/mnt    /var/www/html   nfs     defausts,_netdev        0 0
    [root@client ~]# mount -a
    [root@client ~]# df -hT
    Filesystem           Type      Size  Used Avail Use% Mounted on
    /dev/sda2            xfs        20G  4.1G   16G  21% /
    devtmpfs             devtmpfs  898M     0  898M   0% /dev
    tmpfs                tmpfs     912M     0  912M   0% /dev/shm
    tmpfs                tmpfs     912M  9.0M  903M   1% /run
    tmpfs                tmpfs     912M     0  912M   0% /sys/fs/cgroup
    /dev/sda5            xfs        10G   37M   10G   1% /home
    /dev/sda1            xfs       6.0G  174M  5.9G   3% /boot
    tmpfs                tmpfs     183M   12K  183M   1% /run/user/42
    tmpfs                tmpfs     183M     0  183M   0% /run/user/0
    192.168.197.173:/mnt nfs4       20G   32M   20G   1% /var/www/html
    
    
  • 第八步:配置httpd网页并开启服务

    [root@client ~]# cd /var/www/html
    [root@client html]# ls
    [root@client html]# vim index.html
    

    this is nfs web

    [root@client html]# systemctl start httpd.service 用客户端的网址登陆

    Linux网络服务--远程YUM仓库与NFS(构建远程YUM仓库与NFS共享存储服务,YUM与NFS工具的使用)_第2张图片

  • 第九步:发现服务器端也有了刚刚配置的内容

    [root@server ~]# cd /mnt
    [root@server mnt]# ls
    index.html
    [root@server mnt]# cat index.html 
    

    this is nfs web

  • 第十步:设置服务器端NFS服务断掉,开始强制卸载

    [root@server mnt]# systemctl stop nfs
    [root@server mnt]# 
    '发现客户端使用df -hT 卡死'
    

    Linux网络服务--远程YUM仓库与NFS(构建远程YUM仓库与NFS共享存储服务,YUM与NFS工具的使用)_第3张图片

    Linux网络服务--远程YUM仓库与NFS(构建远程YUM仓库与NFS共享存储服务,YUM与NFS工具的使用)_第4张图片

你可能感兴趣的:(Linux网络服务,虚拟化与网络存储系统,远程yum仓库,使用NFS发布共享资源,在客户机中访问NFS共享资源,yum工具概述,yum软件安装升级与卸载)