分类目录归档:存储系列

raid5为什么风险很大?

最近遇见两个客户的服务器和存储分别出现raid5同时坏两块硬盘的情况,所以记录如下。
很多人遇到过服务器RAID5挂掉,往往掉一个盘后,第二个盘也立刻挂掉。 大家都知道RAID5 一次允许一个盘缺失, RAID 5也是以数据的校验位来保证数据的安全,但它不是以单独硬盘来存放数据的校验位,而是将数据段的校验位交互存放于各个硬盘上。这样,任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据。硬盘的利用率为n-1。 如果挂掉两个盘,数据就玩完了。 理论上两个硬盘同时失效的概率是很低的,但为什么会这样呢?
从数学角度说,每个磁盘的平均无故障时间 (MTBF) 大约为 50 万至 150 万小时(也就是每 50~150 年发生一次硬盘损坏)。实际往往不能达到这种理想的情况,在大多数散热和机械条件下,都会造成硬盘正常工作的时间大幅减少。考虑到每个磁盘的寿命不同,阵列中的任何磁盘都可能出现问题,从统计学角度说,阵列中 N 个磁盘发生故障的机率比单个磁盘发生故障的机率要大 N 倍。结合上述因素,如果阵列中的磁盘数量合理,且这些磁盘的平均无故障时间 (MTBF) 较短,那么在磁盘阵列的预期使用寿命过程中,就很有可能发生磁盘故障(比方说每几个月或每隔几年就会发生一次故障)。 继续阅读

双网卡绑定模式

服务器为了提供网络高可靠性,可以通过双网卡绑定来实现,linux下支持7中模式的双网卡绑定:

第一种:bond0:round robin(交换机端需要配置聚合
特点:(1)所有链路处于负载均衡状态,轮询方式往每条链路发送报文,基于per packet方式发送。服务上ping 一个相同地址:1.1.1.1 双网卡的两个网卡都有流量发出。负载到两条链路上,说明是基于per packet方式 ,进行轮询发送。(2)这模式的特点增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。 继续阅读

多网卡绑定技术

在存储系统中为了提高后端设备的吞吐量,往往需要采用多网卡绑定技术。例如,后端存储最大能够提供300MB/s的吞吐量,因此需要采用3块1Gps的网卡并发传输才可以达到峰值性能。那么,从研发的角度来看如何实现多网卡绑定呢?这里对提高吞吐量用途的多网卡绑定技术进行深入分析。 继续阅读

SMART属性的一些参数意义

我们一客户的存储上的S.M.A.R.T属性

                                S.M.A.R.T Attributes
Status: S.M.A.R.T OK.
ID  Name                           Threshold  Value      Worst      Status
-------------------------------------------------------------------------------
1   Raw Read Error Rate            51         194        194        OK
3   Spin Up Time                   21         233        226        OK
4   Start Stop Count               0          100        100        OK
5   Reallocated Sector Ct          140        192        192        OK
7   Seek Error Rate                0          200        200        OK
9   Power On Hours                 0          87         87         OK
A   Spin Retry Count               0          100        253        OK
B   Calibration Retry Count        0          100        253        OK
C   Power Cycle Count              0          100        100        OK
C0  Power-Off Retract Count        0          200        200        OK
C1  Emergency Retract Cycle Ct     0          171        171        OK
C2  Temperature Celsius            0          119        101        OK
C4  Reallocated Event Count        0          146        146        OK
C5  Current Pending Sector         0          198        198        OK
C6  Offline Uncorrectable          0          200        199        OK
C7  UDMA CRC Error Count           0          200        200        OK
C8  Multi Zone Error Rate          0          1          1          OK

这些参数是什么意思呢,下面就是我们整理的一些常见参数意义。
Raw Read Error Rate
这个属性的值取决于读取错误次数,磁盘表面状态和当从磁盘表面读取数据硬件发生读取错误时的比例。
简而言之:底层硬件读取故障率,值高暗示盘体、磁头有问题 继续阅读

给火箭2340阵列追加热备磁盘

将1/1的盘加入阵列2里面,作为spare disk
HighPoint CLI>create spare disks=1/1 name=2

查看设备状态

HighPoint CLI>query devices
ID Capacity MaxFree Flag Status ModelNumber
——————————————————————————-
1/1 2000.31 2000.31 SINGLE SPARE WDC WD2003FYYS-02W0B0
1/3 1000.12 0 RAID NORMAL WDC WD1003FBYX-01Y7B1
1/4 1000.12 0 RAID NORMAL WDC WD1003FBYX-01Y7B1
1/5 1000.12 0 RAID NORMAL WDC WD1003FBYX-01Y7B1
1/6 1000.12 0 RAID NORMAL WDC WD1003FBYX-01Y7B1
1/9 2000.31 0 RAID NORMAL WDC WD2002FYPS-02W3B0
1/10 2000.31 0 RAID NORMAL WDC WD2003FYYS-02W0B0
1/11 2000.31 0 RAID NORMAL WDC WD2003FYYS-02W0B1
1/12 2000.31 0 RAID NORMAL WDC WD2003FYYS-02W0B0

已经为spare状态,成功!下面是create的一些语法
HighPoint CLI>help create
Create Command
This command allows you to create a new RAID array or add a spare disk.
Syntax:
create {RAID0|RAID1|RAID3|RAID5|RAID6|RAID10|RAID50|JBOD|spare} [create-options]

create-option:

disks=1/2,1/3… or disks=*
Specify the disks used to create array.
name=array name
Specify the name of the array which will be created.
src=source array ID
If src argument is specified, OCE/ORLM will be started.
cp=WB, WT or NONE
Cache Policy option (WB: write back, WT: write through).
init={foreground|background|keepdata|quickinit}
Specifies array initialization option.
foreground:
Zero out all data on the array. The array is not
accessible by the operating system until initialization is completed.
background:
Allow instant access to the array. Parity blocks
will be generated in background.
keepdata:
Setup array information blocks on the drives only.
Use this option for array recovery.
quickinit:
Setup array information blocks and zero out MBR data on the array.
capacity=array capacity
Specify the capacity (xxM,xxG) of the target array.
matrix=n*m
When create RAID50 to specify the matrix options.
n : number of subarray’s disk, m: number of subarray.
For example: When create a RAID50 the option matrix
can be matrix=3*2. That means 2 RAID5s each with 3 disks to form a RAID50
bs=size
Specify the block size (16k,32k,64k,128k,256k,512k,1024k)
sector=size
Specify the sector size (512B,1k,2k,4k)

 

下列检测磁盘状态脚本

hptraidconf -u RAID -p hpt query devices 1/1
hptraidconf -u RAID -p hpt query devices 1/3
hptraidconf -u RAID -p hpt query devices 1/4
hptraidconf -u RAID -p hpt query devices 1/5
hptraidconf -u RAID -p hpt query devices 1/6
hptraidconf -u RAID -p hpt query devices 1/9
hptraidconf -u RAID -p hpt query devices 1/10
hptraidconf -u RAID -p hpt query devices 1/11
hptraidconf -u RAID -p hpt query devices 1/12

定义定期发送邮件检测!

iozone进行IO测试

iozone概况
iozone是一个文件系统的benchmark工具,可以测试不同的操作系统中文件系统的读写性能。
可以测试 Read, write, re-read,re-write, read backwards, read strided, fread, fwrite, random read, pread, mmap, aio_read, aio_write 等等不同的模式下的硬盘的性能。
测试的时候请注意,设置的测试文件的大小一定要大过你的内存(最佳为内存的两倍大小),不然linux会给你的读写的内容进行缓存。会使数值非常不真实。 继续阅读

软RAID 5建立过程

1:Raid定义
  RAID,全称Redundant Array of Inexpensive Disks,中文名为廉价磁盘冗余阵列.RAID可分为软RAID和硬RAID,软RAID是通过软件实现多块硬盘冗余的.而硬RAID是一般通过RAID卡来实现RAID的.前者配置简单,管理也比较灵活.对于中小企业来说不失为一最佳选择.硬RAID往往花费比较贵.不过,在性能方面具有一定优势. 继续阅读

ext3 vs ext4

Linux kernel 自 2.6.28 开始正式支持新的文件系统 Ext4。 Ext4 是 Ext3 的改进版,修改了 Ext3 中部分重要的数据结构,而不仅仅像 Ext3 对 Ext2 那样,只是增加了一个日志功能而已。Ext4 可以提供更佳的性能和可靠性,还有更为丰富的功能: 继续阅读

一次linux服务器性能优化过程

前段时间客户一服务器出现了一个奇怪的现象,一台配置不错的服务器,64G内存,2颗十二核CPU,连着一台存储,系统负载不规律的每过一段时间就非常高,高的时候维持在四五十,而这个时候呢,通过各种命令(top、vmstat、iostat、ifstat、sar)查看,各项资源都不是一般的闲,一时间摸不着头脑。 继续阅读

温故而知新-raid级别

RAID是Redundant Array of Inexpensive Disk的缩写,意为廉价冗余磁盘阵列,是磁盘阵列在技术上实现的理论标准,其目的在于减少错误、提高存储系统的性能与可靠度。常用的等级有0、1、3、5级等。

1.什么是RAID Level 0?
RAID Level 0是Data Striping(数据分割)技术的实现,它将所有硬盘构成一个磁盘阵列,可以同时对多个硬盘做读写动作,但是不具备备份及容错能力,它价格便宜,硬盘使 用效率最佳,但是可靠度是最差的。以一个由两个硬盘组成的RAID Level 0磁盘阵列为例,它把数据的第1和2位写入第一个硬盘,第三和第四位写入第二个硬盘……以此类推,所以叫“数据分割”,因为各盘数据的写入动作是同时做 的,所以它的存储速度可以比单个硬盘快几倍。但是,这样一来,万一磁盘阵列上有一个硬盘坏了,由于它把数据拆开分别存到了不同的硬盘上,坏了一颗等于中断 了数据的完整性,如果没有整个磁盘阵列的备份磁带的话,所有的数据是无法挽回的。因此,尽管它的效率很高,但是很少有人冒着数据丢失的危险采用这项技术。

2.什么是RAID Level 1?
RAID Level 1使用的是Disk Mirror(磁盘映射)技术,就是把一个硬盘的内容同步备份复制到另一个硬盘里,所以具备了备份和容错能力,这样做的使用效率不高,但是可靠性高。

3.什么是RAID Level 3?
RAID Level 3采用Byte-interleaving(数据交错存储)技术,硬盘在SCSI控制卡下同时动作,并将用于奇偶校验的数据储存到特定硬盘机中,它具备了容错能力,硬盘的使用效率是安装几个就减掉一个,它的可靠度较佳。

4.什么是RAID Level 5?
RAID Level 5使用的是Disk Striping(硬盘分割)技术,与Level 3的不同之处在于它把奇偶校验数据存放到各个硬盘里,各个硬盘在SCSI控制卡的控制下平行动作,有容错能力,跟Level 3一样,它的使用效率也是安装几个再减掉一个。

5、什么是RAID 0+1﹝RAID 10﹞

RAID 0+1/RAID 10,综合了RAID 0 和 RAID 1的优点,适合用在速度 需求高,又要完全容错,当然经费也很多的应用。RAID 0和RAID 1的原理很简单,合起来之后还是很简单,我们不打算详细介绍,倒是要谈谈, RAID 0+1到底应该是RAID 0 over RAID 1,还是RAID 1 over RAID 0,也就是说,是把多个RAID 1 做成 RAID 0,还是把多个RAID 0 做成RAID 1?

RAID 0 over RAID 1

假设我们有四台磁盘驱动器,每两台磁盘驱动器先做成RAID 1,再把两个RAID 1做成RAID 0,这就是RAID 0 over RAID 1:

(RAID 1) A = Drive A1 + Drive A2 (Mirrored)
(RAID 1) B = Drive B1 + Drive B2 (Mirrored)
RAID 0 = (RAID 1) A + (RAID 1) B (Striped)

RAID 1 over RAID 0

假设我们有六台磁盘驱动器,每两台磁盘驱动器先做成RAID 0,再把两个RAID 0做成RAID 1,这就是RAID 0 over RAID 1:

(RAID 0) A = Drive A1 + Drive A2 (Striped)
(RAID 0) B = Drive B1 + Drive B2 (Striped)
RAID 1 = (RAID 1) A + (RAID 1) B (Mirrored)

在这种架构之下,如果 (RAID 0) A有一台磁盘驱动器故障,(RAID 0) A就算毁了,当然RAID 1仍然可以正常工作;如果这时  (RAID 0) B也有一台磁盘驱动器故障,(RAID 0) B也就算毁了,此时RAID 1的两磁盘驱动器都算故障,整个RAID 1资料就毁了。

因此,RAID 0 OVER RAID 1应该比RAID 1 OVER RAID 0具备比较高的可靠度。所以我们建议,当采用RAID 0+1/RAID 10架构时,要先作RAID 1,再把数个RAID 1做成RAID 0。

RAID级别的优点和缺点 :

RAID 0 存取速度最快 没有容错
RAID 1 完全容错 成本高
RAID 3 写入性能最好 没有多任务功能
RAID 4 具备多任务及容错功能 Parity 磁盘驱动器造成性能瓶颈
RAID 5 具备多任务及容错功能 写入时有overhead
RAID 0+1/RAID 10 速度快、完全容错 成本高