华为 OceanStor V3 融合存储(简称 V3 存储)是面向企业级应用的新一代统一存储产品。

凭借面向云架构的存储操作系统、强劲的新一代硬件平台和丰富的智能管理软件, V3 存储在功能、性能、效率、可靠性和易用性上都达到业界领先水平,很好的满足了大型数据库 OLTP/OLAP、文件共享、云计算等各种应用下的数据存储需求,广泛适用于政府、金融、电信、能源、媒资等行业。同时,V3 存储能够提供高效、灵活、丰富 的备份,容灾解决方案,有效保证用户业务连续性和数据安全,为用户提供卓越的存储服务。

融合设计
SAN 与 NAS 的融合:一套设备兼容 SAN 和 NAS 两种服务,满足业务弹性发展, 简化业务部署,提升存储资源利用率,有效降低 TCO。块服务与文件服务由底层存 储资源池直接提供,缩短了存储资源的访问路径,从而保证两种服务同样高效。
异构设备的融合:通过内置异构虚拟化功能,V3 系列中端存储能高效接管其它 流厂商存储阵列,并整合成统一的资源池,实现资源的统一、灵活分配。
高中低端的融合:业界唯一高中低端互联互通,无需借助第三方系统,数据即可在不同型号设备中自由流动。
SSD 和 HDD 的融合:集成传统存储和全固态存储双重优势,可将不同类型介质的性能均发挥到极致,满足用户在性能和成本上的最优均衡。
主存与备份的融合:通过内置备份功能,用户无需额外购买备份软件即可实现高效的数据备份,有效降低备份方案的管理复杂度。
RAID 2.0+块级虚拟化
V3 存储用 RAID2.0+块级虚拟化技术。RAID2.0+采用底层硬盘管理和上层资源管理层虚拟化管理模式,在系统内部,每个硬盘空间被划分成一个个小粒度的数据块,基于数据块来构建 RAID 组,使得数据均匀地分布到存储池的所有硬盘上,同时,以数据块为单元来进行资源管理,大大提高了资源管理的效率。
V3 存储支持三种不同类型(SSD、SAS 和 NL-SAS)的硬盘,这些硬盘组成一个个的硬盘域(Disk Domain)
在硬盘域中,同种类型的硬盘按照一定的规则被划分为一个个的 Disk Group(DG);
在 DG 中,每个硬盘被切分成固定大小的数据块(Chunk,也叫 CK),OceanStor 存储系统通过随机算法,将不同硬盘的Chunk(CK)按照 RAID 算法组成 Chunk Group(CKG);

CKG 被划分为固定大小的逻辑存储空间(Extent),Extent 是构成Thick LUN 的基 本单位;对于Thin LUN,会在 Extent 上再进行更细粒度的划分(Grain),并以 Grain为单位映射到 Thin LUN。

SmartTier分级存储
SmartTier 特性是华为公司在 RAID2.0+技术之上自主研发的分级存储特性,根据不同的 硬盘类型建立不同的存储层(Tier),统计分析数据块的访问频率,并根据分析结果在不 同存储层间自动迁移数据,以确保数据在合适的时间内存放于合适的存储介质中,从而 提高存储系统性能并降低用户投资成本。
V3 存储支持 SSD、SAS 和 NL_SAS 三种类型的硬盘。不同存储介质在存储成本和性能 方面的差异很大,用户难以在存储成本和存储性能之间权衡。
SSD:响应时间很短,单位存储请求处理成本很低,单位存储容量成本很高;
NL-SAS:单位存储容量成本较低,单位存储请求处理成本很高;
SAS:介于以上两者之间。
为了解决客户对于存储性能、容量、成本需求难以兼顾的问题,V3 存储基于以下原则 推出了 SmartTier 特性:
高性能,多承载:业务多样化,业务性能要求差异化;
灵活性,易用性:配置便捷,自动调整数据,选择最合适的介质;
高效率,低功率:绿色节能,高效利用空间。

SmartTier原理 : LUN 级别的智能化数据存放管理,将 LUN 数据按照默认 4MB (512KB ~ 64MB 可调)的粒度划分,该粒度被称为“数据迁移粒度 extent”。SmartTier 以“extent”为单位,统计和分析数据的活跃度,将不同活跃度的数据和不同特点的存 储介质动态匹配,并通过数据迁移将活跃度高的“繁忙”数据迁移至具有更高性能的存 储介质(如 SSD 硬盘),将活跃度低的“空闲”数据迁移至具有更高容量且更低容量成 本的存储介质(如 NL_SAS 硬盘)。

