【存储】存储特性

2023-05-16

存储特性

  • 精简配置技术(SmartThin)
    • SmartThin主要功能
    • 容量虚拟化
    • 存储空间写时分配:Capacity-on-Write
    • 读写重定向:Direct-on-Time
    • 应用场景及配置流程
  • 存储分层技术(SmartTier)
    • 存储分层
    • 工作原理
    • 关键技术
    • 容量初始分配
    • 迁移策略
    • I/O监控统计分析
    • 数据迁移
  • 服务质量控制技术(SmartQoS)
    • 工作原理
    • IO优先级调度技术
    • IO流量控制技术
  • 缓存分区技术(SmartPartition)
    • 工作原理
    • 应用场景
  • 快照技术
    • 映射表
    • COW技术
    • 快照功能原理
    • 应用场景
  • 文件系统配额管理技术(SmartQuota)
    • 在Quota Tree目录上进行资源管控
    • Quota Tree的资源用量
    • 应用场景

精简配置技术(SmartThin)

在这里插入图片描述

  • 上图展示了SmartThin提供的Thin LUN与传统LUN在空间分配上的差异。
  • SmartThin技术做了如下改进:
    • 改进一:采用SmartThin技术的LUN空间在创建时不真正分配具体空间,而在需要真正使用空间时,再分配具体空间。
    • 改进二:有了改进一的基础后,采用SmartThin技术的LUN空间可以在创建后动态调整大小。
  • 当出现数据容量超过预期的情况时,可以动态调整该LUN的空间。未使用的空间作为公共的空间可以分配给任何需要空间的LUN。这样,不存在私有的一直不能被使用到的空间,提高了利用率和效能比。同时,动态空间调整提供了在线调整LUN空间大小的能力,可以做到扩容的同时不影响业务。
    在这里插入图片描述
  • 数据集合:对存储阵列来说是可映射给主机的LUN。
  • 完全可用:可以正常读写。
  • 动态分配:写时分配资源。

SmartThin主要功能

  • 支持Thin LUN容量虛拟化。SmartThin允许主机可感知容量大于Thin LUN实际占用存储空间。
  • 支持存储空间写时分配,SmartThin允许主机在向Thin LUN写入数据时才给Thin LUN分配实际空间,写入多少分配多少。
  • 支持Thin LUN在线扩容。SmartThin提供两种在线扩容方式,分别是存储池间接扩容和Thin LUN直接扩容。
  • 支持Thin LUN空间回收。SmartThin提供两种空间回收方式,分别是标准SCSI命令空间回收和零数据释放空间回收。

容量虚拟化

在这里插入图片描述

  • SmartThin基于RAID2.0+存储虚拟资源池创建Thin LUN,即Thin LUN和传统的Thick LUN共存于同一个存储资源池中。
  • 精简LUN(Thin LUN)是在存储池中创建的并可以映射为主机直接访问的逻辑单元。
  • Thin LUN的容量大小并不是实际的物理空间,而是一个虚拟值,只有在对Thin LUN进行真正I/O读写时,才通过写时分配的策略从存储资源池中申请物理空间。
  • 在RAID2.0+环境中,系统会将存储池空间(即POOL)划分成一个个小粒度的数据块(即CHUNK),基于数据块来构建RAID组(即CKG),使得数据均匀的分布到存储池的所有硬盘上,然后以数据块为单位来进行资源管理。SmartThin使用将CKG切分为更小粒度的Extent(卷中可用于分配的最小存储单元)为单位来进行空间组织。
  • 因此,Thin LUN与Thick LUN共存在一个存储池中,同时使用该存储池中的物理存储容量,使得存储规划更加灵活和便利,避免了为Thin LUN和Thick LUN分别提供不同的存储池空间。

存储空间写时分配:Capacity-on-Write

  • Thin LUN的写I/O请求会触发空间分配。
  • Thin LUN的当前可分配物理空间低于阈值后会向存储池申请新的空间。

Capacity-on-write:当Thin LUN接收到主机写数据请求,首先会通过direct-on-time技术判断该写数据请求的逻辑存储区域是否已经分配了实际存储区,如果尚未分配就会触发空间分配,分配的最小粒度称为Grain, Grain大小为64k,然后将数据写入到新分配的实际存储区域中。

读写重定向:Direct-on-Time

