oracle学习笔记 存储及raid技术概述

时间:2022-03-14 07:41:23
oracle学习笔记

存储及raid技术概述

本课以oracle数据库所运行的环境,讲一下存储和raid技术。

一)oralce生产环境里的结构
先说一下oracle所在的环境。
有一种结构:
两个服务器、两个光纤存储交换机、两个存储,
它们通过网线相互连接在一起。
每个服务器接两个交换机,
每个交换机连两个服务器同时连两个存储,
每个存储和两个交换机有连接。
这是oracle数据库相对比较典型的正规的运行环境。

每个服务器上都装Linux和oracle数据库软件,
oracle数据库建在存储上,有两份数据分别放在两个存储上,
并且两个存储上的数据完全一样。

对服务器本地来讲只是安装有操作系统和oracle数据库软件,如果坏了可以重装。

整个系统里面非常重要的数据的载体和存储介质是存储,
oracle数据库数据文件放在存储上。

存储最主要的作用是存储数据,
数据都存储在硬盘上,存储里面放的是一堆硬盘。

对服务器来讲一般本地只有两块硬盘,硬盘空间比较小,真正的空间需求在存储上。

我们这里的例子:
有两个服务器装有两个linux、两个数据库软件,
还有两个光纤存储交换机,还有好多线和两个存储。

特点:
1、处处体现了冗余,一个坏了还有另一个,防止出现单点故障。
冗余又叫HA高可用。
在计算机系统我们设计时要防止出现单点故障,要采取冗余,处处冗余。
2、我们把冗余的余字去掉,我们在冗余的同时,让两个服务器同时工作,
一个坏了,另外的一个还可以继续工作。
这样就达到了LB(load balance)负载均衡。

一个oracle软件在两个服务器上运行,
对用户来讲,我们的性能提高了一倍。

我们的环境可以实现HA和LB。

oracle的硬件环境就是这个环境,用的很多基本是这种环境。

另一种环境:
两个服务器,一个光纤存储交换机,一个存储。
存在一个问题,如果出现单点故障 交换机或存储坏了 整个系统都不能使用。

还有一种环境:
两个服务器两个交换机和一个存储
交换机排除了单点故障,存储还会出现单点故障。
我们尽量采用第一种结构,但第二种结构实际使用也比较多。

前面主要讲了oralce生产环境里的结构。

二)存储
存储是用来存储数据的。

存储就是一个大铁柜子里面搁着一堆硬盘,
根据存储的容量和你的需要,可以配非常多的硬盘。
一个壳子不够可以再加一些壳子,壳子里面再放硬盘。
这样容量空间就会很大。
这是存储最简单的一个比喻。

观察实际存储实体,
从存储的前面看有整齐排列的很多硬盘,
如一排十四块硬盘,一共两排,就有共28块硬盘。

一块硬盘300G,
总共就是300G*28=8400G 约为8.2T
这样总体是一个8个T的存储。

对一般的数据8000G就够了。
这个存储算一个中小型的存储。

小型的存储放的硬盘较少。

为了配合oralce的学习,我们有必要将存储的大概的知识讲一下。

存储的后面,可以看到控制器、电源,
存储一般是双控双电,存储本身也是有冗余的。

控制器是存储的心脏,电源是供电的。

存储把控制器拿走就不值钱了,
存储很贵,主要贵在控制器上。

控制器从外面可以看到有很多接口,
用来连接光纤存储交换机,交换机再连服务器。

服务器通过HBA卡、光纤线连到光纤存储交换机上,
光纤存储交换机通过光纤线连到控制器的口上,叫LC口。
服务器就是通过这个结构连到存储上的。

光纤线有很多种,
一头插到存储的控制器上,一头插到存储交换机上。中间的线可以很长。

有的光纤线口很大有的口很小。
LC型连接头用的较多,MTRJ也较多。
SC型连接头现在用的较少,因为头较大,占空间。

光纤线有单模多模之分,
单模传输距离远,多模传输距离近。
二三百米以内用多模,单模几公里都可以。
但是传输速度是一样的。

光纤传输速度主要取决于HBA卡的传输速度。
光纤本身没有传输速度,取决于卡。

