1. 各种方式建立 YUM 仓库
1.1 YUM 概述
YUM(Yellow dog Updater Modified)是基于 RPM 包构建的软件更新机制,可以自动解决依赖关系,所有软件包由集中的 YUM 软件仓库提供。
1.2 常用 YUM 仓库类型
本地 YUM 仓库
远程 YUM 仓库
网络 YUM 源
1.3 YUM 命令使用
yum -y install 软件名 #安装、升级软件包,"-y" 选项表示自动确认
yum -y remove 软件名 #卸载软件包,可自动解决其依赖关系
yum -y update 软件名 #升级软件包
yum list #查询软件包列表
yum list installed #查询系统中已安装的软件包
yum list available #查询仓库中尚未安装的软件包
yum list updates #查询可以升级版本的软件包
yum info 软件名 #查询软件包的描述信息
yum history list #列出最近的历史
yum history info 包名 #列出安装某个包的详细信息
yum history undo 包名 #撤销某次更改
yum search [all] 关键词 #根据某个关键词来查找相关的软件包
yum whatprovides 命令 #查询命令属于哪个软件包
yum clean all && yum makecache #删除 yum 缓存并更新
yum -y install epel-release #一个扩展源,安装后删除 yum 缓存并更新
yum -y install 包名 --downloadonly #下载 rpm 包而不安装
yum -y reinstall 包名 --downloadonly #下载已安装过的 rpm 包
yum -y install 包名 --downloadonly --downloaddir=/tmp/ #下载 rpm 包到指定目录
1.4 搭建本地 YUM 仓库
(1) 方法一
VMware 虚拟机设置里 CD/DVD 一栏设备状态勾选已连接
#将光盘挂载到 /mnt 目录下
mount /dev/cdrom /mnt/ 或 mount /dev/sr0 /mnt/
#将原 repo 文件备份
cd /etc/yum.repos.d/ && mkdir repos.backup && mv ./*.repo repos.backup
#添加新的本地 repo 文件
cat > CentOS-local.repo << EOF
[local]
name=local
baseurl=file:///mnt #指定 URL 访问路径为光盘挂载目录
gpgcheck=0 #不验证软件包的签名
enabled=1 #开启此 yum 源,此为默认项,可省略,0 为关闭
EOF
#重建 yum 缓存
yum clean all && yum makecache
#测试是否生效
yum info vsftpd
(2) 方法二
#创建 iso 挂载点,并上传 centos 镜像文件到 /media
mkdir /media/CentOS
#挂载
mount -t iso9660 /media/CentOS-7-x86_64-DVD-1908.iso /media/CentOS
#备份
cd /etc/yum.repos.d/ && mkdir repos.backup && mv ./*.repo repos.backup
#启用 CentOS-Media
cp -a repos.backup/CentOS-Media.repo ./ && sed -i 's/enabled=0/enabled=1/g' CentOS-Media.repo
yum clean all && yum makecache
yum info vsftpd
1.5 搭建远程 YUM 仓库
(1) FTP 服务端配置
#安装 vsftpd 服务端软件
yum -y install vsftpd
#创建光盘挂载目录
mkdir /var/ftp/centos7
#镜像挂载
VMware 虚拟机设置里 CD/DVD 一栏设备状态勾选已连接
mount /dev/sr0 /mnt
#复制所有 rpm 软件包到光盘挂载目录,& 代表后台工作,jobs 查看后台进程
cp -rf /mnt/* /var/ftp/centos7/ &
# 创建目录 repodata 数据文件
mkdir /var/ftp/other
#使用工具建立仓库数据文件,执行 yum -y install createrepo 安装
cd /var/ftp/other/
createrepo -g /mnt/repodata/repomd.xml ./
#启动 vsftpd 服务
systemctl start vsftpd && systemctl enable vsftpd
(2) 客户端配置
#安装 ftp 服务
yum -y install ftp
#测试能否连接 FTP 服务端
[root@c7-2 ~]#ftp 192.168.10.20
Connected to 192.168.10.20 (192.168.10.20).
220 (vsFTPd 3.0.2)
Name (192.168.10.20: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 (192,168,10,20,105,11).
150 Here comes the directory listing.
drwxr-xr-x 8 0 0 220 Sep 01 04:19 centos7
drwxr-xr-x 3 0 0 22 Sep 01 04:22 other
drwxr-xr-x 2 0 0 6 Jun 09 16:15 pub
226 Directory send OK.
ftp> quit
221 Goodbye.
#-----------------------
#备份原仓库文件
cd /etc/yum.repos.d/ && mkdir repos.backup && mv ./*.repo repos.backup
#创建新的 ftp.repo 仓库文件
vi /etc/yum.repos.d/ftp.repo
[ftp] #仓库类别
name=ftp #仓库名称(说明)
baseurl=ftp://192.168.10.20/centos7 # URL 访问路径
enabled=1 #启用此软件仓库
gpgcheck=0 #不验证软件包的签名
[other]
name=ftp
baseurl=ftp://192.168.10.20/other
enabled=1
gpgcheck=0
#这里没有使用验证,如果想验证,添加如下两行(去掉注释)
#gpgcheck=1 #验证软件包的签名
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 # GPG 公钥文件的位置
#-----------------------
yum clean all && yum makecache
yum info vsftpd #测试一下
1.6 构建网络 YUM 仓库
我们默认安装的 Linux 系统其实就是使用的网络 YUM 源,只不过是官方的 YUM 源,服务器在国外,速度可能不太好,我们可以将其换成国内的网络 YUM 源。
构建阿里云网络 YUM 源:
#我们以 Centos7 为例
cd /etc/yum.repos.d/ && mkdir repos.backup && mv ./*.repo repos.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all && yum makecache
其他国内 YUM 源地址:
#清华
https://mirrors.tuna.tsinghua.edu.cn/help/centos/
# 163
http://mirrors.163.com/.help/centos.html
#搜狐
http://mirrors.sohu.com/
#上海交大
http://ftp.sjtu.edu.cn/centos
#中科大
http://centos.ustc.edu.cn
2. NFS 共享存储服务
2.1 NFS 概述
NFS(Network File System)网络文件系统是一种基于 TCP/IP 传输的网络文件系统协议。通过使用 NFS 协议,客户机可以像本地目录一样访问远程服务器中的共享资源。
对于大多数负载均衡群集来说,使用 NFS 协议来共享数据存储是比较常见的做法,NFS 也是 NAS 存储设备必然支持的一种协议,但是由于 NFS 没有用户认证机制,而且数据在网络上明文传输,所以安全性很差,一般只能在局域网中使用。
NFS 服务的实现依赖于 RPC(Remote Process Call,远端过程调用)机制,以完成远程到本地的映射过程。所以需要安装 nfs-utils、rpcbind 软件包来提供 NFS 共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持。
共享配置文件:
/etc/exports
2.2 服务端配置
(1) 安装 nfs-utils、rpcbind 软件包
yum -y install nfs-utils rpcbind
(2) 设置共享目录
mkdir -p /opt/share
chmod 777 /opt/share
(3) 编辑配置文件
[root@c7-1 ~]#vim /etc/exports
/opt/share 192.168.10.0/24(rw,sync,no_root_squash)
#从左到右字段含义分别为
共享目录 允许访问的网段 可读写 同步写入磁盘内存 当客户以root身份访问时赋予本地root权限
说明:
客户机地址可以是主机名、IP地址、网段地址,允许使用 "*"、"?" 通配符
"rw" 表示允许读写,"ro" 表示为只读
sync:表示同步写入到内存与硬盘中
no_root_squash:表示当客户机以root身份访问时赋予本地root权限(默认是root_squash)
root_squash:表示客户机用root用户访问该共享目录时,将root用户映射成匿名用户
all_squash:所有访问用户都映射为匿名用户或用户组
async:将数据先保存在内存缓冲区中,必要时才写入磁盘
subtree_check(默认):若输出目录是一个子目录,则nfs服务器将检查其父目录的权限
no_subtree_check:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率
(4) 启动 NFS 共享服务程序
手动加载 NFS 共享服务时,应该先启动 rpcbind,再启动 nfs
systemctl start rpcbind && systemctl enable rpcbind
systemctl start nfs && systemctl enable nfs
查看 rpcbind 端口是否开启,rpcbind 服务默认使用 tcp 端口 111
netstat -anpt | grep rpcbind
(5) 查看本机发布的 NFS 共享目录
[root@c7-1 ~]#exportfs -rv
exporting 192.168.10.0/24:/opt/share
[root@c7-1 ~]#showmount -e
Export list for c7-1:
/opt/share 192.168.10.0/24
2.3 客户端配置
(1) 安装软件包并启动
yum -y install nfs-utils rpcbind
systemctl start rpcbind && systemctl enable rpcbind
(2) 查看 NFS 服务器端共享了哪些目录
[root@c7-2 ~]#showmount -e 192.168.10.20
Export list for 192.168.10.20:
/opt/share 192.168.10.0/24
(3) 手动挂载 NFS 共享目录
在客户机中创建一个资源共享的目录,然后把服务端共享的目录挂载在客户机创建的资源共享目录上
[root@c7-2 ~]#mkdir /testshare
[root@c7-2 ~]#mount 192.168.10.20:/opt/share /testshare
[root@c7-2 ~]#df -Th | grep share
192.168.10.20:/opt/share nfs4 50G 1.7G 49G 4% /testshare
(4) 设置自动挂载
# _netdev 表示挂载设备需要网络
[root@c7-2 ~]#echo "192.168.10.20:/opt/share /testshare nfs defaults,_netdev 0 0" >> /etc/fstab
[root@c7-2 ~]#mount -a
[root@c7-2 ~]#df -Th | grep share
192.168.10.20:/opt/share nfs4 50G 1.7G 49G 4% /testshare
(5) 测试是否可以共享文件
客户端:
[root@c7-2 ~]#cd /testshare/
[root@c7-2 /testshare]#touch 1.txt
[root@c7-2 /testshare]#ll
total 0
-rw-r--r-- 1 root root 0 Sep 1 14:58 1.txt
服务端:
[root@c7-1 ~]#ll /opt/share/
总用量 0
-rw-r--r-- 1 root root 0 9月 1 14:58 1.txt
(6) 强制卸载 NFS
如果服务端 NFS 服务突然停掉了,而客户端正在挂载使用时,在客户端执行 df -h 命令会出现卡死的现象,这个时候直接使用 umount 命令是无法直接卸载的,需要加上 -lf 选项:
umount -lf /testshare
NFS 参考: [NFS 共享存储](https://mp.weixin.qq.com/s/k_cqICW5zPhirPQkALbDTA)