在这里插入图片描述

  • 由于采用了Capacity-on-write技术,数据的实际存储区域和逻辑存储区域的关系不再是按照确定的公式可以固定不变计算出来的,而是按照写时分配的原则随机映射确定的。
  • 所以在对Thin LUN进行读写时需要重定向实际存储区域和逻辑存储区域的关系,重定向依赖于映射表。
  • 映射表的主要作用是用来记录实际存储区域和逻辑存储区域的映射关系。在写过程中动态更新映射表,在读过程中查询映射表。因此,Direct-on-time重定向操作也就分为读重定向和写重定向。
  • 读重定向:Thin LUN接收到主机读数据请求后,先查询映射表,如果该读数据的逻辑存储区域已分配对应的实际存储区域,则将该读数据的逻辑存储区域重定向到实际存储区域,然后从实际存储区域中读取到数据后,将该数据返回给主机;如果该读数据的逻辑存储区域尚未分配空间,则将该逻辑存储区域的数据置为全0返回给主机。
  • 写重定向:Thin LUN接收到主机写数据请求后,先查询映射表,如果该写数据的逻辑存储区域已分配对应的实际存储区域,则将该写数据的逻辑存储区域重定向到实际存储区域,然后将数据写入到实际存储区域中,并返回写成功给主机;如果该写数据的逻辑存储区域尚未分配空间,则通过Capacity-on-write技术操作。

应用场景及配置流程

应用场景:

  • 对业务连续性要求较高的系统核心业务,使用智能精简配置,可以在线对系统进行扩容,不会中断业务。例如:银行票据交易系统。
  • 应用系统数据增长速度无法准确评估的业务,使用智能精简配置,可以按需分配物理存储空间,避免浪费,例如: E-mail邮箱服务、网盘服务等。
  • 多种业务系统混杂并且对存储需求不-的业务,使用智能精简配置,可以让不同业务去竞争物理存储空间,实现物理存储空间的优化配置,例如:运营商服务等。

配置流程:
在这里插入图片描述

存储分层技术(SmartTier)

在这里插入图片描述

  • SmartTier(智能数据分级)是华为公司在RAID2.0+技术之上自主研发的分级存储软件,它自动将不同活跃度的数据和不同特点的存储介质动态匹配,从而提高存储系统性能并降低用户成本。
  • 分级存储技术通过数据迁移完成数据的分级存储。目前,分级存储技术主要分手工迁移和自动迁移两类。
  • 手工迁移是系统维护人员根据当前存储系统运行的状态、各个业务系统的压力情况,手动将数据从一个LUN中迁移到另外一个LUN中。
  • 自动迁移是根据系统当前对某些文件或者块的访问频率,识别出热点与非热点数据,根据热点与非热点数据分配不同的存储介质,将频繁访问的热点数据自动迁移到高性能的存储介质中,而将低周期访问的非热点数据自动迁移到大容量,低成本的存储介质中。

存储分层

存储层级硬盘类型硬盘特点数据特点
高性能层SSD盘SSD盘的响应时间很短,每单位存储容量成本很高。高性能层适宜存储访问频率非常高的数据。
性能层SAS盘SAS盘的响应时间短,每单位存储容量成本适中。性能层适宜存储访问频率适中的数据。
容量层NL-SAS盘NL-SAS盘的响应时间长,每单位存储容量成本低。容量层适宜存储访问频率低的数据。
  • SmartTier将不同存储介质按性能高低划分为三个存储层,由高至低分别是SSD盘组成的层(简称高性能层)、SAS盘组成的层(简称性能层)、NL-SAS盘组成的层(简称容量层)。
  • 每个存储层分别使用相同的硬盘类型和RAID策略。

工作原理

在这里插入图片描述

  • 存储池是一个或多个存储层的逻辑组合,最多可支持三个级别的存储层。存储池包含的硬盘类型决定其可以创建的存储层。由单一硬盘类型组成的存储池无法创建不同存储层,因此不能应用SmartTier进行智能化数据存储管理。
  • LUN创建在存储池中,在应用SmartTier特性之前其数据分布在同一个存储池的不同存储层。
  • SmartTier将LUN数据按照一定粒度划分,该粒度被称为“数据迁移粒度”或“数据块”。数据迁移粒度在创建存储池时设置,且设置后不可更改。
  • 当存储池中存在两种或以上的硬盘类型时,用户可以应用SmartTier特性充分利用存储池中的每个存储层。数据迁移过程中,存储池以数据块为单位识别数据活跃度并将整个数据块迁移至其他存储层。
  • 存储系统经历I/O监控、数据排布分析、数据迁移三个阶段实现SmartTier。
  • 新数据写入LUN时,存储系统根据初始容量分配策略,将新写入的数据分配在相应存储层。
  • 随着数据生命周期的推移,数据的活跃度会发生变化。SmartTier将不同活跃度的数据迁移至不同性能的存储层,为存储系统提供更高的性能,并且数据迁移过程不会影响其他新数据的写入。

关键技术

在这里插入图片描述

容量初始分配

在这里插入图片描述
初始容量分配策略包括四类:自动分配、优先从高性能层分配、优先从性能层分配、优先从容量层分配。

