KVM + GFS 分布式存储

目录

一、案例分析

1.1、案例概述 

1.2、案例前置知识点 

1)Glusterfs 简介 

2)Glusterfs 特点 

1.3、案例环境 

1)案例环境

2)案例需求 

3)案例实现思路 

二、案例实施 

2.1、安装部署 KVM 虚拟化平台 

1)安装 KVM 虚拟化平台 

2)验证 

3)开启 libvirtd 服务 

2.2、部署 GlusterFS  

1)关闭防火墙、SELiunx

2)编写 hosts 文件 

3)安装软件 

4)启动 Glusterfs 

5)在 node1 上添加所有节点

6)查看集群状态 

2.3、创建 Glusterfs 分布式复制卷 

2.4、客户端挂载 Glusterfs 卷 

1)安装 glusterfs 客户端软件。 

2)创建挂载目录,并挂载 models 卷。 

3)查看挂载卷 

2.5、KVM 使用卷创建虚拟机 

1)创建目录 

 2)上传镜像

3)创建虚拟机 

4)验证存储 


一、案例分析

1.1、案例概述 

本章案例主要使用之前章节所学的 KVM 及 GlusterFS 技术,结合起来从而实现 KVM 高可用。利用 GlusterFS 分布式复制卷,对 KVM 虚拟机文件进行分布存储和冗余。分布式复制卷主要用于需要冗余的情况下把一个文件存放在两个或两个以上的节点,当其中一个节点 数据丢失或者损坏之后,KVM 仍然能够通过卷组找到另一节点上存储的虚拟机文件,以保证虚拟机正常运行。当节点修复之后,GlusterFS 会自动同步同一组卷组里面有数据的节点数据。 

1.2、案例前置知识点 

1)Glusterfs 简介 

GlusterFS 分布式文件系统是由 Gluster 公司的创始人兼首席技术官 Anand Babu Periasamy 编写。一个可扩展的分布式文件系统,可用于大型的、分布式的、对大量数据进行访问的应用。它可运行于廉价的普通硬件上,并提供容错功能;也可以给大量的用户提供总体性能较高的服务。GlusterFS 可以根据存储需求快速调配存储,内含丰富的自动故障转移功能,且摒弃集中元数据服务器的思想。适用于数据密集型任务的可扩展网络文件系统, 且免费开源。Gluster 于 2011 年 10 月 7 日被 Red Hat 收购。 

2)Glusterfs 特点 

  • GlusterFS 体系结构,将计算、存储和 I/O 资源聚合到全局名称空间中,每台服务器都被视为节点,通过添加附加节点或向每个节点添加额外存储来扩展容量。通过在更多节点之间部署存储来提高性能。
  • GlusterFS 支持基于文件的镜像和复制、分条、负载平衡、故障转移、调度、磁盘缓存、存储配额、卷快照等功能。
  • GlusterFS 各客户端之间无连接,本身依赖于弹性哈希算法,而不是使用集中式或分布式元数据模型。
  • GlusterFS 通过各种复制选项提供数据可靠性和可用性,例如复制卷、分布卷。

1.3、案例环境 

1)案例环境

公司由于大规模使用 KVM 虚拟机来运行业务,为了保证公司虚拟机能够安全稳定运行,决定采用 KVM+GlusterFS 模式,来保证虚拟机存储的分布部署,以及分布冗余。避免当虚拟机文件损坏,或者丢失。从而在损坏或就丢失时有实时备份,保证业务正常运行。 

本案例环境如下表所示。 

主机操作系统主机名 / IP地址主要软件及版本
服务器CentOS 7.6node1 / 192.168.23.211GlusterFS 3.10.2
服务器CentOS 7.6node2 / 192.168.23.212GlusterFS 3.10.2
服务器CentOS 7.6node3 / 192.168.23.213GlusterFS 3.10.2
服务器CentOS 7.6node4 / 192.168.23.214GlusterFS 3.10.2
服务器CentOS 7.6kvm / 192.168.23.215KVM \ Gluster-client

 环境列表

 案例拓扑

2)案例需求 

  • 部署 GlusterFS 文件系统
  • 实现 KVM 虚拟主机不会因宿主机宕机而宕机 

3)案例实现思路 

  • 安装 KVM
  • 所有节点部署 GlusterFS
  • 客户端挂载 GlusterFS
  • KVM 使用挂载的 GlusterFS 目录创建虚拟机 

二、案例实施 

2.1、安装部署 KVM 虚拟化平台 

1)安装 KVM 虚拟化平台 

在 CentOS 的系统光盘镜像中,已经提供了安装 KVM 所需软件。通过部署基于光盘镜像的本地 YUM 源,直接使用 YUM 命令安装所需软件即可,安装 KVM 所需软件具体包含以下几个。 

