当前位置: 首页 > news >正文

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安装

  1. 配置VMKernel端口,启用vSAN服务
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

IP设置提前规划

在这里插入图片描述

  1. vSAN流量配置上联链路冗余Bond

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 虚拟交换机与物理交换机同时配置巨帧

  1. 新建启用vSAN的集群
    在这里插入图片描述
    在这里插入图片描述

  2. 添加ESXi主机进入集群
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  3. 申明磁盘组(大小)
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 配置完成,退出维护模式
    在这里插入图片描述

  2. 创建集群管理主机vCLS(大于3台ESXi会创建3个vCLS)
    在这里插入图片描述

vSAN集群的容量只会显示容量层而不会显示缓存层
在这里插入图片描述

vSAN集群

  • 可以支持3~64台主机,不需要每台主机都贡献磁盘
    • 现网一般最低都是4,保证可用

vSAN skyline health

  • 提供vSAN整体健康度检查,包括硬件和配置层面
  • 发生故障时,提供错误分析和解决建议。
    在这里插入图片描述

vSAN与HA

  • vSAN必须在启用HA之前配置。
    • 未启用vSAN的HA集群用管理网络传输心跳;
    • 启用vSAN的HA集群用vSAN网络传输心跳;
  • 先停止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,基于文件夹的存储,文件夹内有不同的文件
      -对象本身不存放数据,相当于指针,指向组件
对象描述
虚拟机Home Namespace虚拟机对象存放的根容器,例如VMDK、VMX等对象。
虚拟机交换对象虚拟机开机时被创建,其大小等于配置的内存减去预留。
虚拟机磁盘对象虚拟机的vmdk对象。
快照增量对象快照后的差异磁盘对象。
内存快照对象(.vmem)快照后对内存的状态保存对象。

在这里插入图片描述

vSAN内部架构

在这里插入图片描述

假如VM需要请求创建磁盘:

  1. 在vCenter上下发指令。通过vpxd进行下发,
    • vpxd:vCenter的一个daemon
  2. vpxd将该指令下发到ESXi主机的vpxa进程
    • vpxa: 专门从vCenter获取指令的进程
  3. vpxa将指令传输给hostd进程
    • hostd:ESXi的核心进程
  4. hostd接收到创建磁盘的指令,会调用一些需要的进程如OSFSd/DISKLIB
    • OSFSd: Object Storage File System Daemon
    • DISKLIB: 访问磁盘需要的Library库
  5. OSFSd/DISKLIB将指令传输到CLOM
    • CLOM: Cluster Level Object Manager,根据策略来定义写的磁盘文件最终怎么存储
  6. CLOM通过询问CMMDS进程 获取信息,判断对象组件写哪
    • CMMDS:Cluster Monitoring MemberShip and Directory Service,拥有集群中所有与vSAN相关信息的集合数据库,如对象存放、调用空间等。
    • 为了保证不同ESXi的CMMDS数据库内容一致,vSAN集群会选举出唯一的Master,其他则作为一台backup和多台Agent。只有Master可以读写,其他只能读;Backup作为Master Down后的接管角色
  7. CMMDS 的同步依赖于RDT
    • RDT: Reliable Datagram Transport
      # ESXi CLI 
      # 两条效果一样的
      ~] esxicli vsan cluster list
      ~] esxicli vsan cluster get
      ...
      Local Node State: Agent/Master/Backup
      ...
      
  8. 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。
  9. DOM Component Manager会将指令传输给LSOM
    • LSOM: Log Structured Object Manager 负责日志对象分区的读写操作。负责最终的IO请求写入的一个角色,也负责读写的缓存管理。
  10. 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 的结合。确保某列(或两个列多个列的结合)有唯一标 识&#xff…...

【设计模式】软件设计原则——接口隔离迪米特

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

【C++】——list的介绍和模拟实现

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

B树系列解析

我最近开了几个专栏,诚信互三! > |||《算法专栏》::刷题教程来自网站《代码随想录》。||| > |||《C专栏》::记录我学习C的经历,看完你一定会有收获。||| > |||《Linux专栏》&#xff1…...

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请求与响应 &#xff0…...