迁移策略

在这里插入图片描述

  • 自动迁移:LUN配置了自动迁移策略,该LUN的数据块按照访问频度做迁移,访问频度最高的迁往高性能层,访问频度适中的迁往性能层,访问频度最低的迁往容量层。无特殊要求,推荐配置自动迁移,总体性能提升最佳。
  • 向高性能层迁移:LUN配置了向高性能层迁移,无论数据块访问频度是高还是低,该LUN的所有数据块都会迁往高性能层级,会占用较多高性能存储资源。只有对该LUN的性能有特殊要求时,才配置向高性能层迁移。
  • 向低性能层迁移:LUN配置了向低性能层迁移,无论数据块访问频度是高还是低,该LUN的所有数据块都会迁往容量层。当某个LUN用于归档业务,或者用于对性能要求低的业务,可配置向低性能层迁移。
  • 不迁移:LUN配置了不迁移,该LUN的所有数据块都不会做迁移,这是LUN创建时的默认策略,只有购买了SmartTier的License,才能修改为其他迁移策略。

I/O监控统计分析

在这里插入图片描述

  • 热数据和冷数据并没有用一个绝对值做区分。存储池高性能层容量可以存放A个数据块,性能层容量可以存放B个数据块, 在迁移时把该存储池的所有自动迁移策略的LUN的所有数据块按访问频度拉通排序,在迁移时把访问频度最高的A个数据块存放到高性能层,把访问频度较高的B个数据块存放到性能层,访问频度排在后面的其他数据块放到容量层。
  • 原则是尽量让访问频度高的数据块使用性能好的存储介质。

数据迁移

  • 迁移速度可以设置为高速、中速和低速,分别对应的具体迁移速度位单控制器100M/S、20M/S和10M/S,默认的迁移速度为低。
  • 为了减少SmartTier数据迁移对主机业务性能的影响,设置的迁移速度是数据迁移速度允许的上限值。数据迁移让主机业务优先,利用存储设备的空闲资源做迁移,依据主机业务压力实时调整迁移的速度。主机业务压力小时,迁移速度调大;主机业务压力小时,迁移速度调小;无论如何调整,迁移速度都不会大于设置的迁移速度。
    • 低速:适合在选择的数据迁移时段有较大的业务压力时使用。
    • 中速:适合在选择的数据迁移时段有较适中的业务压力时使用。
    • 高速:适合在选择的数据迁移时段几乎没有业务,或主机业务对性能要求不敏感的情况下使用。
  • 数据迁移粒度
    • 512KB~64MB(根据业务配置,例如视频监控业务,适合大的迁移粒度)
  • 数据迁移计划
    • 手动方式:可在任意时刻设置时间段进行数据迁移
    • 定时方式:只能在预先设置的时间计划内进行数据迁移
  • 数据迁移速率
    • 可提供三种不同级别的迁移速率:高、中、低
    • 根据当前业务负载,动态调整速率,确保不会对当前业务造成明显影响

服务质量控制技术(SmartQoS)

在这里插入图片描述

  • SmartQoS特性是华为OceanStor V3 融合存储系统上提供的一项存储QoS功能。
  • 如图所示,它能够对存储系统中的资源进行智能分配和调节,在整个存储路径上进行端到端的细粒度控制,从而满足多种不同重要性业务在同一台存储设备上的不同QoS要求。

工作原理

  • IO优先级调度技术:通过区分不同业务的重要性来划分业务响应的优先级。在存储系统为不同业务分配计算资源的时候,优先保证高优先级业务的资源分配请求。在计算资源紧张的情况下,为高优先级的资源分配较多的资源,以此尽可能保证高优先级业务的服务质量。当前用户可以配置的优先级分为高、中、低三个等级。
  • IO流量控制技术:基于传统的令牌桶机制,针对用户设置的性能控制目标(IOPS、带宽)进行流量限制,通过IO流控机制,限制某些业务由于流量过大而影响其它业务。
  • IO性能保障技术:基于按权重调度的方式,允许用户为高优先级业务指定最低性能目标(最小IOPS、 最小带宽、最大时延),当该业务的最低性能无法保障时,系统内部通过对保障业务与非保障业务按照权重进行调度,从而尽力使保障业务达到最低性能目标。

IO优先级调度技术

在这里插入图片描述

  • SmartQoS特性的优先级调度技术基于LUN和文件系统的优先级实现。
  • 因此每个LUN和文件系统对象都有一个优先级属性,这个属性由用户配置并保存在数据库中,当一个IO从主机发送到阵列,这个IO将会根据其归属的LUN或文件系统来获得这个优先级属性,并且在整个IO路径上携带这个优先级信息。
  • 用户在创建LUN或文件系统的时候需要指定所创建的LUN或文件系统的优先级。如果用户不进行指定,则所创建的LUN或文件系统的优先级属性默认为低优先级。
    LUN或文件系统创建后,其优先级属性可以根据用户的需要手动修改。