[root@kvm ~]# yum -y install qemu-kvm qemu-kvm-tools virt-install qemu-img btidge-utils libvirt

2)验证 

重启系统后,查看 CPU 是否支持虚拟化,对于 Intel 的服务器可以通过以下命令查看, 只要有输出就说明 CPU 支持虚拟化;AMD 服务器可用 cat/proc/cpuinfo | grep smv 命令查 看。 

[root@kvm ~]# cat /proc/cpuinfo | grep vmx
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 arat umip pku ospke gfni vaes vpclmulqdq movdiri movdir64b md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities

检查 KVM 模块是否安装。

[root@kvm ~]# lsmod | grep kvm
kvm_intel             188740  0 
kvm                   637515  1 kvm_intel
irqbypass              13503  1 kvm

3)开启 libvirtd 服务 

安装完成后还需要开启 libvirtd 服务,以开启相关支持。 

[root@kvm ~]# systemctl start libvirtd
[root@kvm ~]# systemctl enable libvirtd

2.2、部署 GlusterFS  

在所有节点上执行如下命令:

1)关闭防火墙、SELiunx

将 4 台服务器的主机名分别更改为 node1、node2、node3、node4。下面以 node1 为例进行操作演示。 

[root@node1 ~]# systemctl stop firewalld && systemctl disable firewalld
[root@node1 ~]# hostname
node1
[root@node1 ~]# getenforce
Disabled

2)编写 hosts 文件 

在所有服务上面操作 

[root@node1 ~]# vim /etc/hosts
......//省略部分内容
192.168.23.211 node1
192.168.23.212 node2
192.168.23.213 node3
192.168.23.214 node4
192.168.23.215 kvm

3)安装软件 

本实验采用官方 YUM 源安装 GlusterFS 所需要软件,具体安装方法如下(在所有节点上操作)。下面以 node1 为例进行操作演示。 

[root@node1 ~]# yum -y install centos-release-gluster
[root@node1 ~]# yum -y install glusterfs glusterfs-server glusterfs-fuse

4)启动 Glusterfs 

在所有节点执行以下操作,下面以 node1 为例进行操作演示。 

[root@node1 ~]# systemctl start glusterd 
[root@node1 ~]# systemctl enable glusterd 

5)在 node1 上添加所有节点

如果报错请检查防火墙、SELinux、主机名及 hosts 文件是否正确。 

[root@node1 ~]# gluster peer probe node2
peer probe: success
[root@node1 ~]# gluster peer probe node3
peer probe: success
[root@node1 ~]# gluster peer probe node4
peer probe: success

6)查看集群状态 

[root@node1 ~]# gluster peer status
Number of Peers: 3Hostname: node2
Uuid: aed68c41-fb56-4577-90a0-0e7a039a4011
State: Peer in Cluster (Connected)Hostname: node3
Uuid: 1fd11f2a-6b76-49f8-8a7e-e07d5838ec33
State: Peer in Cluster (Connected)Hostname: node4
Uuid: 8451c042-3334-45c9-88ed-381f4a8073a8
State: Peer in Cluster (Connected)

2.3、创建 Glusterfs 分布式复制卷 

当前一共有四个节点,设置为 2x2=4,就是 2 个节点为一组,一个卷组两个节点会有相同的数据。从而达到虚拟机数据分布式存储并有冗余备份。分布式复制卷详细介绍已在之 前章节讲解过,这里不再赘述。 

在所有节点创建/data 目录。 

[root@node1 ~]# mkdir /data

创建分布式复制卷。 (node1 上操作)

[root@node1 ~]# gluster volume create models replica 2 node1:/data node2:/data node3:/data node4:/data force
volume create: models: success: please start the volume to access data

查看 models 卷。 

[root@node1 ~]# gluster volume info modelsVolume Name: models
Type: Distributed-Replicate
Volume ID: def78fce-bd55-4f78-b69e-002b6c678d43
Status: Created
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node1:/data
Brick2: node2:/data
Brick3: node3:/data
Brick4: node4:/data
Options Reconfigured:
cluster.granular-entry-heal: on
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

启动 models 卷。 

[root@node1 ~]# gluster volume start models
volume start: models: success

2.4、客户端挂载 Glusterfs 卷 

1)安装 glusterfs 客户端软件。 

[root@kvm ~]# yum -y install glusterfs glusterfs-fuse

2)创建挂载目录,并挂载 models 卷。 

[root@kvm ~]# mkdir /kvmdata
[root@kvm ~]# mount -t glusterfs node1:models /kvmdata/

3)查看挂载卷 

