分享

条带化设置

 langhuayipian 2012-03-19

3.2.5  网卡

根据传输协议的不同,网卡可分为3种,一是以太网卡,二是FC网卡,三是iSCSI网卡。

(1)以太网卡:Ethernet Adapter,传输协议为IP协议,一般通过光纤线缆或双绞线与以太网交换机连接。接口类型分为光口和电口。光口一般都是通过光纤线缆来进行数据传输, 接口模块一般为SFP(传输率2Gbps)和GBIC(1Gbps),对应的接口为SC、ST和LC。电口目前常用接口类型为RJ45,用来与双绞线连 接,也有与同轴电缆连接的接口,不过现在已经用的比较少了。

(2)FC网卡:一般也叫光纤网卡,Fibre Channel HBA(Hose Bus Adapter,主机总线适配器)。传输协议为光纤通道协议,一般通过光纤线缆与光纤通道交换机连接。接口类型分为光口和电口。光口一般都是通过光纤线缆 来进行数据传输,接口模块一般为SFP(传输率2Gbps)和GBIC(1Gbps),对应的接口为SC和LC。电口的接

3.2.6  I/O配置

在各种成熟的存储技术的基础上,合理配置系统的I/O分布及系统I/O配置能大量减少系统在生产运行中出现I/O性能及相关问题的几率。当然,这些 配置是在布置数据库系统时的初始建议,对于复杂的系统来说,很多配置(如一些存储相关的参数)是需要根据系统的运行状况进行调优的。

3.2.7  条带化设置

由于现在的存储技术成熟、成本降低,大多数系统都采用条带化来实现系统的I/O负载分担。如果操作系统有LVM(Logical Volume Manager,逻辑卷管理器)软件或者硬件条带设备,就可以利用这些攻击来分布I/O负载。当使用LVM或者硬件条带时,决定因素是条带深度 (stripe depth)和条带宽度(stripe width)。

条带深度指的是条带的大小,也叫条带单元。

条带宽度指的是条带深度的产量或者一个条带集中的驱动数。

需要根据系统的I/O要求来合理地选择这些数据。对于Oracle数据库系统来说,比较合理的条带深度是从256KB到1MB。下面分析条带深度和条带宽度的影响因素。

在数据库系统中,如果某个文件或者某块磁盘上存在远高于其他文件或磁盘的大量I/O访问,就称这个文件或磁盘为热点文件/磁盘。在做I/O规划时的一个重要目标就是要消除系统中热点文件/磁盘的存在,使整个系统的I/O负载相对平衡。

3.2.7.1  条带深度

为了提高I/O效率,要尽量使一次逻辑I/O请求有一块磁盘的一次物理I/O请求。因而影响条带的一个重要因素就是一次逻辑I/O请求的大小。

此外,系统中I/O的并发度不同,对条带的配置要求也不同。例如,在高并发度且I/O请求都比较小的情况下,人们希望一块磁盘能同时响应多个I/O 操作;而在那些存在大I/O请求的低并发度系统中,可能就需要多块磁盘同时响应一个I/O请求。无论是一个磁盘还是多个磁盘响应I/O请求,一个原则是让 一次逻辑I/O能被一次处理完成。

下面介绍影响I/O大小的操作系统和Oracle的相关参数。

db_block_size:Oracle中的数据块大小,也决定了Oracle一次单个I/O请求中的数据块的大小。

db_file_multiblock_read_count:在多数据块读时,一次读取数据块的数量,它和参数db_block_size一起决定了一次多数据块读的大小,它们的乘积不能大于操作系统的最大I/O大小。

操作系统的数据块大小:这个参数决定了Redo Log和Archive Log操作时的数据块大小。

最大操作系统I/O大小:决定了一次单个的I/O操作的I/O大小的上限,对于大多数Unix系统来说,由参数max_io_size设置。

sort_area_size:内存中sort area的大小,也决定了并发排序操作时的I/O大小。

hash_area_size:内存中hash area的大小,也决定了哈希操作的I/O大小。

其中,前面两个是最关键的两个参数。

在OLTP系统中,会存在大量小并发的I/O请求。这时就需要考虑选择比较大的条带深度。使条带深度大于I/O大小就称为粗粒度条带(Coarse Grain Striping)。在高并行度系统中,条带深度为n×db_block_size,其中n为大于1的整数。

通过粗粒度条带能实现最大的I/O吞吐量(一次物理I/O可以同时响应多个并发的逻辑I/O)。大的条带深度能够使像全表扫描那样多数据块读操作由一个磁盘驱动来响应,并提高多数据块读操作的性能。