IO流量控制技术

在这里插入图片描述

  • SmartQoS特性的IO流量控制技术的性能目标是基于令牌的分发和控制实现的。当用户为某个流控组设置了性能上限,那么这个性能上限会被转化成对应的令牌。在存储系统中,如果用户要限制的流量类型是IOPS,那么一个IO即对应一个令牌;如果设定的性能目标是带宽,那么一个扇区对应一个令牌。
  • 每个流控队列都有一个令牌桶,SmartQoS会定期向每个流控队列的令牌桶中放入一定数量的令牌,令牌的数量取决于用户设定的这个流控组的性能上限。即如果用户设定性能上限为IOPS =10000,则令牌分发算法就会在每秒将此流控组的令牌桶中的令牌数设置为10000。
  • 当流控队列进行出队处理的时候,会查看此队列的令牌桶中是否有足够的令牌,如果有,则取出一个IO进行处理,并消耗这个IO对应的令牌;如果没有令牌,则必须等待令牌桶中有足够的令牌可以用为止。

缓存分区技术(SmartPartition)

  • SmartPartition (智能缓存分区)是OceanStor V3融合存储系统为应对存储融合趋势下QoS的挑战而设计的智能缓存分区技术,其核心思想是通过对系统核心资源的分区,保证关键应用的性能。管理员可以针对不同的应用配置不同大小的缓存分区,系统将保证该分区中的缓存资源被该应用独占,并根据业务实际情况实时动态调配不同分区中的其他资源,从而保证位于该分区的应用性能。
  • SmartPartion本质上就是一种Cache分 区技术,Cache分 区在业界是比较成熟的一项技术,推出的时间也比较长。当前主流的存储厂商,比如EMC和HDS,均推出了各自的Cache分区特性。从技术层面来看,各大厂商实现的方式基本一致, 都是将有限的Cache资源划分为多个逻辑区域进行管理,区别主要在于Cache分区内部的具体的一些算法和调整策略。
    在这里插入图片描述
  • 典型的IT系统架构由计算、网络、存储三大部分组成,在传统的“烟囱式”架构中,不同的应用系统相对独立,单个存储需要面对的应用数量不多(一般在5个以下)。
  • 图中每种颜色代表了一种不同的业务。可以看到,这些业务的I/O模式是不同的,对缓存及访盘并发的需求也是不同的。
  • 多种业务混合争抢并发资源和缓存资源,导致服务质量不可保证。比如,业务N抢占的访盘并发同其主机并发并不匹配,其结果就是缓存中业务N的数据会越来越多,对其他业务性能造成影响;而业务3如果是关键业务,就意味着其业务性能不能得到保证。

工作原理

在这里插入图片描述

  • Cache分区技术通过隔离不同的业务所需要的资源,保证某些关键业务的服务质量。
  • 在存储系统中,某个业务能够使用的缓存容量是影响其服务质量的一个主要因素。
  • 该业务在该存储系统上可以占有的缓存大小是影响存储系统性能的最主要因素:
    • 对写业务来说,更多的缓存意味着更高的写合并率、写命中率(同一块数据在缓存中被再次写中的比率)和更好的访盘顺序度;对读业务来说,更多的缓存通常意味着更高的读命中率。
    • 同时,不同类型的业务对缓存的需求也有很大不同:对顺序类业务来说,缓存不需要很大,只需要满足I/O合并要求即可;而对随机类业务来说,更大的缓存通常意味着更好的访盘顺序度,从而带来性能的提升。
  • SmartPartition可以针对不同的业务(实际控制对象为LUN和文件系统)分配不同大小的缓存分区资源,从而保证关键业务的服务质量。

应用场景

在这里插入图片描述

  • 随着存储系统的性能和容量不断增强增大,将多个应用同时部署在一台存储系统上,不仅简化用户的存储系统架构,还能减少用户配置和管理成本。部署在同一台存储系统上的多个应用,会争抢存储资源,将导致各业务的性能受到严重影响。
  • 通过SmartPartition特性可以为不同的业务指定不同的缓存分区,满足关键业务的运行要求。同时,根据业务读写压力,可以分别设置相应读分区和写分区大小。如读业务量较大,可为其分配更多的读分区容量;若全是写业务,则可以配置较小的读分区容量。