存储有控制器和电源,
控制器有光纤口,
HBA卡,有光纤口。

存储是一个大铁柜子,后面有控制器还有电源,前面放了很多硬盘。
硬盘放数据,控制器对整个存储控制,电源供电。

存储上有缓存,有电池,还有CPU。
存储上还有光纤接口、管理接口,都在控制器上。

东西很多,有的用得着,有的用不着。
实际使用中,根据技术的不同和高低,不是每样东西都可以用的。

存储特点:
1、它把非常多的硬盘集合起来,形成一个大硬盘。
如一个硬盘300G,一共100块硬盘,
存储就可以把这些硬盘整合起来,然后让我们使用。
提供了空间的聚集。

2、加快从存储的硬盘上读写数据的速度。
其中用了缓存技术可以加快读写速度。

3、存储支持RAID技术。
控制器把这堆硬盘进行了分组和整合。
做成不同的样子,搞成不同的访问方式。

三)RAID
RAID就是控制器把很多硬盘进行集合,通过一些技术来实现对硬盘访问速度的提高。

raid在几个方面有特色。
1、提供冗余
2、提高访问速度

raid技术常用的有:
raid0
raid1
raid5
raid6

raid10
raid01

raid0 raid1 raid5这三种技术现在用的越来越少。
直接使用越来越少,新的技术里面基本不用它们。

但从理论上讲,应该是越基础的技术其实用性和耐用性是越好的。

现在raid6有用的,
用的最多的是raid10和raid01。

1)raid0
下面假设阵列中有两块硬盘。

raid首先把包含的所有硬盘空间上划出一个个的条带,
条带在每块硬盘上有一块,
这些块空间大小上都是一样的。

要把一个文件存到raid0的磁盘上,
它把文件切成很多块,按顺序放到磁盘阵列的块中,
这样文件被均匀的放在两块硬盘上。

raid0的好处
每个硬盘都有自己的一套硬盘系统,如硬盘控制器,
一个文件在往raid0磁盘上写时,可以实现并行写。
读的时候也可以实现并行读。
raid0可以提高我们将数据写入磁盘和读取的速度,就是提高我们对硬盘的访问速度。

raid0的坏处
同一文件分布在两块硬盘上,硬盘越多坏一块硬盘的概率就越大。
只有一块硬盘损坏几率和有一百块硬盘其中一块硬盘损坏的几率显然后者大。
raid0任意一块硬盘坏了,整个raid0中存放的文件会全部损坏。
raid0在读写性能方面表现的非常优秀,
但是有个非常致命的地方,没有任何冗余,
数据更容易损坏,而且一损坏是全部损坏。
raid0只适合对读写速度要求很高,但是对可靠性安全性几乎没有要求的工作环境。
在这种环境中我们可以用raid0,只提高速度没有冗余。
raid0最少两块硬盘,三块四块五块都可以,建议不要超过六块。

2)raid1
也叫镜像。
假设阵列中有两块硬盘。
一个文件,往raid1上写的时候,
写入一块硬盘的一块数据时,同时往另外一块硬盘写入完全相同的一块数据。
每向一块硬盘写数据,另一块硬盘都写入镜像。

这时提供了冗余。一块硬盘坏了,还有一块硬盘没有损坏。

raid1特点:
1、提供冗余
2、写性能稍微会差一些,因为同一数据同时向两块硬盘写,至少在写性能上没有提高。
一个文件两个硬盘都有,在读一个文件时可以从两个硬盘上同时读。
一个硬盘读一部分,另一个硬盘可以读出另外的一部分。
这样在读性能上可以有所提高。

raid1提供冗余,但是它浪费了50%的空间,因为是两块硬盘镜像。raid0没有浪费空间。
raid1至少两块硬盘,一般都是偶数。

raid1应用的场合,服务器本地两块硬盘,99%的环境两块硬盘做成raid1。

3)raid5
写数据有特色

如raid5有四块硬盘,每个条带就有四个数据块。
一个文件要往里写,分块写入,
同一条带的其中三块写入文件的三块数据,
另一块不写入文件的数据,而是另三块数据计算出来的一块数据。
这种数据的存放的特色,四块数据中任意一块数据坏了,都能够通过其它三块数据计算出来。
我们叫奇偶校验。