在低并发度的DSS系统中,由于I/O请求比较序列化,为了避免出现热点磁盘,需要避免逻辑I/O只由一块磁盘处理。这时,粗粒度条带就不适合了。 选择小的条带深度,使一        个逻辑I/O分布到多个磁盘上,从而实现I/O的负载均衡,这就叫细粒度条带。条带深度的大小为n×db_block_size,其中n为小于多数据块读 参数db_file_multiblock_read_count的整数。

另外,I/O过程中,用户无法保证Oracle数据块的边界和条带单元的大小对齐。如果条带深度大小和Oracle数据块大小完全相同,而它们的边界没有对齐的话,那么就会存在大量一个单独的I/O请求被两块磁盘来完成。

在OLTP系统中,为了避免一个逻辑I/O请求被多个物理I/O操作完成,条带宽度就需要设置为Oracle数据块大小的两倍或者两倍以上。例如,如果条带深度是I/O大小的N倍,对于大量并发I/O请求,可以保证最少有(N-1)/ N的请求是由一块磁盘来完成。

口类型一般为DB9针或 HSSDC。

3.2.7.2  条带宽度

正如前面所述,无论是一个还是多个磁盘响应一个逻辑I/O,都要求I/O能被一次处理。因而在确定了条带深度的基础上,需要保证条带宽度 >= I/O请求的大小 / 条带深度。

此外,考虑到以后系统容量的扩充,也需要规划好条带宽度。

如今大多数LVM都支持在线动态增加磁盘。也就是在磁盘容量不足时,可以随时将新磁盘加入到一个已经使用的逻辑卷中。这样的话,在设置逻辑卷时就可以简单地将所有磁盘都归入到一个卷中。

但是,有些LVM可能还不支持动态增加磁盘,这时就需要考虑以后的容量扩充对I/O均衡的影响。因为新增加的磁盘无法加入原有卷,而需要组成一个新 的卷。但一般扩充的容量和原有容量比相对较小,如果原有卷的条带宽度比较大的话,新增加的卷的条带宽度无法达到其大小,这样就会使新、旧卷之间出现I/O 失衡。

例如,一个系统的初始配置是一个包含64块磁盘、每块磁盘大小为16GB的单一逻辑卷。磁盘总的大小是1TB。随着数据库的数据增长,需要增加 80GB的空间。把新增加的5个16GB磁盘再组成一个逻辑卷。这样就会导致两个卷上的I/O失衡。为了避免这种情况,可以将原有磁盘配置成每个条带宽度 为8个磁盘的8个逻辑卷,这样在新增加磁盘时可以也增加为8个磁盘的新卷,但必须要保证8个磁盘的条带宽度能够支持系统的每秒I/O吞吐量。

如果条带宽度设置的比较小,就需要估算出各个数据库文件的I/O负载,并根据负载量不同将它们分别部署到不同卷上分担I/O负载。

光纤网卡一般是指FC HBA卡,插在服务器上,外接存储用的光纤交换机;而光口的以太网卡一般都叫做光纤以太网卡,也是插在服务器上,不过它外接的是带光口的以太网交            换机。

(3)iSCSI网卡:Internet Small Computer System Interface,iSCSI HBA,传输iSCSI协议,接口类型与以太网卡相同。iSCSI(internet SCSI)是一套定义在TCP/IP网络上传输SCSI协议的命令。它将SCSI定义的发起方(initiator)和目标方(target)由原来的 SCSI总线连接扩展到Internet上,打破了SCSI定义中的存储距离的限制。

3.2.7.3  条带大小计算方法

stripe width(条带宽度):RAID中的磁盘数,就是组成这个stripe的磁盘数。例如,4个磁盘组成的RAID 0,条带宽度就是4。

stripe depth(条带深度):单块磁盘上条带的大小,有时也称为stripe unit。

stripe size(条带大小):stripe depth×stripe width。有时也称block size块大小、chunk size簇大小、stripe length条带长度、granularity粒度,是单块磁盘上的每次I/O的最小单位。

RAID条带大小的另一个计算公式为:

条带大小=(0.25×平均定位时间×数据传输速率×(并发用户数-1)×1.024)+0.5KB。

平均定位时间=(平均延时+平均寻道时间)(ms);数据传输速率单位为:Mbps;1.024 = 1s/1000ms×1024KB/1MB(单位转换因子)。

举例来说,磁盘寻道时间是6ms,传输速率80MB,且有20个并发用户的条带大小应该为:(0.25×6×80×19×1.024)+0.5=2335.22KB(差不多2MB)。





    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多