快照技术

  • 定义:快照是指源数据在某个时间点的一致性数据副本。快照生成后可以被主机读取,也可以作为某个时间点的数据备份。
  • 快照的主要特点包括:
    • 瞬间生成:存储系统可以在几秒钟内生成一-个快照, 获取源数据的一致性副本。
    • 占用存储空间少:生成的快照数据并非完整的物理数据拷贝,不会占用大量存储空间。所以即使源数据量很大,也只会占用很少的存储空间。

映射表

在这里插入图片描述

  • 映射表用来表示快照的实际数据所在。
  • 映射表分为两类:独享映射表和共享映射表。其原理是相同的,不同的地方在于独享映射表记录写快照发生的数据变更,共享映射表记录的是写源LUN发生的变更。

COW技术

当快照被激活时(此时刻称为快照时间点),主机读写的具体操作如下:

  1. 激活快照后,源LUN有数据写入。
  2. 首先将查询快照映射表,如果映射表中对应该地址的映射项不存在时,需要进行copy-on-write(写前拷贝),写前拷贝完成后在映射表中记录备份的源LUN数据信息。如果映射项存在,则直接覆盖写入源LUN的对应位置。
  3. 写前拷贝,即读取源LUN对应位置的数据写入COW卷的空间。
  4. COW卷空间与源LUN空间分布在同一个POOL中,写入COW卷即写入POOL的空间区域。
  5. 写前拷贝完成后,再将主机数据写入源LUN所在的POOL空间。

快照功能原理

  • 快照创建并激活后,会生成与源卷一致的数据副本。存储系统在源卷中划分出COW数据空间并自动生成快照卷。
  • 由于对源卷没有写操作,COW Meta区域和COW Data区域中均没有记录。
  • 由于对快照卷没有写操作,Snapshot Meta Volume和Snapshot Data Volume中均没有记录。
  • 快照激活后,当应用服务器对源卷有数据写入请求时,存储系统不会立即写入新数据。存储系统利用写前拷贝机制先将写前拷贝数据拷贝到COW数据空间中,并修改映射表中的映射关系,然后将新数据写入源卷。
  • 说明:在一个快照周期内,同一位置的数据只执行一次写前拷贝,根据映射表中相应值确定。再次写入数据时,将直接覆盖。例如:对于数据“DataX”,查询到 映射表中相应值为“1”,表示已经进行过一次写前拷贝;如再有写数据请求,将直接写入,不再将“DataX”拷贝到COW数据空间中。
  • 快照激活后,应用服务器可以对快照卷进行写操作。应用服务器下发的写请求后,数据将直接写入快照卷,并在映射表(独享部分)中记录数据在快照卷中的存放位置。
  • 快照激活后,应用服务器可以对快读快照卷(快照卷已写入数据)进行读操作。 应用服务器下发读快照请求后,通过映射表(独享部分)确定快照数据的存放位置,并读取数据。
  • 快照激活后,应用服务器可以对快读快照卷(快照卷未写入数据)进行读操作。 应用服务器下发读快照请求后,通过映射表(共享部分)确定快照数据的存放位置,并读取数据。

应用场景

直接使用快照进行数据备份。使用快照备份可以在以下场景中迅速恢复数据:

  • 病毒感染。
  • 人为误操作。
  • 恶意篡改。
  • 系统宕机造成的数据损坏。
  • 应用程序BUG造成的数据损坏。
  • 存储系统BUG造成的数据损坏。
  • 存储介质损坏(只有基于split mirror技术的快照能够恢复数据)。

文件系统配额管理技术(SmartQuota)

在这里插入图片描述

  • 随着虚拟化的大行其道,云计算技术的发展,IT系统面临着资源利用效率、以及如何有效管理的挑战。在典型的IT存储系统中,只要存储资源(磁盘空间)是可用的,就会被用户使用,直至耗尽。从经济角度来说,需要一种方法控制存储资源的使用及其增长。
  • 在NAS文件服务环境中,通常以共享目录的方式将资源提供给使用的部门、组织或个人。而每个部门或个人,都有其独特的资源需求或限制。因此,系统需要基于共享目录,因地制宜地对各个使用者,进行资源分配和限制。SmartQuota(文件系统配额)正是用于解决这个需求的技术,该技术可以针对目录、用户、用户组这三类资源的使用者分别进行资源控制。
  • SmartQuota的主要作用是方便系统管理员管控资源使用者(包括目录、用户、用户组)的存储资源,以限制指定使用者可使用的磁盘空间,从而避免出现某些用户过度占用资源的问题。

在Quota Tree目录上进行资源管控