一个完整的 SmartTier 业务流程经历以下三个阶段:
热点统计
SmartTier 允许用户自定义 I/O 监控的时间段,在指定的时间段内,对写入和读取的 数据进行统计。随着数据生命周期的推移,数据的活跃度会发生变化,存储系统根 据两个 extent 的活跃度来判断一个数据块是否比另一个更“热”或更“冷”。每个 extent 的活跃度通过统计数据块的性能指标得出。
排布分析
排布分析阶段使用热点统计数据进行热点分析,分析结果会对存储池中的每个 extent 排序,顺序由高至低,从同一个存储池中的最热 extent 开始,直到最冷 extent (排序在同一个存储池中进行),最终生成数据迁移方案。SmartTier 在数据迁移之前 根据最近一次生成的数据迁移方案决定 extent 的迁移方向。
数据迁移
SmartTier 有两种迁移触发模式:手动触发和定时触发。手动触发的优先级高于自动 迁移。手动触发可以根据需要立即触发迁移,定时触发是根据预先设定好的开始迁 移时间和持续迁移时长进行自动触发迁移,可以预先设置每周的哪些天的什么时间 开始触发迁移,以及迁移持续的时长。
术语表

Oracle 数据库和集群
Oracle 数据库是应用最为广泛的关系型数据库之一,对 Oracle 12c 做简要介绍,聚 焦与多租户相关的组件和特性:RAC (Real Application Cluster)、ASM(Automatic Storage Management)、多租户、数据文件、实例架构、业务类型。
Oracle RAC and ASM
Oracle 12C RAC 包含若干个直接访问存储的服务器节点(称为 Hub Nodes) 和若干个通过 Hub Nodes 间接访问存储的服务器节点(Leaf Nodes)。在 Oracle RAC 上 部署数据库时,这些节点可以被分为多个 Server Pool,数据库部署于某一个 Server Pool 上,在 Server Pool 的每一个节点上均运行一个数据库实例。应用服务器通过访问节点的 VIP(Virtual IP)来存取数据,当某个节点故障时,Oracle RAC 在其他的节点上创建故 障节点的 VIP 网络,应用服务器通过重新连接机制重新访问数据库。在应用服务器上 设置连接字符串,可以实现多种访问 Oracle RAC 节点的模式,包括负载均衡模式与故 障切换模式,这样多节点的 Oracle 集群数据库对于应用服务器来说,就像是访问单一数 据库。
Oracle RAC Hub Nodes 的共享存储包含三部分:OCR(Oracle Cluster Registry)、Voting Disk、Database。其中 OCR 用于记录节点状态信息,Voting Disk 用于节点间同步,而 Database 部分是由一系列的数据文件组成的。

Oracle ASM(Automatic Storage Management)是随 Oracle 数据库 10g/11g 推出的,给数 据库管理员提供了一个简单的存储管理界面用于跨平台管理服务器和存储。作为内置的 文件系统和卷管理器,为 Oracle 数据库文件所专用。
ASM 简化文件系统管理,提供异 步 I/O 性能优化,节省 DBA 的管理时间,提供弹性高效的数据库环境。ASM 可以将多个 LUN(Logical Unit Number)组合为磁盘组,通过 AU(Allocation Unit) 在 LUN 上分配存储空间,ASM 磁盘组有三种类型:
External:LUN 之间不进行数据镜像,由存储系统提供数据保护机制
Normal:由两个失效组组成,两个失效组之间进行数据镜像
High:由三个失效组组成,三个失效组之间的数据互为镜像
使用统一存储系统上创建 ASM 磁盘组时,建议首先将磁盘组内的 LUN 平均分配到各引 擎控制器,再创建 External 或 Normal 格式的磁盘组。
Oracle 12C 引入了一个全新的 Oracle ASM 部署模型 Oracle Flex ASM,通过它可提高数 据库实例的可用性并降低 Oracle ASM 相关资源的占用。Oracle Flex ASM 简化了基于 集群的数据库整合,当特定服务器上的 Oracle Flex ASM 实例出现故障时,能够确保运 行在该服务器上的 Oracle Database 12c 实例继续运行。
Orcale 12C 之前的 ASM-图

Orcale 12C Flex ASM

