`
tianhandigeng
  • 浏览: 374374 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

存储基础知识:数据一致性

    博客分类:
  • java
阅读更多

一、概述

数据一致性是指关联数据之间的逻辑关系是否正确和完整。问题可以理解为应用程序自己认为的数据状态与最终写入到磁盘中的数据状态 是否一致。比如一个事务操作,实际发出了五个写操作,当系统把前面三个写操作的数据成功写入磁盘以后,系统突然故障,导致后面两个写操作没有写入磁盘中。 此时应用程序和磁盘对数据状态的理解就不一致。当系统恢复以后,数据库程序重新从磁盘中读出数据时,就会发现数据再逻辑上存在问题,数据不可用。

二、Cache引起的数据一致性问题

引 起数据一致性问题的一个主要原因是位于数据I/O路径上的各种Cache或Buffer(包括数据库Cache、文件系统Cache、存储控制器 Cache、磁盘Cache等)。由于不同系统模块处理数据IO的速度是存在差异的,所以就需要添加Cache来缓存IO操作,适配不同模块的处理速度。 这些Cache在提高系统处理性能的同时,也可能会“滞留”IO操作,带来一些负面影响。如果在系统发生故障时,仍有部分IO“滞留”在IO操作中,真正 写到磁盘中的数据就会少于应用程序实际写出的数据,造成数据的不一致。当系统恢复时,直接从硬盘中读出的数据可能存在逻辑错误,导致应用无法启动。尽管一 些数据库系统(如Oracle、DB2)可以根据redo日志重新生成数据,修复逻辑错误,但这个过程是非常耗时的,而且也不一定每次都能成功。对于一些 功能相对较弱的数据库(如SQL Server),这个问题就更加严重了。

解决此类文件的方法有两个,关闭Cache或创建快照 (Snapshot)。尽管关闭Cache会导致系统处理性能的下降,但在有些应用中,这却是唯一的选择。比如一些高等级的容灾方案中(RPO为0),都 是利用同步镜像技术在生产中心和灾备中心之间实时同步复制数据。由于数据是实时复制的,所以就必须要关闭Cache。

快照的目的是为数据 卷创建一个在特定时间点的状态视图,通过这个视图只可以看到数据卷在创建时刻的数据,在此时间点之后源数据卷的更新(有新的数据写入),不会反映在快照视 图中。利用这个快照视图,就可以做数据的备份或复制。那么快照视图的数据一致性是如何保证的呢?这涉及到多个实体(存储控制器和安装在主机上的快照代理) 和一系列的动作。典型的操作流程是:存储控制器要为某个数据卷创建快照时,通知快照代理;快照代理收到通知后,通知应用程序暂停IO操作(进入 backup模式),并flush数据库和文件系统中的Cache,之后给存储控制器返回消息,指示已可以创建快照;存储控制器收到快照代理返回的指示消 息后,立即创建快照视图,并通知快照代理快照创建完毕;快照代理通知应用程序正常运行。由于应用程序暂停了IO操作,并且flush了主机中的 Cache,所以也就保证了数据的一致性。

创建快照是对应用性能是有一定的影响的(以Oracle数据库为例,进入Backup模式大约需要2分钟,退出Backup模式需要1分钟,再加上通信所需时间,一次快照需要约4分钟的时间),所以快照的创建不能太频繁。

三、时间不同步引起的数据一致性问题

引 起数据不一致性的另外一个主要原因是对相关联的多个数据卷进行操作(如备份、复制)时,在时间上不同步。比如一个Oracle数据库的数据库文件、 Redo日志文件、归档日志文件分别存储在不同的卷上,如果在备份或复制的时候未考虑几个卷之间的关联,分别对一个个卷进行操作,那么备份或复制生成的卷 就一定存在数据不一致问题。

此类问题的解决方法就是建立“卷组(Volume Group)”,把多个关联数据卷组成一个组,在创建快照时同时为组内多个卷建立快照,保证这些快照在时间上的同步。之后再利用卷的快照视图进行复制或备份等操作,由此产生的数据副本就严格保证了数据的一致性。

四、文件共享中的数据一致性问题

通常所采用的双机或集群方式实现同构和异构服务器、工作站与存储设备间的数据共享,主要应用在非线性编辑等需要多台主机同时对一个磁盘分区进行读写。

在 NAS环境中,可以通过网络共享协议N FS或CIFS来做到数据的共享。但是如果不在NAS环境中,多台主机同时对一个磁盘分区进行读写会带来写入数据一致性的问题,造成文件系统被破坏或者当 前主机写入后其它主机不能读取当前写入数据的问题。可以通过使用数据共享软件装在多台主机上来实现磁盘分区的共享。由数据共享软件来调配多台主机数据的写 入,保证数据的一致性

 

 

分享到:
评论

相关推荐

    存储基础知识白皮书-存储架构

    ### 存储基础知识白皮书-存储架构 #### 第1章 网络存储主要技术 **1.1 概述** 本章介绍了几种主要的网络存储技术,包括直接附加存储(DAS)、存储区域网络(SAN)以及网络附加存储(NAS)。这些技术在现代数据...

    存储模型与缓存一致性协议

    - **缓存一致性(Cache Coherence)**:涉及管理多个处理器缓存中的数据一致性,以确保读写操作在系统中正确传播。 ### 缓存一致性协议 缓存一致性协议是解决多处理器系统中数据一致性问题的关键机制。当多个...

    BI基础知识 数据仓库 数据挖掘 笔记

    - 集成:数据仓库整合了来自不同来源的异构数据,确保数据的一致性。 - 相对稳定:数据主要用于查询,更新较少,主要关注历史变化。 - 反映历史变化:存储历史数据,支持趋势分析和预测。 2. **数据仓库的组成...

    H3C 存储大讲堂之八:数据保护技术

    - **镜像和复制**:适用于对数据一致性要求高的场景,能够实现实时或接近实时的数据同步。 **2.3 衡量数据保护的重要标准** - **RTO (恢复时间目标)**:指系统从灾难状态恢复到可运行状态所需的时间。 - **RPO ...

    分布式架构下如何保证数据的一致性共18页.pdf.zip

    分布式系统中,数据一致性通常与CAP理论(Consistency、Availability、Partition Tolerance)紧密相关,这是分布式系统设计的基础。CAP理论指出,一个分布式系统无法同时满足一致性、可用性和分区容错性这三个特性,...

    数据仓库基础知识培训教材.pptx

    2. 集成性:数据仓库通过抽取、转换和加载(ETL)过程,将分散在不同源的异构数据整合到一起,确保数据一致性。 3. 相对稳定性:数据仓库中的数据一旦加载,通常不会被修改,而是通过追加新的数据快照来反映时间的...

    DAMA-CDGA/CDGP之DMBOK2.0数据管理知识体系指南核心精要.pdf

    数据治理旨在确保数据的完整性和一致性,以及数据的正确使用,以便为组织提供价值。在DMBOK2.0中,数据治理部分强调了明确治理结构和策略的重要性,包括数据治理框架、数据治理政策、数据管理监督和审计等。 3. ...

    能源互联网一致性算法

    通过MATLAB,开发者可以快速地编写、模拟和优化一致性算法,以便在实际的能源互联网环境中实现高效和可靠的数据一致性。 在MATLAB中实现一致性算法,通常包括以下步骤: 1. **模型构建**:根据一致性算法的理论...

    数据仓库基础知识PPT学习教案.pptx

    2. 集成:数据仓库整合来自不同源头的分散数据,确保数据的一致性和准确性。 3. 相对稳定:数据仓库主要用于查询,数据更新较少,保证了数据的稳定性。 4. 反映历史变化:数据仓库记录了数据随时间的变化,可用于...

    华为存储认证HCIA Storage 4.5 题库

    涵盖存储基础知识、存储体系结构、云存储、人工智能融入存储、FC拓扑结构、PCIe版本、CIFS协议、NFS协议、NAS系统、SAN组网、分布式存储、华为OceanStor全闪存存储系统、机械硬盘性能、SSD硬盘、RAID技术、存储产品...

    存储基础知识培训.pptx

    随着时间的推移,存储技术不断进步,到了1987年,加州伯克利大学的研究人员提出了RAID(独立磁盘冗余数组)技术,旨在提供大容量、高性能和数据一致性,从而开启了磁盘阵列的新篇章。 存储系统环境: 存储系统环境...

Global site tag (gtag.js) - Google Analytics