在这里插入图片描述

  • 在SmartQuota特性中,Quota Tree是一个重要的概念。简单来说,Quota Tree就是文件的一级目录。但从管理角度看, Quota Tree不仅是一个目录,更是一个配置对象。这就意味着,Quota Tree只能通过管理终端(命令行或GUI管理界面)来创建、删除和修改,而不能通过客户端主机来修改。另外,作为配置配额时的载体,目录配额、用户配额、以及组配额都只能在Quota Tree上配置。我们总结一下Quota Tree与普通目录存在的差别:
  • Quota Tree只能由管理员通过命令行或GUI管理界面,进行创建、删除、重命名等操作,且管理员只能删除空的Quota Tree。
  • Quota Tree可以通过协议进行共享,且正在共享时,不允许被改名和删除。
  • 不允许跨Quota Tree进行移动文件(NFS协议)或剪切文件(CIFS协议)操作,即不允许在两个不同Quota Tree目录之间进行文件的MV操作(NFS协议)或剪切操作(CIFS协议)。
  • 不允许跨Quota Tree的硬链接,即不允许在两个不同的Quota Tree之间进行硬链接操作。

Quota Tree的资源用量

在这里插入图片描述

  • 目录的资源用量(目录配额的统计值)。
    • Quota Tree目录中所有文件的存储容量、文件数的总量。
  • 用户/用户组的资源用量(用户/用户组配额的统计值)。
    • Quota Tree目录中所有创建者为特定用户/用户组的文件的存储容量、文件数的总量

应用场景

在这里插入图片描述

  • 在单个Quota Tree内部,管理员可配置目录配额限制对应部门总的资源,然后为部门内部的使用者、群组分别配置用户配额、用户组配额,灵活限制一个部门内各使用者的资源。
    • Share为研发部门的共享目录(Quota Tree 0):
    • 配置Quota Tree 0的目录配额,限制研发部总的可用资源。
    • 配置经理A的私有用户配额,单独限制经理A的可用资源。
    • 配置项目组G/E的私有用户组配额,限制项目组G/E的可用资源
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【存储】存储特性 的相关文章

  • IMU在slam系统中的应用(三)

    在IMU在slam系统中的应用 二 中给出了IMU预积分计算推导以及代码 xff0c 这里给出IMU误差递推方程的推导 xff08 一 xff09 一段时间多个IMU数据预积分量协方差 单个IMU数据作为测量值 xff0c 其噪声方差我们可
  • docker 启动 jenkins 挂载目录权限问题 Permission denied

    通过 docker 挂载目录的 jenkins xff0c 查看 jenkins 日志发现存在一些文件无法写入或者 Permission denied 这样的异常错误 xff0c 基本可以判定是文件所有权问题 比如你宿主机挂载的文件目录是
  • VMware虚拟机硬盘扩展是灰色的

    问题描述 VMware虚拟机硬盘空间不足时 xff0c 想扩展空间 xff0c 但VMware虚拟机硬盘扩展是灰色的 xff0c 无法完成扩展操作 解决方案 进入虚拟机快照管理器 xff0c 删除快照 xff0c 删除后就可以扩容
  • ORB_SLAM2安装与编译报错的解决办法

    目录 1 安装教程 xff08 本教程参考网络课程资料 xff09 1 1 安装前准备 1 2 安装Pangolin 建议源码安装 1 3 安装OpenCV3 4 建议源码安装 1 4 安装Eigen3 3 7 建议源码安装 1 5 安装运
  • ROS安装与报错的解决办法

    目录 1 安装步骤 xff08 1 xff09 添加ROS软件源 xff08 2 xff09 添加秘钥 xff08 3 xff09 安装ROS xff08 4 xff09 初始化rosdep xff08 5 xff09 设置环境变量 xff
  • OpenCV - C++实战(06) — Grabcut图像分割

    目录 第6章 图像分割 6 1 Grabcut实现 6 1 1 定义前景和背景 6 1 2 cv grabCut 6 1 3 cv compare 6 1 4 算法实现 Github代码地址 xff1a GitHub Qinong Open
  • 相机标定 - (02) - 相机标定步骤与原理

    目录 2 相机标定步骤 2 1 张正有标定操作步骤 2 2 张正有标定原理 2 相机标定步骤与原理 参考文章 xff1a 三步骤详解张正友标定法 谜之 摄影爱好者的博客 CSDN博客 1998年 xff0c 张正友提出了基于二维平面靶标的标
  • 相机标定 - (03) - matlab单目相机标定

    目录 3 matlab单目相机标定 3 1 环境配置 3 2 matlab单目相机标定 3 matlab单目相机标定 3 1 环境配置 参考文章 xff1a https www cnblogs com Sandals little p 17
  • SLAM面试笔记(4) — 企业面试汇总

    目录 1 大疆 一面 xff08 50min xff09 二面 xff08 30min xff09 三面 xff08 30min xff09 2 华为 一面 xff08 30min xff09 二面 xff08 30min xff09 三面
  • ORB-SLAM2的稠密重建实战(1) — 流程与函数功能说明

    目录 0 系统整体流程 1 输出信息 2 初始化文件 3 初始化并运行追踪线程Tracking Step1 xff1a 地图初始化 Step2 xff1a 初始化成功 xff08 mbOnlyTracking xff09 Step3 xff
  • SLAM面试笔记(5) — ROS面试

    目录 1 ROS概述 2 ROS通信机制 问题 xff1a 服务通信概念 问题 xff1a 服务通信理论模型 问题 xff1a 参数服务器概念 问题 xff1a 参数服务器理论模型 问题 xff1a 参数服务器实现函数 3 ROS常用命令
  • 多线程常见的面试题

    多线程常见的面试题 xff1a 1 什么是线程和进程 线程与进程的关系 区别及优缺点 xff1f 进程是程序的一次执行过程 xff0c 是系统运行程序的基本单位 xff0c 因此进程是动态的 系统运行一个程序即是一个进程从创建 xff0c
  • docker 错误 WARNING: IPv4 forwarding is disabled. Networking will not work.

    这个错误出现在使用 docker 的服务器上 xff0c 当你进入 docker 容器时 xff0c 如果出现这样的 WARNING 提示 xff0c 则表示服务器没有开启 IPv4 转发 xff0c 按照本文的方法配置开启转发即可 错误提
  • 嵌入式中异常/中断/事件的区别

    嵌入式中异常 xff0f 中断 xff0f 事件的区别 Cortex M3在内核水平上搭载了一个异常响应系统 xff0c 支持为数众多的系统异常和外部中断 其中 xff0c 编号1 15的对应系统异常 xff0c 大于等于16的则都是外部中
  • 【起航】OpenHarmony远征02

    OpenHarmony内核 目前OpenHarmony针对不同量级的系统 xff0c 可以使用不同形态的内核 xff0c 轻量和小型的系统可以使用Liteos xff0c 小型和标准系统可以使用Linux Liteos系统是面向IOT领域的
  • momenta面经总结

    一 C 43 43 01 堆和栈的区别 xff0c 栈的静态分配和动态分配 xff1f 栈由操作系统分配释放 xff0c 用于存放函数的参数值 局部变量等 xff0c 栈中存储的数据的生命周期随着函数的执行完成而结束 堆由开发人员分配和释放
  • Orbslam2使用opencv4解决cv_bridge冲突问题

    在研究orbslam2在opencv4下使用会和cv bridge4冲突 解决方法 xff1a 1条消息 ROS学习 xff1a cv bridge与opencv版本冲突三种解决方案 Mr Qin 的博客 CSDN博客 cv bridge
  • 智能车浅谈——方向控制篇

    文章目录 前言自动控制理论人工控制系统自动控制 方向控制典型环节对应典型环节分析给定环节与给定量比较环节与偏差量控制环节与控制量执行机构舵机PWM技术舵机中值及限幅转向控制 被控对象与被控量反馈对象与反馈量 控制思路结束语智能车系列文章汇总
  • 嵌入式学习笔记——使用寄存器编程操作GPIO

    使用寄存器编程操作GPIO 前言GPIO相关的寄存器GPIO 端口模式寄存器 GPIOx MODER x 61 A I 位操作 GPIO 端口输出类型寄存器 GPIOx OTYPER x 61 A I GPIO 端口输出速度寄存器 GPIO
  • 2021-基于卷积和LSTM神经网络的视频分类时间融合方法在暴力检测中的应用

    A Temporal Fusion Approach for Video Classification with Convolutional and LSTM Neural Networks Applied to Violence Dete