raid5特点:
1、有冗余。最多可以坏一块硬盘,但浪费1/n空间。
浪费空间:raid1为50%,raid0没有浪费,raid5浪费1/n空间。

raid5有冗余可以坏一块,如果坏两块整个阵列也坏了。

2、读性能很高,多块硬盘可以同时读,
读取时不用计算,而且可同时读n-1块的数据。
写性能比较差,每次写都是对条带中的所有块同时写,
而其中一块需要经过计算后才能得到,所以写性能较差。

raid5和raid0相似,但是raid5有冗余,冗余浪费空间并造成写性能差一些。
raid5是以前经常采用的技术。现在都不愿意使用它了。

4)raid6
raid6也使用的奇偶校验,也实现了冗余,但有两块冗余数据。
raid6比raid5改进的地方可以同时坏两块硬盘。
它要同时写两份奇偶校验数据,它的写性能比raid5还要差。
虽然可以同时坏两块硬盘,但此技术并不是非常好,因为读性能还可以,写性能确实比较差。
同时可以坏两块硬盘是一个好处。

raid5只能坏一块硬盘。
如raid5坏了一块硬盘,读数据时,
其中坏盘的数据要把其它三块盘同条带的数据读出并且计算才能得到,造成读性能急剧下降。
raid5就有这样一个特点和风险,
如果坏了一块硬盘,整体raid5的性能会急剧下降,几乎无法使用。

raid6 好一些,它坏一块硬盘不很明显,坏两块和raid5坏硬盘一样。
raid6目前有的在用,老师并不建议使用。

5)raid01和raid10
老师讲课时间2012年,最流行的技术是raid01和raid10。

假设使用四块硬盘。

两个硬盘做raid0,两个raid0再做raid1,四块硬盘就是raid01。

它使用了raid0,读写性能都很高。
两个raid0合起来用了raid1,好处提高了读性能的同时提供了冗余。
整体提高了读性能,有raid0写性能也不差。

冗余是50%,冗余度也很好。
有个问题空间浪费比较严重,浪费了50%。

raid10和raid01性能差不多。
两个硬盘做raid1,两个raid1再做raid0。

raid01和raid10在oracle数据库里面,我们都是建议使用的,都不错。
虽然有人进行比较,但老师通过自己实际工程中做的项目来讲01和10性能都可以。
对oracle的实际工作环境raid5,raid6,raid0,raid1在存储上还是建议少使用。

5)raid技术心得
所有raid技术都对读都有提高,对写提高只有raid0做到了。

发现了一个和物理上的能量守恒类似的情况:
计算机作为一个整体,其技术在提高了一方面的性能时,都会消耗另外一方面的资源。
如磁盘阵列,所有技术类别提高性能都需要增加控制器和增加硬盘。
raid0提高了写入速度,但会降低安全性,
只要一块硬盘损毁,阵列就坏了,而且是全部数据损坏。
raid1,提高安全性时,会消耗成倍的存储硬盘。
raid5、raid6提高了数据安全性,
就会同时消耗掉cpu的一部分处理性能,用来运算。它的奇偶校验需要cpu处理。

四)
今天讲了存储、raid、HBA卡和光纤的一些技术。
讲的比较粗略一些,主要为了oracle课的下一步的一些进展。

补充技术:
oralce服务器典型结构中,一个服务器访问一个硬盘有两条路径。
一个服务器接两个交换机两条路径,然后这两条路径分别有一条路径接一个存储
这样一个服务器访问一个存储一共有两条路径
这两条路径有冗余的作用,一条路径坏了可以走另一条。

通过某些软件的设置,它不仅有冗余的作用,还有负载均衡的作用,
一个服务器从一个存储取数据时,数据可以分成两份,分别走两条路径。
这两条链路不仅仅实现了HA,也实现了负载均衡。
这个技术叫multi path。

其实我们做的时候,在服务器上通过一个软件将这两条链路绑成一条链路。
也就是服务器看到的只有一条链路过来,实际上是软件将链路合起来了。
这叫MPIO技术,multi path IO技术
UNIX和LINUX中这是一个非常重要的技术。多路径技术,非常重要。


2016年6月20日
                                         韵筝