Raid相关操作与注意事项

Raid5

SATA盘组成的Raid5,在保护数据的前提下达到高性能:

  1. RAID要有BBU

  2. Current Cache Policy采用WriteBack,No Write Cache if Bad BBU(没有BBU要改为WriteThrough),write policy分为两种:

    • WriteBack

      WriteBack有更好的性能,因为数据会写入controller Cache,不需要等待写入Hard driver,所以在没有BBU的情况下很容易引起数据丢失。

    • WriteThrough

      WriteThrough不使用Raid的Cache,性能要比WriteBack低很多

  3. Disk Cache Policy即SATA盘自己的Cache策略,与Raid无关, 最好要设为disable(因为异常掉电可能会很惨)

UPS:不间断电源,保障计算机系统在停电之后继续工作一段时间

BBU:在供电出现问题的情况下,为controller Cache提供一段时间的供电,在BBU电量耗尽之前恢复供电,可保证数据完整。

BBU是由锂离子电池和电子控制电路组成,电池的寿命取决于其老化程度,无论是否充放电已经充放电的多少,锂离子电池的容量都会减少。为了记录电池的放电曲线,延长电池的寿命,默认会启用自动校准模式(AutoLearn Mode),在Learn Cycle 内,Raid卡控制器不会使用BBU,这个过程可能持续12小时,这个过程中会禁用Write back,直到其完成校准。

这个Auto-Learn Mode,一般30天执行一次,我们的BBU 28天之星一次。一般不要关闭,因为这可以有效地延长寿命。 如果不做这个校准,寿命会从2年下降到8个月。

创建Raid

首先通过PDList查看需要组raid的盘Enclosure Device ID与Slot Number:

/opt/MegaRAID/MegaCli/MegaCli64 PDList -A0

然后组建raid

/opt/MegaRAID/MegaCli/MegaCli64 CfgLDAdd -r5 [E:S1,E:S2,E:S3,E:S4] -strpsz128 -A0
# r5 raid5
# E:S Enclosure Device ID:Slot Number
# strpsz128 raid条带

删除Raid

首先通过LDInfo看要删除Virtual Drive值:

/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aAll

然后删除逻辑盘

/opt/MegaRAID/MegaCli/MegaCli64 -CfgLdDel -Ln -A0
# n 要删除的逻辑磁盘的值

清除Raid下面的foreign key,不过不清除,后面无法建Raid:

/opt/MegaRAID/MegaCli/MegaCli64 -CfgForeign -Scan -aALL
/opt/MegaRAID/MegaCli/MegaCli64 -CfgForeign -Clear -aALL

Disk与BBU相关设置

查看是否存在BBU

/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -aAll

设置raid Current Cache Policy

# Write Cache OK if Bad BBU(除非特殊情况,否则丢数据可能性变大)
/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp CachedBadBBU -Lall -aALL

设置为No Write Cache if Bad BBU,即BBU损坏或learning时变为Write Through:

/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -NoCachedBadBBU -Immediate -Lall -aAll

BBU每个月会发起learning,也可以手动发起:

/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -BbuLearn -aALL

Disk Cache

上面说了Disk Cache Policy最好关掉:

关闭Disk Cache

/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -DisDskCache -Immediate -Lall -aAll

打开Disk Cache

/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -EnDskCache -Immediate -Lall -aAll

检查Raid上的磁盘

先找出有明显错误的,看media error和other error:

/opt/MegaRAID/MegaCli/MegaCli64 -pdlist -a0|grep -Ei "media error |other error"

光凭media error和other error是无法确定盘是否高危的,还需要找到Device Id,使用smartctl工具进去看磁盘信息:

smartctl -a -d megaraid, /dev/sdd
# 后面跟megaraid,【Device Id】 /dev/sdd【在当前raid卡上的盘符】 # 以下几条为高危盘的参考
# 5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0
# 187 Reported_Uncorrect
# 188 Command_Timeout【这个有时候会特别大 有一个换算 一般没问题】
# 197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0
# 198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 0

如果以上指标一个或多个数值特别大,证明该盘为高危盘。

快速找出危险盘:

/opt/MegaRAID/MegaCli/MegaCli64 -LDPDinfo -A0 |grep "Device Id" |awk '{print $3}' |xargs -I {} smartctl -a -d megaraid,{} /dev/sdd |grep -Ei "Reallocated_Sector_Ct|^187|^188|^197"

关机换Raid卡

先查看BBU和集群信息:

/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -A0 #总信息
/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuStatus -aALL
/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuCapacityInfo -A0

状态应该为Battery State: Optimal是正常

然后更改raid卡策略为WriteThrough:

/opt/MegaRAID/MegaCli/MegaCli64 LDSetProp WT -Lall -Aall(WriteThrough)
/opt/MegaRAID/MegaCli/MegaCli64 LDSetProp WB -Lall -Aall(WriteBack)

先sync,目的是将操作系统文件系统的缓存刷到硬盘:

sync

再将raid卡缓存上的数据刷到硬盘:

/opt/MegaRAID/MegaCli/MegaCli64 -AdpCacheFlush -Aall

raid卡时间

默认raid卡时间与我们系统时间相差八小时,即:raid卡时间+八小时=系统时间

查看raid卡时间

/opt/MegaRAID/MegaCli/MegaCli64 adpgettime -a0

设置raid卡时间

/opt/MegaRAID/MegaCli/MegaCli64 AdpSetTime 20200510 18:18:00 -a0

其他

换盘后查看盘的rebuild进度