随机推荐

  • uni-app(Vue)直播拉流

    html span class token tag span class token tag span class token punctuation lt span div span span class token attr name
  • Docker 容器常见故障排查及处理

    Docker 容器常见故障排查及处理 本文来源于公司论坛发表的帖子 Docker是一种相对使用较简单的容器 xff0c 我们可以通过以下几种方式获取信息 xff1a 1 通过docker run执行命令 xff0c 或许返回信息 2 通过d
  • CMake教程

    本文参考 xff1a 1 https blog csdn net whahu1989 article details 82078563 2 https blog csdn net kai zone article details 82656
  • docker / containerd 错误 panic: invalid freelist page: 162, page type is leaf

    错误描述 containerd 服务启动失败 xff0c 使用命令 journalctl xe u containerd 查看日志如下所示 xff1a span class token punctuation span root 64 k8
  • 制作自己的rosgo

    制作自己的rosgo 首先 xff0c 什么是rosgo xff1f ROS2GO xff08 ROS To Go xff09 是一款随时可用的高速USB闪存驱动器 xff0c 已安装Ubuntu ROS和常用软件包 xff0c 可以从外部
  • 解决libssl.so.1.0.0 => not found以及libcrypto.so.1.0.0 => not found

    现在的apt源中 xff0c libssl1 0的版本一般是libssl1 0 2 xff0c libcrypto1 0的版本一般是libcrypto1 0 2 但是很多应用要使用libssl so 1 0 0和libcrypto so 1
  • cmake设置默认CMAKE_BUILD_TYPE

    原文 xff1a https cmake org pipermail cmake 2009 June 030311 html 在CMakeLists txt里写入 IF NOT CMAKE BUILD TYPE set CMAKE BUIL
  • 进程:fork的使用

    1 用fork函数创建一个进程 pid t fork void fork函数调用成功 xff0c 返回两次 返回值为0 xff0c 代表当前进程是子进程 返回值非负数 xff08 子进程的进程ID xff09 xff0c 代表当前进程为父进
  • 8.15美团笔试和奇葩赛码网的输入坑

    第一次用赛码网 xff0c 两个小时的笔试居然有一个半小时在查如何正确输入 xff0c 最要命的是在本地IDE上可以的输入到了网页上就GG了 看来是leetcode刷多了 xff0c 文件流那块学的也很糟糕 总结一下下次避免跳坑吧 一行的就
  • 大小端与字节序转换

    大端小端 不同机器内部对变量的字节存储顺序不同 xff0c 有的采用大端模式 big endian xff0c 有的采用小端模式 little endian 大端模式是指高字节数据存放在低地址处 xff0c 低字节数据放在高地址处 小端模式
  • 解决ubuntu安装后只有一个800x600的分辨率,且系统设置显示里也只有这个分辨

    1 修改 etc default grub 打开终端用命令 xff1a sudo gedit etc default grub 会出现下面的代码 xff1a If you change this file run update grub a
  • DRV8833直流电机驱动模块代替 TB6612FNG电机驱动

    江科大自化协TB6612使用DRV8833代替 xff0c 以及使用方法 文章目录 前言一 两种模块对比二 HAL库驱动的使用步骤1 配置CubeMX 前言 购买了国产DRV8833模块驱动直流电机 xff0c 单片机3 3V的GPIO口无
  • Spring boot Json字符串传输 " 转义问题解决

    在接收前端返回过来的json字符串时 xff0c 发现出现 34 被转义的情况 xff0c 这里记录下解决方式 xff0c 获取到json字符串的时候我们可以使用工具类去进行转就可以了 xff0c 使用 org apache commons
  • 计算机三级Linux应用与开发技术

    第1章 计算机体系结构与操作系统 一 选择题 1 操作系统负责管理计算机系统的 xff08 C xff09 xff0c 其中包括处理器 储存器 设备和文件 A 程序 B 文件 C 资源 D 进程 2 操作系统是一种 xff08 B xff0
  • Linux 命令 cp mv 花括号用法

    Linux 命令行使用 mv 重命名文件时 xff0c 巧妙的使用 可以很方便 xff0c 最常见的就是把一个文件加个后缀临时备份 例如 xff1a span class token function mv span files local
  • FreeRTOS的调度器源码分析及系统滴答SysTick

    1 PendSV系统调用 查遍了C站上所有关于FreeRTOS调度器的分析 xff0c 发现大家分析完vTaskStartScheduler 之后就戛然而止了 xff0c 我就会比较迷糊 xff0c 这个仅开启了调度器的调度 xff0c 而
  • 从零适配IMX6ULL开发板Linux系统——uboot移植

    串口驱动搜 CP210 下载 目的 xff1a 当拿到一块儿完全没有系统的开发板 xff0c 厂家并没有提供给我们对应的Linux系统 xff0c 从芯片厂家提供的原厂资料中 xff0c 修改并适配自己的开发板 我们需要做的步骤如下 xff
  • NXP IMX6ULL芯片时钟系统全概况

    本文主要针对IMX6ULL芯片的时钟系统进行分析 xff0c 并没有针对哪款开发板 xff0c 毕竟是芯片的问题 一 硬件原理图分析 对于IMX6ULL芯片有两个时钟源 xff0c 我使用的开发板是百问网IMX6ULL xff0c 其他IM
  • 【FreeRTOS】FreeRTOS内存管理的五种方式

    内存管理 1 FreeRTOS为什么要实现自己的内存管理 内存的动态管理是C语言程序的知识范围 xff0c 并不属于FreeRTOS的知识范畴 xff0c 但是它跟FreeRTOS关系是如此紧密 在C语言的库函数中 xff0c 有mallc
  • 【存储】存储特性

    存储特性 精简配置技术 xff08 SmartThin xff09 SmartThin主要功能容量虚拟化存储空间写时分配 xff1a Capacity on Write读写重定向 xff1a Direct on Time应用场景及配置流程