文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 3.9G     0  3.9G    0% /dev
tmpfs                    3.9G     0  3.9G    0% /dev/shm
tmpfs                    3.9G   12M  3.9G    1% /run
tmpfs                    3.9G     0  3.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root   28G  2.0G   27G    8% /
/dev/sda1               1014M  139M  876M   14% /boot
tmpfs                    797M     0  797M    0% /run/user/0
node1:models             200G  2.1G  198G    2% /kvmdata

2.5、KVM 使用卷创建虚拟机 

KVM 指定虚拟机安装路径到已挂载的目录下,从而达到虚拟机文件分布式存储并有冗余功能。

1)创建目录 

[root@kvm ~]# cd /kvmdata/
[root@kvm kvmdata]# mkdir iso
[root@kvm kvmdata]# mkdir store
[root@kvm kvmdata]# ls
iso  store

 2)上传镜像

将镜像上传到 iso 目录 

[root@kvm ~]# ls /kvmdata/iso/
CentOS-7-x86_64-DVD-2207-02.iso

3)创建虚拟机 

[root@kvm ~]# virt-install -n test01 -r 1024 --vcpus=1 --disk path=/kvmdata/store/test01.qcow2,size=10 -w bridge:br0 --virt-type=kvm --accelerate --autostart -c /kvmdata/iso/CentOS-7-x86_64-DVD-2207-02.iso --vnc --vncport=5901 --vnclisten=0.0.0.0[root@kvm ~]# virsh list --allId    名称                         状态
----------------------------------------------------2     test01                         running

4)验证存储 

在四台节点上查看目录里是否存在虚拟机文件。可以看出虚拟机文件已经存放在第一组 node1、node2 里。 

[root@node1 ~]# ll /data/store/
总用量 2154316
-rw------- 2 107 107 10739318784 4月  12 23:18 test01.qcow2[root@node2 ~]# ll /data/store/
总用量 2154316
-rw------- 2 107 107 10739318784 4月  12 23:18 test01.qcow2[root@node3 ~]# ll /data/store/
总用量 0[root@node4 ~]# ll /data/store/
总用量 0

从上面结果看,虚拟机文件已同步到卷组 node1、node2 当中,再发生宿主机宕机后, 将不会影响虚拟机正常使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/307586.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenHarmony实战:瑞芯微RK3568移植案例

本文章是基于瑞芯微RK3568芯片的DAYU200开发板,进行标准系统相关功能的移植,主要包括产品配置添加,内核启动、升级,音频ADM化,Camera,TP,LCD,WIFI,BT,vibrato…

34. UE5 RPG实现鼠标点击移动

在前面,我们实现过使用键盘按键wasd去实现控制角色的移动,现在,我们实现了InputAction按键触发,后面,实现一下通过鼠标点击地面实现角色移动。 我们将实现两种效果的切换,如果你点击地面快速松开&#xff0…

时间序列分析 # 平稳性检验和ARMA模型的识别与定阶 #R语言

掌握单位根检验的原理并能解读结果;掌握利用序列的自相关图和偏自相关图识别模型并进行初步定阶。 原始数据在文末!!! 练习1、根据某1971年9月-1993年6月澳大利亚季度常住人口变动(单位:千人)的…

SpringCloud的使用以及五大核心组件

一、SpringCloud介绍 微服务架构的提出者:马丁福勒 https://martinfowler.com/articles/microservices.html // 微服务架构的提出者:马丁福勒(中午网) http://blog.cuicc.com/blog/2015/07/22/microservices/ 马丁.福勒对微服务…

Linux中磁盘的分区,格式化,挂载和文件系统的修复

一.分区工具 1.分区工具介绍 fdisk 2t及以下分区 推荐 (分完区不保存不生效,有反悔的可能) gdisk 全支持 推荐 parted 全支持 不推荐 ( 即时生效,分完立即生效) 2.fdisk 分区,查看磁盘 格式:fdisk -l [磁盘设备] fdisk -l 查看…

【MySQL】锁篇

SueWakeup 个人主页:SueWakeup 系列专栏:学习技术栈 个性签名:保留赤子之心也许是种幸运吧 本文封面由 凯楠📸友情提供 目录 本系列专栏 1. MySQ 中的锁 2. 表锁和行锁 表锁 行锁 3. InnoDB 存储引擎的三种行级锁 4. 悲观锁…

【SERVERLESS】AWS Lambda上实操

通过Serverless的发展历程及带给我们的挑战,引出我们改如何改变思路,化繁为简,趋利避害,更好的利用其优势,来释放企业效能,为创造带来无限可能。 一 Serverless概述 无服务器计算近年来与云原生计算都是在…

B004-表达式 类型转换 运算符