/opt/MegaRAID/MegaCli/MegaCli64 -PDRbld -showprog -physDrv [E:S] -a0
/opt/MegaRAID/MegaCli/MegaCli64 -pdrbld -progdsply -physdrv[E:S] -aALL

修改raid盘的rebuild速度,默认为30

/opt/MegaRAID/MegaCli/MegaCli64 -AdpSetProp RebuildRate -30 -a0

获取raid卡日志

/opt/MegaRAID/MegaCli/MegaCli64 -AdpEventLog -GetEvents -f raid.envent.log -a0

查看逻辑盘信息

/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aAll

图上Disk Cache Policy是Disabled,如果是Disk's Default则默认如下:

  • For virtual disks containing SATA disks , Enabled
  • For virtual disks containing SAS disks , Disabled

指定磁盘灯闪烁与关闭

# 闪烁
/opt/MegaRAID/MegaCli/MegaCli64 -PdLocate -start -physdrv [E:S] -aALL
# 取消闪烁
/opt/MegaRAID/MegaCli/MegaCli64 -PdLocate -stop -physdrv [E:S] -aALL

raid卡恢复出厂设置

/opt/MegaRAID/MegaCli/MegaCli64 -AdpFacDefSet -a0

Raid相关操作与注意事项记录的更多相关文章

  1. MySQL之记录相关操作

    一 介绍 MySQL数据操作: DML ======================================================== 在MySQL管理软件中,可以通过SQL语句中的 ...

  2. 记录工作中linux相关操作

    在项目部署之后,查看日志能查看部署结果是否正确部署. 最开始查看日志我会使用cat service.log tail -f service.log vim service.log 打开日志之后 /+查 ...

  3. MySQL 库、表、记录、相关操作(3)

    MySQL 库.表.记录.相关操作(3) 单表查询 """ 增: insert [into] [数据库名.]表名[(字段1[, ..., 字段n])] values (数 ...

  4. MySQL 库、表、记录、相关操作(2)

    库.表.记录.相关操作(2) 字段操作 create table tf1( id int primary key auto_increment, x int, y int ); # 修改 alter ...

  5. MySQL 库、表、记录、相关操作(1)

    库.表.记录.相关操作(1) 数据库配置 # 通过配置文件统一配置的目的:统一管理 服务端(mysqld) .客户端(client) # 配置了 mysqld(服务端) 的编码为utf8,那么再创建的 ...

  6. python、第四篇:记录相关操作

    一 介绍 MySQL数据操作: DML ======================================================== 在MySQL管理软件中,可以通过SQL语句中的 ...

  7. MySQL数据库---记录相关操作

    序 表中记录的相关操作一共四种:插入,更新,删除.查询.其中使用最多,也是最难的就是查询. 记录的插入 1. 插入完整数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3… ...

  8. 理解CSV文件以及ABAP中的相关操作

    在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separat ...

  9. Liunx下的有关于tomcat的相关操作 && Liunx 常用指令

    先记录以下liunx下的有关于tomcat的相关操作 查看tomcat进程: ps-ef|grep java (回车) 停止tomcat进程: kill -9 PID (进程号如77447) (回车) ...

随机推荐

  1. HZOJ 太阳神

    所以我刚学反演还没学反演就要做这么一道神仙题…… 首先大于n不好求,补集转化. $ans=n*n-\sum \limits _{i=1}^{n} \sum \limits _{j=1}^{n} \le ...

  2. AIDL基本用法

    1. AIDL有什么用?用TA到目的是什么? 2. 怎么用AIDL? 1. AIDL有什么用? 1.1. 为了提高代码执行速度,将部分逻辑封入C/C++代码中  1.2. 为了调用这部分代码,使用JN ...

  3. laravel 随笔

    laravel5.5 1.laravel 查询数据库默认返回对象,如何改成 返回值为数组 答:在  App\Providers\EventServiceProvider 文件中 第一步: use Il ...

  4. 洛谷P2504 [HAOI2006]聪明的猴子

    #include<bits/stdc++.h> using namespace std; ; ; int n,m,k,ans; double Max; int monkey[maxn]; ...

  5. Oracle中组合索引的使用详解(转)

    在Oracle中可以创建组合索引,即同时包含两个或两个以上列的索引.在组合索引的使用方面,Oracle有以下特点: 1. 当使用基于规则的优化器(RBO)时,只有当组合索引的前导列出现在SQL语句的w ...

  6. day2_python之文件操作

    一.文件常用操作 #1. 打开文件的模式有(默认为文本模式): r ,只读模式[默认模式,文件必须存在,不存在则抛出异常] w,只写模式[不可读:不存在则创建:存在则清空内容] a, 之追加写模式[不 ...

  7. @noi.ac - 507@ 二分图最大权匹配

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 有一天你学了一个能解决二分图最大权匹配的算法,你决定将这个算法应 ...

  8. 系统学习前端之FormData详解

    FormData 1. 概述 FormData类型其实是在XMLHttpRequest 2级定义的,它是为序列化表以及创建与表单格式相同的数据(当然是用于XHR传输)提供便利. 2. 构造函数 创建一 ...

  9. Java JDBC学习实战(三): 事务管理

    一. 数据库的事务特性 事务是一步或多步组成操作序列组成的逻辑执行单元,这个序列要么全部执行,要么则全部放弃执行. 事务的四个特性:原子性(Atomicity).一致性(Consistency).隔离 ...

  10. while循环计算1-100和,1-100内偶数/奇数/被整除的数的和

    文章地址 https://www.cnblogs.com/sandraryan/ <!DOCTYPE html> <html lang="en"> < ...