vSAN01:vSAN简介、安装、磁盘组、内部架构与调用关系
目录
- 传统的共享存储
- vSAN存储
- OSA的系统要求
- vSAN安装
- vSAN集群
- vSAN skyline health
- vSAN与HA
- 磁盘组
- 混合磁盘架构
- 全闪磁盘架构
- vSAN对象
- vSAN内部架构
传统的共享存储
- 通过
隔离的存储网络
使得不同的ESXi主机
访问独立的存储设备
。 - 需要前期投入较高的资金单独采购存储、网络
- 可以单独规划
巨帧
,使得MTU变大,网络利用率变高 - 需要专门设置存储管理员(如果划分细致)
vSAN存储
- 利用
本机的空余磁盘
,作成共享存储 - 5.5
必须一个SSD
,其他没有要求;6.0开始可以支持全闪(同时支持高级功能如去重、压缩)- 8.0前叫做Original Storage Architecture OSA。
- 8.0 叫做Express Storage Architecture ESA。
- 每台机器可以最多包含5个磁盘组。每个磁盘组都得有一个SSD
- 假如5个磁盘组,每个磁盘组最多7块硬盘可用,至少需要32G内存可用
- 与vSphere集成,可以直接在vCenter上管理与使用
- 必须是一整块的空闲磁盘,而不是部分空闲
OSA的系统要求
- vSAN集群的主机,硬件/磁盘配置/ESXi软件版本 需要一致。
- VMWare HCL 硬件兼容性列表
- 每个磁盘组必须一个SSD作为缓存,其余磁盘作为容量层。缓存不计入可用容量
- 对于混合架构(SSD+HDD),至少1Gb网络;全闪架构,至少10Gb网络
- 建议网络层面单独隔离,开启巨帧
vSAN安装
- 配置VMKernel端口,启用vSAN服务
IP设置提前规划
- vSAN流量配置上联链路冗余Bond
- 虚拟交换机与物理交换机同时配置巨帧
略
-
新建启用vSAN的集群
-
添加ESXi主机进入集群
-
申明磁盘组(大小)
-
配置完成,退出维护模式
-
创建集群管理主机vCLS(大于3台ESXi会创建3个vCLS)
vSAN集群的容量只会显示容量层而不会显示缓存层
vSAN集群
- 可以支持3~64台主机,不需要每台主机都贡献磁盘
- 现网一般最低都是4,保证可用
vSAN skyline health
- 提供vSAN整体健康度检查,包括硬件和配置层面
- 发生故障时,提供错误分析和解决建议。
vSAN与HA
- vSAN必须在启用HA之前配置。
- 未启用vSAN的HA集群用
管理网络
传输心跳; - 启用vSAN的HA集群用
vSAN网络
传输心跳;
- 未启用vSAN的HA集群用
- 先停止HA,配置好vSAN再启用HA
磁盘组
- OSA要求每个磁盘组至少一块SSD作为缓存层,至多7块SSD/HHD作为容量层;
- 每个ESXi主机最多5个磁盘组;
- 5个8盘磁盘组,内存最少32G;
- 容量层全闪时,支持压缩、去重;
混合磁盘架构
- 缓存层中70%空间用于read,30%用于write;
- write到达缓存层直接返回写确认;
- 缓存层至少是容量层的10%,缓存层大小增加可以提高read命中率
write-through(透写): 所有的写操作直接写往主存,同时也写在缓存cache中,写主存成功后返回写成功。
write-back(回写): 写操作先缓存在cache中,直接返回写成功。稍后才会统一将缓存写到主存中去。
全闪磁盘架构
- 缓存层所有空间用于写缓存
- 写缓存中的数据趋于稳定后,写入容量层。
- 降低写放大(WA)
- 提高磁盘寿命
- 容量层选择容量大的SSD,缓存层选择寿命大的SSD
vSAN对象
- vSAN是一种逻辑的、基于对象的块存储架构
- VMDK,基于文件夹的存储,文件夹内有不同的文件
-对象本身不存放数据,相当于指针
,指向组件
- VMDK,基于文件夹的存储,文件夹内有不同的文件
对象 | 描述 |
---|---|
虚拟机Home Namespace | 虚拟机对象存放的根容器,例如VMDK、VMX等对象。 |
虚拟机交换对象 | 虚拟机开机时被创建,其大小等于配置的内存减去预留。 |
虚拟机磁盘对象 | 虚拟机的vmdk对象。 |
快照增量对象 | 快照后的差异磁盘对象。 |
内存快照对象(.vmem) | 快照后对内存的状态保存对象。 |
vSAN内部架构
假如VM需要请求创建磁盘:
- 在vCenter上下发指令。通过
vpxd
进行下发,- vpxd:vCenter的一个daemon
vpxd
将该指令下发到ESXi主机的vpxa
进程- vpxa: 专门从vCenter获取指令的进程
vpxa
将指令传输给hostd
进程- hostd:ESXi的核心进程
hostd
接收到创建磁盘的指令,会调用一些需要的进程如OSFSd/DISKLIB
- OSFSd: Object Storage File System Daemon
- DISKLIB: 访问磁盘需要的Library库
OSFSd/DISKLIB
将指令传输到CLOM
中- CLOM: Cluster Level Object Manager,根据策略来定义写的磁盘文件最终怎么存储
CLOM
通过询问CMMDS
进程 获取信息,判断对象组件写哪- CMMDS:Cluster Monitoring MemberShip and Directory Service,拥有集群中所有与vSAN相关信息的集合数据库,如对象存放、调用空间等。
- 为了保证不同ESXi的CMMDS数据库内容一致,vSAN集群会选举出唯一的Master,其他则作为一台backup和多台Agent。只有Master可以读写,其他只能读;Backup作为Master Down后的接管角色
CMMDS
的同步依赖于RDT
- RDT: Reliable Datagram Transport
# ESXi CLI # 两条效果一样的 ~] esxicli vsan cluster list ~] esxicli vsan cluster get ... Local Node State: Agent/Master/Backup ...
- RDT: Reliable Datagram Transport
CLOM
将具体操作的指令发送给DOM
- DOM:分布式对象管理
- DOM Client:接受CLOM发来的读写IO的要求,转发IO请求给Owner
- DOM Owner:真实对对象拥有读写访问权写的角色。vSAN中创建每一个对象,都会选择一个DOM作为它的Owner。对对象的操作只能通过DOM Owner进行传递。
- 如果对象就在本机,Owner会把这个IO读写请求转发给DOM Component Manager。
- 如果DOM Owner和组件所在物理位置不一致,通过
RDT
转发给对应的DOM Component Manager。
- DOM Component Manager:负责管理组件所在主机上的一个对象。组件物理存放在那个ESXi。
- DOM:分布式对象管理
DOM Component Manager
会将指令传输给LSOM
- LSOM: Log Structured Object Manager 负责日志对象分区的读写操作。负责最终的IO请求写入的一个角色,也负责读写的缓存管理。
LSOM
调用PSA
,将IO请求转换成磁盘能接受的指令- PSA: Pluggable Storage Architecture 可插拔存储架构。vSAN控制物理磁盘组最后的角色。PSA将IO落入磁盘上。
相关文章:

vSAN01:vSAN简介、安装、磁盘组、内部架构与调用关系
目录 传统的共享存储vSAN存储OSA的系统要求vSAN安装vSAN集群vSAN skyline healthvSAN与HA磁盘组混合磁盘架构全闪磁盘架构 vSAN对象vSAN内部架构 传统的共享存储 通过隔离的存储网络使得不同的ESXi主机访问独立的存储设备。需要前期投入较高的资金单独采购存储、网络可以单独规…...
Apache NiFi最全面试题及参考答案
目录 解释什么是Apache NiFi以及它的主要用途。 NiFi 的数据处理流程是怎样的? NiFi 的架构包括哪些组件? 解释 NiFi 的 “FlowFile” 概念及其组成部分。 NiFi 的 “Processor” 是什么?有哪些类型? 如何在 NiFi 中创建一个新的数据流? NiFi 的 “Connection” 有…...
基于Docker部署最新版本SkyWalking【10.1.0版本】
文章目录 前言前置条件一、创建Docker 网络二、部署 SkyWalking OAP 服务器三 部署 SkyWalking UI四 查看日志4.1. 查看 SkyWalking OAP 日志4.2. 查看 SkyWalking UI 日志 五 停止并删除容器结论 前言 由于本地的 JDK 版本与 SkyWalking 对应的 JDK 版本不一致,为…...
如何在 Ubuntu 18.04 上使用 LEMP 安装 WordPress
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 WordPress 是互联网上最流行的 CMS(内容管理系统)。它允许您在 MySQL 后端和 PHP 处理的基础上轻松设置灵…...
shadcn-vue 快速入门(2)
components.json 关于项目配置 components.json 文件保存了项目的配置信息。 我们使用该文件了解项目的基本设定,并生成定制化的组件以适应项目需求。 注意:components.json 文件是可选的,仅在使用 CLI 向项目添加组件时才需要。如果使用复…...