Oracle RAC 主要有以下特点,这些特点对于高可用性数据管理来说极其重要:
可靠性:
Oracle数据库以其可靠性而著称。Oracle RAC 消除了数据库服务器单点故 障问题,从而使可靠性更上一层楼。如果一个实例发生故障,服务器池中的其余实 例仍将保持正常运行状态。Oracle Clusterware 监视所有 Oracle 进程,并能立即重 启任何发生故障的组件。
错误检测:
Oracle Clusterware 自动监视 Oracle RAC 数据库和其他 Oracle 进程 (Oracle ASM、实例、监听器等),并快速诊断环境中的问题。它还经常能在用户 察觉到故障之前自动完成故障恢复。
恢复能力:
Oracle 数据库包含的许多特性有助于数据库轻松地从各类故障中恢复。如果 Oracle RAC 数据库中的一个实例出现故障,服务器池中的另外一个实例将察 觉到这一故障,随后自动进行故障恢复。利用快速应用程序通知 (FAN)、快速连接 故障切换 (FCF),尤其是利用 Oracle RAC 12c 应用程序连续性特性,可轻松地掩 藏任何组件故障,使用户无法察觉。
连续运行:
Oracle RAC 可在计划和意外中断期间提供连续的服务。如果一个服务 器(或实例)出现故障,数据库将保持运行,应用程序仍能继续访问数据,从而让 业务关键型负载得以完成运行,而且多数情况下服务交付无延迟。
Oracle 系统架构

如上图所示据库使用到内存包含两部分,SGA(System Global Area)和 PGA(Program Global Area),其中 SGA 用于存放系统信息和页面缓存,而 PGA 用于存放会话信息。SGA 主要包含如下几部分:
Buffer Cache:
用于缓存数据块
Redo Log Buffer:
用于缓存日志记录,是一个循环数组
Share Pool:
用于缓存数据字典、共享 SQL 信息等 Oracle 的数据文件包含如下几种类型:
Control File:
记录数据库的结构、参数和其他数据文件的位置。
Data File:
存放用户数据和临时数据。
Online Log:
存放数据块更改记录,由若干个日志组组成,日志组内的文件互为镜 像,某个日志组写满之后切换到下一个日志组继续写入,最后一个日志组写满之后 切换到第一个日志组。
Archive Log:
当数据库处于归档模式时,数据库将写满的日志组拷贝到归档区,用于数据异常时恢复。Oracle 的进程中,Listener 负责监听客户端连接,客户端的连接模式有两种:
Shared 模式:
Listener 将客户端的请求交给 Dispatcher 进程处理,Dispatcher 将请求 放在位于 Large Pool 的 Request Queue 里,Shared Server 进程从 Request Queue 里取 出客户端请求进行处理,处理结果放在 Large Pool 的 Response Queue 里,再由 Dispatcher 将处理结果返回给客户端。
Dedicated 模式:
每个客户端连接都有一个专属的 Server 进程为其服务。ORACLE Server 进程接收到客户端的请求后,首先从 Buffer Cache 中查找要访问的数据块是否存在,如果存在,则从 Buffer Cache 中读取数据、计算、更改,如果不存在,则 首先从数据文件将数据块读取到 Buffer Cache 中,再执行计算、更改。
Oracle按照LRU算法对Buffer Cache中的旧数据进行淘汰,腾出空间供新的数据块使用。Buffer Cache 中被更改过得数据块称为脏数据,DBW(DB Writer)进程负责将脏数据写 入数据文件。
为保证数据完整性与可靠性,关系型数据库使用事务来表示一次原子操作。在处理事务 的过程中,Oracle Server 进程将被更改的数据和发生更改的时间记录到 Log Buffer 中, 当事务提交时,由 LGWR(Log Writer)将 Log Buffer 中的日志记录数据同步到在线日 志文件中。Log Buffer 是一个可被循环写入的内存区域,当 Log Buffer 空间占用超过 1/3 时,不管事务是否提交,LGWR 都会把日志记录同步到日志文件中。另外,ORACLE 还会每 3 秒钟自动进行一次日志同步。
默认情况下,Oracle数据库每30分钟执行一次检查点,检查点发生时,CKPT(Checkpoint) 进程将同步控制文件,并触发 DBW 将脏数据写入数据文件。
Oracle 的在线日志分为若干组,每个日志组包含一个或多个日志文件,如果有多个日志 文件,则这些文件之间互为镜像。Oracle 将日志顺序写入日志组,当最后一个日志组写 满时,将切回到第一个日志组写入。发生日志组切换时,Oracle 将判断下一个日志组中 记录的脏数据是否完全被写入到数据文件,如果没有,Oracle 将等待 DBW 将这些脏数 据写入到数据文件之后,才会进行日志组切换。
Oracle 处于归档模式时,由 ARC(Archive)进程将写满的日志拷贝到归档区,数据异 常时,归档日志用来进行精确的数据恢复。
Oracle 12c 引入了多租户架构,可以在一个 CDB(Container Database)里面,运行多个 PDB(Pluggable Database)。下图显示了一个拥有 4 个容器的 CDB:root,种子 PDB 以 及两个 PDB(hrpdb 和 salespdb)。每个 PDB 拥有自己专有的应用,并且由它自己的 PDB 管理员进行管理。用户 SYS 可以管理 root 和每个 PDB。在物理层,CDB 拥有一个数据 库实例和数据库文件。多租户特性为 Oracle 数据库带来了更好的可服务性。
种子PDB是系统提供的一个模板,可以用于CDB创建新的PDB。种子PDB的名称为PDB$SEED。用户不能添加或者修改 PDB$SEED 中的对象。