目录 表达式数据类型转换自动转换强制转换 运算符数学运算符自增自减运算符i与 i的区别 赋值运算符比较运算符位运算符(了解)逻辑运算符三目运算符 表达式 /*** 表达式定义:由常量 变量 运算符 括号组成的算式,为了按照一定的运算规则计算出结果值* 括…

Java中创建多线程的方法

继承Thread类,对该类进行new一个实例,对实例调用start方法,重写run方法。 缺点:单继承,无法继承 public class myThread extends Thread {public static void main(String[] args) {myThread myThread new myThread()…

【机器学习入门】集成学习之梯度提升算法

系列文章目录 第1章 专家系统 第2章 决策树 第3章 神经元和感知机 识别手写数字——感知机 第4章 线性回归 第5章 逻辑斯蒂回归和分类 第5章 支持向量机 第6章 人工神经网络(一) 第6章 人工神经网络(二) 卷积和池化 第6章 使用pytorch进行手写数字识别 实操练习 使用Yolo模型进…

合并单元格的excel文件转换成json数据格式

github地址: https://github.com/CodeWang-Ay/DataProcess 类型1 需求1: 类似于数据格式: https://blog.csdn.net/qq_44072222/article/details/120884158 目标json格式 {"位置": 1, "名称": "nba球员", "国家": "美国"…

项目实战 | 使用python分析Excel销售数据(用groupby)

项目实战 | 使用python分析Excel销售数据 本文目录: 零、00时光宝盒 一、提出问题 二、理解数据 2.1、安装python读取excel文件的库 2.2、查看excel表的字段名和前几行记录 2.3、查看excel表结构 2.4、查看索引 2.5、查看每一列的列表头内容 2.6、查看每一…

AutoCAD 2024 安装注册教程

前言 大家好,我是梁国庆。 本篇分享的安装包是 AutoCAD 的全新版本——AutoCAD 2024,下文安装教程中简称 AutoCAD。 时间:2024年4月8日。 获取 AutoCAD 安装包 我已将本篇所使用的安装包打包上传至百度云,扫描下方二维码关注…

A Learning-Based Approach for IP Geolocation(2010年)

下载地址:Towards IP geolocation using delay and topology measurements | Proceedings of the 6th ACM SIGCOMM conference on Internet measurement 被引次数:185 Eriksson B, Barford P, Sommers J, et al. A learning-based approach for IP geolocation[C]//Passive …

VRRP(虚拟路由冗余协议)详解

VRRP-------虚拟路由冗余协议 在一个网络中,要做为一个合格的网络首先就要具备几种冗余,增加网络的可靠性。 这几种冗余分别为:线路冗余,设备冗余,网关冗余,UPS冗余 VRRP该协议就是解决网关冗余的。在二层…

同态加密:重塑数据隐私与安全的未来

同态加密技术是当今信息安全领域的一个重要研究方向,它允许在加密数据上直接进行计算,而无需将数据解密。这种加密方式对于保护数据隐私和增强云计算安全具有重要意义。在这篇文章中,我们将深入探讨同态加密的基本概念、技术特点、应用场景以…

[react] useState的一些小细节

1.无限循环 因为setState修改是异步的,加上会触发函数重新渲染, 如果代码长这样 一秒再修改,然后重新触发setTImeout, 然后再触发,重复触发循环 如果这样呢 还是会,因为你执行又会重新渲染 2.异步修改数据 为什么修改多次还是跟不上呢? 函数传参解决 因为是异步修改 ,所以…

day 74 js

JS的作用&#xff1a; 修饰 HTML 标签&#xff08;CSS&#xff09;设置 HTML 标签的动作&#xff08;JS&#xff09;JS特点&#xff1a;基于对象的编程语言&#xff0c;通过浏览器解释执行作用&#xff1a;表单验证、改变标签样式、获取和设置标签属性值 1 表单验证: <fo…

抽象工厂模式:深入探索面向对象设计的多样性

在软件开发中&#xff0c;正确地应用设计模式对于构建可扩展、可维护和高效的系统至关重要。抽象工厂模式作为创建型设计模式之一&#xff0c;提供了一个高层接口&#xff0c;用于创建一系列相关或依赖对象&#xff0c;而无需指定它们具体的类。本文将详细介绍抽象工厂模式的概…

MyBatis源码介绍

文章目录 MyBatis的核心流程介绍SqlSessionFactory的理解MyBatis中的Executor的源码理解Spring中是如何解决MySQL的SqlSession的线程安全问题MyBatis面向Mapper编程工作原理Mybatis动态sql执行原理Mybatis的一级、二级缓存实现原理Mybatis的插件运行原理以及如何编写一个插件my…