条带化(Striping)是把连续的数据分割成相同大小的数据块,把每段数据分别写入到阵列中不同磁盘上的方法。此技术非常有用,它比单个磁盘所能提供的读写速度要快的多,当数据从第一个磁盘上传输完后,第二个磁盘就能确定下一段数据。数据条带化正在一些现代数据库和某些RAID硬件设备中得到广泛应用。 条带化的设置 由于现在的存储技术成熟、成本降低,大多数系统都采用条带化来实现系统的IO负载分担。如果操作系统有LVM(Logical Volume Manager逻辑卷管理器)软件或者硬件条带设备,我们就可以利用这些攻击来分布IO负载。当使用LVM或者硬件条带时,决定因素是条带深度(stripe depth)和条带宽度(stripe width): 条带深度指的是条带的大小,也叫条带单元; 条带宽度指的是条带深度的产量或者一个条带集中的驱动数; 需要根据系统的IO要求来合理的选择这些数据。对于Oracle数据库系统来数,比较合理的条带深度是从256K到1M。下面分析影响条带深度和条带宽度的影响因素。 条带深度 为了提高IO效率,我们要尽量使一次逻辑IO请求由一块磁盘的一次物理IO请求。因而影响条带的一个重要因素就是一次逻辑IO请求的大小。 此外,系统中IO的并发度不同我们对条带的配置要求也不同。例如,在高并发度且IO请求的大小都比较小的情况下,我们希望一块磁盘能同时响应多个IO操作;而在那些存在大IO请求的低并发度系统中,我们可能就需要多块磁盘同时响应一个IO请求。无论是一个磁盘还是多个磁盘响应IO请求,我们的一个原则是让一次逻辑IO能被一次处理完成。 下面先看下影响IO大小的操作系统和Oracle的相关参数: db_block_size:Oracle中的数据块大小,也决定了Oracle一次单个IO请求中的数据块的大小; db_file_multiblock_read_count:在多数据块读时,一次读取数据块的数量,它和参数db_block_size一起决定了一次多数据块读的大小,它们的乘积不能大于操作系统的最大IO大小; 操作系统的数据块大小:这个参数决定拉Redo Log和Archive Log操作时的数据块大小,对于大多数Unix系统来说,该值为512K; 最大操作系统IO大小:决定了一次单个的IO操作的IO大小的上限,对于大多数Unix系统来说,由参数max_io_size设置; sort_area_size:内存中sort area的大小,也决定了并发排序操作时的IO大小; hash_area_size:内存中hash area的大小,也决定了哈希操作的IO大小。 其中,前面两个是最关键的两个参数。 在OLTP系统中,会存在大量小的并发的IO请求。这时就需要考虑选择比较大的条带深度。使条带深度大于IO大小就称为粗粒度条带(Coarse Grain Striping)。在高并行度系统中,条带深度为(n * db_block_size),其中n为大于1的整数。 通过粗粒度条带能实现最大的IO吞吐量(一次物理IO可以同时响应多个并发的逻辑IO)。大的条带深度能够使像全表扫描那样的多数据块读操作由一个磁盘驱动来响应,并提高多数据块读操作的性能。 在低并发度的DSS系统中,由于IO请求比较序列化,为了避免出现热点磁盘,我们需要避免逻辑IO之由一块磁盘处理。这是,粗粒度条带就不适合了。我们选择小的条带深度,使一个逻辑IO分布到多个磁盘上,从而实现IO的负载均衡。这就叫细粒度条带。条带深度的大小为(n * db_block_size),其中n为小于多数据块读参数(db_file_multiblock_read_count)大小的整数。 另外,IO过程中,你无法保证Oracle数据块的边界能和条带单元的大小对齐。如果条带深度大小和Oracle数据块大小完全相同,而它们的边界没有对齐的话,那么就会存在大量一个单独的IO请求被两块磁盘来完成。 在OLTP系统中,为了避免一个逻辑IO请求被多个物理IO操作完成,条带宽度就需要设置为两倍或者两倍以上于Oracle数据块大小。例如,如果条带深度是IO大小的N倍,对于大量并发IO请求,我们可以保证最少有(N-1)/ N的请求是由一块磁盘来完成。 条带宽度 正如我们前面所述,无论是一个还是多个磁盘响应一个逻辑IO,我们都要求IO能被一次处理。因而在确定了条带深度的基础上,我们需要保证条带宽度 >= IO请求的大小 / 条带深度。 此外,考虑到以后系统容量的扩充,我们也需要规划好条带宽度。 如今大多数LVM都支持在线动态增加磁盘。也就是在磁盘容量不足时,我们可以随时将新磁盘加入到一个已经使用的逻辑卷中。这样的话,我们在设置逻辑卷时就可以简单地将所有磁盘都归入到一个卷中去。 但是,有些LVM可能还不支持动态增加磁盘。这时我们就需要考虑以后的容量扩充对IO均衡的影响了。因为你新增加的磁盘无法加入原有卷,而需要组成一个新的卷。但一般扩充的容量和原有容量比较相对比较小,如果原有卷的条带宽度比较大的话,新增加的卷的条带宽度无法达到其大小,这样就会使新、旧卷之间出现IO失衡。 例如,一个系统的初始配置是一个包含64块磁盘、每块磁盘大小为16G的单一逻辑卷。磁盘总的大小是1T。随着数据库的数据增长,需要增加80G的空间。我们把新增加的5个16G磁盘再组成一个逻辑卷。这样就会导致两个卷上的IO失衡。为了避免这种情况。我们可以将原有磁盘配置成每个条带宽度为8个磁盘的8个逻辑卷,这样在新增加磁盘时可以也增加为8个磁盘的新卷。但必须要保证8个磁盘的条带宽度能够支持系统的每秒IO吞吐量。 如果你的条带宽度设置得比较小,就需要估算出你的各个数据库文件的IO负载,并根据负载量不同将他们分别部署到不同卷上一分担IO负载。 人工条带 如果系统不支持LVM或者硬件条带,IO负载就必须由DBA根据数据库文件的IO负载不同手工将他们分散到各个磁盘上去以保证整个系统的IO负载均衡。 有许多DBA会将哪些使用频率非常高的表和它的索引分开存储。但实际上这种做法并不正确。在一个事务中,索引会先被读取到然后再读取表,它们的IO操作是有前后顺序的,因此索引和表存储在同一个磁盘上是没有冲突的。仅仅因为一个数据文件即包含了索引又包含了数据表而将它分割是不可取的。我们需要根据文件上的IO负载是否已经影响到了数据库的性能来决定是否将数据文件分割。 为了正确分布文件,我们首先必须先了解各个数据库文件的IO负载需求以及IO系统的处理能力。鉴定出每个文件的IO吞吐量。找出哪些文件的IO吞吐率最高而哪些IO量很少,将它们分散分布到所有磁盘上去以平衡IO吞吐率。 如果你不了解或者无法预计文件的IO负载,就只能先估计他们的IO负载来规划文件分布,在系统运行过程中再做调整。 原文地址:http://blog.chinaunix.net/space.php?uid=10597892&do=blog&id=2946980 |
相关推荐
条带化(Striping)是一种数据存储技术,它将数据分散到多个物理磁盘上,以提高磁盘I/O性能和存储系统的吞吐量。在Windows操作系统中,特别是在Windows Server 2012 R2 Datacenter这样的企业级环境中,配置条带化...
文件条带化(Striping)是分布式存储系统中常用的一种数据布局技术,它的基本思想是将一个大文件分割成多个小的数据块,然后将这些数据块分散到不同的存储设备上,以提高数据读写速度和并发处理能力。这种技术在大型...
标题中的“LVM的条带分布1”指的是Linux Logical Volume Manager (LVM) 中的一种存储配置,即条带化(Striping)。条带化是一种数据分布技术,它将数据分割成多个块,并在多个物理存储设备(如硬盘)之间均匀分配,...
在数据存储系统中,条带化(striping)是将数据分布在多个硬盘上以提高性能和可靠性的技术。在动态条带化中,条带的分布会根据需要进行调整。然而,SSD与传统硬盘驱动器(HDDs)相比,有着不同的性能特点,特别是在...
条带化(Striping)是RAID的基本概念之一,它将数据分割成块并均匀分配到各个硬盘上,以实现并行读写,提高I/O性能。在部分条带写操作中,不是整个条带都需要更新,而是仅有一部分数据发生变化。这种情况下,优化的...
3. RAID 5:带奇偶校验的条带化(Striping with Parity) RAID 5通过在所有磁盘间分散奇偶校验信息实现冗余,允许在不影响整体阵列性能的情况下替换一个故障磁盘。数据恢复过程是自动的,但是当第二个磁盘故障时,...
1. RAID 0:条带化(Striping)。数据被分割并均匀分布在多个硬盘上,提高了读写速度,但无数据冗余,一旦硬盘故障,数据将丢失。 2. RAID 1:镜像(Mirroring)。数据完全复制到两个硬盘上,提供高数据安全性,但...
RAID 10,也称为RAID 0+1,是一种结合了RAID 0的条带化(Striping)和RAID 1的镜像(Mirroring)技术的存储解决方案,旨在提供高速数据访问和高数据冗余,从而确保服务器的稳定运行。这种技术在服务器领域广泛应用,...
1. RAID 0(条带化,Striping): RAID 0是最基础的级别,它不提供数据冗余,而是将数据分割成块并分布在多个硬盘上,以提高读写速度。这种配置至少需要两个硬盘。数据条带化提高了I/O操作的并行性,使得整体性能...
3. RAID 5:带奇偶校验的分布式条带化(Distributed Parity Striping)。数据被条带化并分散在多个磁盘上,同时在其他磁盘上存储奇偶校验信息,允许在一个磁盘故障时恢复数据。RAID 5至少需要三个磁盘。 4. RAID 6...
本文介绍了一种新型技术——基于分组的弹性条带化(Grouping-based Elastic Striping)结合热点感知(Hotness Awareness),旨在提高固态硬盘(SSD)RAID系统的性能。传统RAID系统在更新奇偶校验数据时采用读-修改-...
3. RAID 5:带奇偶校验的条带化(Striping with Parity)。RAID 5在多个硬盘间分配数据并计算奇偶校验,允许在不影响整体性能的情况下重建一个失效硬盘上的数据,提供了较高的数据冗余和读写速度。 4. RAID 6:双重...
3. RAID 5:带奇偶校验的条带化(Striping with Parity)。RAID 5在多个硬盘间分配数据,并在剩余的硬盘上存储奇偶校验信息,允许在一块硬盘故障时重建数据。相比于RAID 1,RAID 5提供了更高的存储效率和容错能力。 ...
RAID 0:条带化(Striping) RAID 0是最基础的RAID级别,它通过将数据分块并同时写入多个硬盘来提高读写速度。由于没有冗余,如果任意一个硬盘发生故障,所有数据都将丢失,因此RAID 0不提供数据保护。 RAID 1:...
5. RAID 10/1+0:镜像条带化(Mirroring and Striping)——结合了RAID 1和RAID 0的特点,数据既被镜像又被条带化,提供高读写速度和数据安全性,但成本较高。 6. RAID 50/5+0和RAID 60/6+0:这些是RAID 5和RAID 6...
1. RAID 0:条带化(Striping) RAID 0是最基本的级别,它将数据分割成块并均匀分布在多个硬盘上,从而实现数据读写速度的显著提升。然而,RAID 0没有冗余,如果任何一块硬盘故障,所有数据都将丢失。 2. RAID 1:...
在RAID系统中,数据通常会被条带化(striping),即将一个大文件分割成多个小部分,然后这些部分分别存储在不同的硬盘上,以提高数据传输速度。然而,当RAID系统需要扩容时,例如添加新的硬盘,就面临着如何在不丢失...
3. RAID 5:带奇偶校验的条带化(Striping with Parity)。数据和奇偶校验信息分布在三个或更多硬盘上,允许在不丢失数据的情况下恢复单个硬盘故障。提供了速度和冗余的平衡。 4. RAID 6:双奇偶校验的条带化。类似...
1. RAID 0:条带化(Striping) RAID 0是最基础的级别,它将数据块分别写入多个硬盘,提高读写速度。但没有数据冗余,一旦一个硬盘故障,所有数据都将丢失。 2. RAID 1:镜像(Mirroring) RAID 1将数据完全复制...
3. RAID 5:带奇偶校验的条带化(Striping with Parity)。RAID 5在所有硬盘上分布式存储奇偶校验信息,允许在一块硬盘故障时仍能恢复数据,而不会丢失整个阵列。 4. RAID 6:双奇偶校验的条带化。类似于RAID 5,但...