Oracle数据恢复—异常断电导致Oracle数据库报错的数据恢复案例
Oracle数据库故障: 机房异常断电后,Oracle数据库启库报错:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。数据库没有备份,归档日志不连续。用户方提供了Oracle数据库的在线文件,需要恢复zxf…...

数据结构-4.1.特殊矩阵的压缩存储
一.一维数组的存储结构: 1.知道一维数组的起始地址,就可以求出任意下标对应的元素所在的地址; 2.注:如果数组下标从1开始,上述公式的i就要改为i-1; 3.数组里的元素类型相同,因此所占空间也相同…...
Hive数仓操作(十四)
一、Hive的DDL语句 在 Hive 中,DDL(数据定义语言)语句用于数据库和表的创建、修改、删除等操作。以下是一些重要的 DDL 语句: 1. 创建数据库和表 创建数据库 CREATE DATABASE IF NOT EXISTS database_name;创建表 CREATE TABLE …...
SpringBoot技术:实现古典舞在线交流平台的秘诀
摘 要 随着互联网技术的发展,各类网站应运而生,网站具有新颖、展现全面的特点。因此,为了满足用户古典舞在线交流的需求,特开发了本古典舞在线交流平台。 本古典舞在线交流平台应用Java技术,MYSQL数据库存储数据&#…...

自动驾驶系列—全面解析自动驾驶线控制动技术:智能驾驶的关键执行器
🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…...

YOLO11改进|卷积篇|引入可变核卷积AKConv
目录 一、AKConv卷积1.1AKConv卷积介绍1.2AKConv核心代码 五、添加MLCA注意力机制5.1STEP15.2STEP25.3STEP35.4STEP4 六、yaml文件与运行6.1yaml文件6.2运行成功截图 一、AKConv卷积 1.1AKConv卷积介绍 AKConv允许卷积参数的数量以线性方式增加或减少,而不是传统的…...

推荐 uniapp 相对好用的海报生成插件
插件地址:自定义canvas样式海报 - DCloud 插件市场 兼容性也是不错的:...
MySQL表操作(进阶)
一、数据库约束 1、约束类型 NOT NULL - 指示某列不能存储 NULL 值 UNIQUE - 保证某列的每行必须有唯一的值 DEFAULT - 规定没有给列赋值时的默认值 PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标 识ÿ…...

【设计模式】软件设计原则——接口隔离迪米特
接口隔离原则引出 接口隔离原则 定义:用多个专门的接口,不使用单一的总接口,客户端不应该依赖它不需要的接口; 一个类对另一个类的依赖,应该建立在最小接口上;如果有一个大接口,里面有很多方法,如果使用一个类实现该接口,所有的类都要实现,导致代码冗余;…...

