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请求与响应 ࿰…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...