tomcat版本升级导致的umask问题

文章目录 1、问题背景2、问题分析3、深入研究4、umask4.1、umask的工作原理4.2、umask的计算方式4.3、示例4.4、如何设置umask4.5、注意事项 1、问题背景 我们的java服务是打成war包放在tomcat容器里运行的,有一天我像往常一样去查看服务的日志文件,却提…...

Golang | Leetcode Golang题解之第455题分发饼干

题目&#xff1a; 题解&#xff1a; func findContentChildren(g []int, s []int) (ans int) {sort.Ints(g)sort.Ints(s)m, n : len(g), len(s)for i, j : 0, 0; i < m && j < n; i {for j < n && g[i] > s[j] {j}if j < n {ansj}}return }...

vscode+stfp插件,实现远程自动同步文件代码

概述 远程同步代码&#xff0c;将本地代码实时保存到同一局域网内的另一台电脑&#xff08;linux系统&#xff09;&#xff0c;这里的本地代码也可以是远程服务上的代码&#xff0c;即从一个远程ip同步到另一台远程ip服务器。 工具 vscode&#xff0c;SFTP插件 安装 vscod…...

python 实现djb2哈希算法

djb2哈希算法介绍 DJB2哈希算法是一种简单且快速的哈希算法&#xff0c;由Daniel J. Bernstein设计。这种算法的实现非常简单&#xff0c;适用于短键值的哈希表&#xff0c;也常被用于嵌入式设备和资源受限的系统。 基本原理 DJB2算法的原理是将输入的字符串视为一个字节数组…...

文件夹作为普通文件而非子模块管理

relaxed_ik_ros2 文件夹下存在 .gitmodules 文件和 .gitignore 文件。这说明该目录已经被 Git 识别为子模块。 要将这个文件夹作为普通文件而非子模块管理&#xff0c;你可以按以下步骤操作&#xff1a; 1. 删除子模块配置 首先删除 .gitmodules 文件中的子模块配置。你可以…...

7c结构体

文章目录 一、结构体的设计二、结构体变量的初始化2.1结构体在内存表示&#xff1b;**2.2**结构体类型声明和 结构体变量的定义和初始化只声明结构体类型声明类型的同时定义变量p1用已有结构体类型定义结构体变量p2*定义变量的同时赋初值。*匿名声明结构体类型 2.3 结构体嵌套及…...

浅聊前后端分离开发和前后端不分离开发模式

1.先聊聊Web开发的开发框架Spring MVC 首先要知道&#xff0c;Spring MVC是Web开发领域的一个知名框架&#xff0c;可以开发基于请求-响应模式的Web应用。而Web开发的本质是遵循HTTP&#xff08;Hyper Text Transfer Protocol: 超文本传输协议&#xff09;协议【发请求&#xf…...

RabbitMQ篇(死信交换机)

目录 一、简介 二、TTL过期时间 三、应用场景 一、简介 当一个队列中的消息满足下列情况之一时&#xff0c;可以成为死信&#xff08;dead letter&#xff09; 消费者使用basic.reject或者basic.nack声明消费失败&#xff0c;并且消息的requeue参数设置为false消息是一个过…...

HBase 的 MemStore 详解

一、MemStore 概述 MemStore 是 HBase 的内存存储区域&#xff0c;它是一个负责缓存数据写入操作的组件。每当有写操作&#xff08;如 Put 或 Delete&#xff09;发生时&#xff0c;数据会首先被写入到 MemStore 中&#xff0c;而不是直接写入磁盘。MemStore 类似于数据库中的缓…...

【嵌入式软件-数据结构与算法】01-数据结构

摘录于老师的教学课程~~(*๓╰╯๓)~~内含链表、队列、栈、循环队列等详细介绍~~ 基础知识系列 有空再继续更~~~ 目录 【链表】 一、单链表 1、存储结构&#xff1a;带头结点的单链表 2、单链表结点类型的定义 3、创建单链表 1&#xff09;头插法 2&#xff09;尾插法 …...