【C++】——list的介绍和模拟实现
P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。 博主主页:Yan. yan. …...

B树系列解析
我最近开了几个专栏,诚信互三! > |||《算法专栏》::刷题教程来自网站《代码随想录》。||| > |||《C专栏》::记录我学习C的经历,看完你一定会有收获。||| > |||《Linux专栏》࿱…...
docker 部署 WEB IDE
简介 问题描述:GitCode 的 Web IDE 不满足个人使用需求 如何解决:在本机或云服务器部署 Web IDE 如何解决 拉取容器镜像 docker pull coder/code-server 运行 docker run -d --name vscode -p 8080:8080 -p 8443:8443 -e PASSWORD"123456&quo…...

【Android】数据存储
本章介绍Android五种主要存储方式的用法,包括共享参数SharedPreferences、数据库SQLite、SD卡文件、App的全局内存,另外介绍重要组件之一的应用Application的基本概念与常见用法,以及四大组件之一的内容提供器ContentProvider的基本概念与常见…...
个人网络安全的几个重点与防御
1 浏览器 firefox 这是第一选择 如果你真的不明白可以找找各个浏览器漏洞 mail 的危险的 来自与代理和漏洞 浏览器溢出漏洞 实时注意更新就可以 2 防火墙 大家都用windows 只需在 gpedit.msc 设置 但有什么未知漏洞就不得而知了 因为美国的计划问题 网络端口溢出漏洞 但…...

python爬虫 - 初识爬虫
🌈个人主页:https://blog.csdn.net/2401_86688088?typeblog 🔥 系列专栏:https://blog.csdn.net/2401_86688088/category_12797772.html 目录 前言 一、爬虫的关键概念 (一)HTTP请求与响应 ࿰…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...

AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...

基于单片机的宠物屋智能系统设计与实现(论文+源码)
本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢,连接红外测温传感器,可实时精准捕捉宠物体温变化,以便及时发现健康异常;水位检测传感器时刻监测饮用水余量,防止宠物…...

李沐--动手学深度学习--GRU
1.GRU从零开始实现 #9.1.2GRU从零开始实现 import torch from torch import nn from d2l import torch as d2l#首先读取 8.5节中使用的时间机器数据集 batch_size,num_steps 32,35 train_iter,vocab d2l.load_data_time_machine(batch_size,num_steps) #初始化模型参数 def …...
AWS vs 阿里云:功能、服务与性能对比指南
在云计算领域,Amazon Web Services (AWS) 和阿里云 (Alibaba Cloud) 是全球领先的提供商,各自在功能范围、服务生态系统、性能表现和适用场景上具有独特优势。基于提供的引用[1]-[5],我将从功能、服务和性能三个方面进行结构化对比分析&#…...
无需布线的革命:电力载波技术赋能楼宇自控系统-亚川科技
无需布线的革命:电力载波技术赋能楼宇自控系统 在楼宇自动化领域,传统控制系统依赖复杂的专用通信线路,不仅施工成本高昂,后期维护和扩展也极为不便。电力载波技术(PLC)的突破性应用,彻底改变了…...

MLP实战二:MLP 实现图像数字多分类
任务 实战(二):MLP 实现图像多分类 基于 mnist 数据集,建立 mlp 模型,实现 0-9 数字的十分类 task: 1、实现 mnist 数据载入,可视化图形数字; 2、完成数据预处理:图像数据维度转换与…...
自定义线程池1.2
自定义线程池 1.2 1. 简介 上次我们实现了 1.1 版本,将线程池中的线程数量交给使用者决定,并且将线程的创建延迟到任务提交的时候,在本文中我们将对这个版本进行如下的优化: 在新建线程时交给线程一个任务。让线程在某种情况下…...