业务类型
数据库业务大致上可以分为 OLTP(Online Transaction Processing)和 OLAP(Online Analytical Processing)两种应用类型:
OLTP:大量在线用户进行事务操作,例如在线购物网站
OLAP:很少量的用户在线执行长时间复杂的统计查询
OLTP 应用的负载特征如下
从数据库角度看:
每个事务的读、写、更改涉及的数据量非常小
数据库的数据必须是当前的,所以对数据库的可用性要求很高
同时有很多用户连接到数据库,使用数据库
要求数据库有很快的响应时间,通常一个事务在几秒内完成
从存储角度看:
每个 I/O 非常小,通常为 2KB~8KB
访问硬盘数据的位置非常随机
至少 30%的数据是随机写操作
REDO 日志写入非常频繁
SAN 组网架构
Oracle 数据库往往承载着企业核心业务系统,为保证业务连续性,建议使用 Oracle RAC 集群,组网应避免单点故障。如下图所示,SAN(Storage Area Network)组网中,使用 两个物理上独立的交换平面(每个交换平面包括一个交换机或多个相互级联的交换机), 每个数据库节点与两个交换平面相连,每个存储控制器和两个交换平面相连。

划分 Zone 或 vLAN
通过划分 Zone 或 vLAN,可以实现如下目的:
在企业 IT 系统中,一台存储往往承载多个业务系统,通过划分 Zone 或 vLAN,可 以避免各业务系统相互影响
主机路径数过多,会增加系统管理的复杂度,也会增加运维过程中网络变更的难度, 通过划分 Zone 或 vLAN,可以改善 IT 基础架构的灵活性
划分 Zone 或 vLAN 的总体策略是保证双交换组网,即在每个交换平面上,每个数据库 节点与每个存储控制器均有逻辑通道。在此策略的基础上,根据性能、部署复杂度、运 维灵活性等多个方面考虑组网。
性能方面应根据主机的 IOPS 和带宽需求规划主机端口和路径数。
部署和运维方面,需要平衡部署复杂度和运维灵活性,下图展示了三种 Zone 划分方式, 从上到下的复杂度越来越高,但灵活性越来越好。

微型事务数据库参考架构

数据库容量负载规划

存储规划配置

备注说明
[1] Disk Domain 配置:SAS 热备策略为“高” (默认),SSD 层热备策略为“低”。
[2] Storage Pool 配置:SAS 层 RAID 级别为 RAID10;容量为 6TB;SSD 层 RAID 级别为 RAID5,容量 800GB;SmartTier 业务监控时段设置为 8:00~18:00,数据迁移计划设置为每日 2:00~6:00;其它参数默认。
[3] DATA 区域 LUN 配置:SmartTier 策略设置为“自动迁移”;均分 AB 控;其它参数默认。LOG 区域 LUN 配置:读写策略“回收”;优先级设为“高”;均分 AB 控;其它参数默认。
[4] ASM Disk Group 的冗余策略均为“外部冗余”;其他参数默认。
主机配置参数
本示例方案未创建分区,因此不涉及 I/O 对齐的设置。
未对块设备队列深度和 HBA 队列深度进行更改。
块设备 IO 调度策略设置为 deadline。
Linux 大页设置为 200GB(约 80%内存)。

集群参数
为了满足故障场景下的业务连续性,建议将 Oracle RAC 的 misscount 时间调整为 45 秒。$ORA_CRS_HOME/bin/crsctl set css misscount 45
数据库参数
Oracle 12c 数据库 OLTP 业务下,建议针对以下参数进行调整,参数的最佳值应根据实 际业务进行测试调整,以获取最佳性能和可靠性。下表列出了关键参数的含义和推荐值

在线日志
Oracle 12c 数据库 OLTP 业务下,如果写入非常频繁,建议将在线日志文件适当调大, 但建议不要超过 128MB,否则有可能造成比较长的失败恢复时间。Oracle 数据库写日志 的策略为循环写入,为避免日志等待,建议为每个实例创建 4 个以上的日志组,每个日 志组包含 2 个日志文件,并将其中一个放置于归档区。
归档和备份
强烈建议为生产系统数据库启用归档模式,并制定备份策略,保证至少每天备份一次。
结束语:

【一条鱼哲思】鱼上钩了,那是因为鱼爱上了渔夫,它愿用生命来博渔夫一笑、

