Linux学习笔记之 RAID介绍,及centos6上软RAID的实现

RAID:Redundant Arrays of Inexpensive Disk 廉价冗余磁盘阵列,通过对多块硬盘按不同的方式组织起来,来提高IO能力,或提高耐用性等。RAID可分为软RAID和硬RAID,软RAID通过软件实现,硬RAID使用专业的RAID卡和磁盘组成。

RAID级别:多块磁盘组织在一起的工作方式有所不同。常见的RAID级别有RAID0,RAID1,RAID2,RAID3,RAID4,RAID5,RAID6,RAID10,RAID01。



RAID0:striping 条带化数据,存储到不多个硬盘

读写性能均有提升

可用空间:N*磁盘空间(受最小的磁盘空间的限制)

无容错能力,任何一块设备算坏,都会导致数据丢失

最少磁盘数:2



RAID1:镜像RAID

读性能提升、写性能略有下降;

可用空间:容量较小的磁盘的容量

有冗余能力,单块磁盘损坏,不会导致数据丢失

最少磁盘数:2



RAID4:用一块磁盘专门存储校验码

读,写性能均有提升

可用空间:(N-1)*最小磁盘的容量

有容错能力:可以坏1块磁盘

最少磁盘数:3



RAID5:

读,写性能均有提升

可用空间:(N-1)*最小磁盘的容量

有容错能力:可以坏1块磁盘

最少磁盘数:3



RAID6:交验信息存储两份:会导致更多磁盘空间的浪费

读、写性能提升

可用空间:(N-2)*最小磁盘的容量

有容错能力:最多可有2块磁盘损坏

最少磁盘数:4

 



RAID10:

读写系能均有提升

可用磁盘空间:50%

有容错能力:没组最多坏一块盘

最少磁盘数:4



其它:

JBOD:Just a bunch of disks.

功能:将多块磁盘的空间合并一个大的连续空间使用;

可用空间:sum(S1,S2,...)



CentOS 6上的软件RAID的实现

结合内核中的md(multi devices)

mdadm:模式化的工具

命令的语法格式:mdadm [mode] <raiddevice> [options] <component-devices>

支持的RAID级别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10;

模式:

创建:-C

装配: -A

监控: -F

管理:-f, -r, -a

<raiddevice>: /dev/md#

<component-devices>: 任意块设备

-C: 创建模式

-n #: 使用#个块设备来创建此RAID;

-l #:指明要创建的RAID的级别;

-a {yes|no}:自动创建目标RAID设备的设备文件;

-c CHUNK_SIZE: 指明块大小;

-x #: 指明空闲盘的个数;

练习:创建一个10G可用空间的RAID5,留一个空闲盘做热备



第一步:使用fdisk命令划分4个5G的分区,3个组成RAID5,另外一个做位空闲盘

[email protected] ~]# fdisk /dev/sdb 

WARNING: DOS-compatible mode is deprecated. It‘s strongly recommended to

switch off the mode (command ‘c‘) and change display units to

sectors (command ‘u‘).

Command (m for help): n    #创建新分区

Command action

e   extended

p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-15665, default 1):

Using default value 1

Last cylinder, +cylinders or +size{K,M,G} (1-15665, default 15665): +5G

...

...

重复此上步骤,直至创建好4个所需的分区:同时需要注意将分区id改为fd格式,可以参照如下步骤使用fdisk命令来修改

[[email protected] ~]# fdisk /dev/sdb

WARNING: DOS-compatible mode is deprecated. It‘s strongly recommended to

switch off the mode (command ‘c‘) and change display units to

sectors (command ‘u‘).

Command (m for help): t    #x修改分区id

Partition number (1-5): 1

Hex code (type L to list codes): fd     #选择RARID所需的分区id

Command (m for help): w    #保存修改

The partition table has been altered!

第二步:格式化分区


所有的分区都已经创建好,效果如下

[[email protected] ~]# fdisk -l /dev/sdb    #查看分区情况

Disk /dev/sdb: 128.8 GB, 128849018880 bytes

255 heads, 63 sectors/track, 15665 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x067824c0

Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1         654     5253223+  fd  Linux raid autodetect

/dev/sdb2             655        1308     5253255   fd  Linux raid autodetect

/dev/sdb3            1309        1962     5253255   fd  Linux raid autodetect

/dev/sdb4            1963       15665   110069347+   5  Extended

/dev/sdb5            1963        2616     5253223+  fd  Linux raid autodetect

[[email protected] ~]# mdadm -C /dev/md0 -a yes -n 3 -x 1 -l 5 /dev/sdb{1,2,3,5}

mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.

[[email protected] ~]#watch -n1 cat /proc/mdstat    #查看mad的状态

mdadm: set /dev/sdb1 faulty in /dev/md0

Personalities : [raid6] [raid5] [raid4]

md0 : active raid5 sdb3[4] sdb5[3] sdb2[1] sdb1[0](F)

10498048 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [_UU]

[==================>..]  recovery = 91.5% (4804320/5249024) finish=0.1min speed=72603K/sec

unused devices: <none>

[email protected] ~]# mkfs.ext4 /dev/md0

mke2fs 1.41.12 (17-May-2010)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=128 blocks, Stripe width=256 blocks

657072 inodes, 2624512 blocks

131225 blocks (5.00%) reserved for the super user

...此处省略N行信息

This filesystem will be automatically checked every 30 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override

第三步:挂载检验RAID是否成功创建


[[email protected] ~]# mkdir /mnt/raid5    #创建挂载点

[[email protected] ~]# mount /dev/md0 /mnt/raid5/    #挂载RAID

[[email protected] ~]# mdadm -D /dev/md0

/dev/md0:

... 此处省略N行信息

0       8       17        0      active sync   /dev/sdb1

1       8       18        1      active sync   /dev/sdb2

4       8       19        2      active sync   /dev/sdb3

3       8       21        -      spare   /dev/sdb5

[[email protected] ~]# ls -l /mnt/raid5/

total 16

drwx------ 2 root root 16384 Aug 30 03:57 lost+found

[[email protected] ~]# df -lh /mnt/raid5/

Filesystem      Size  Used Avail Use% Mounted on

/dev/md0        9.8G   23M  9.3G   1% /mnt/raid5

如果要让此文件系统自动挂载,同样需要添加到/etc/fstab中

模拟RAID5磁盘损坏的,空闲盘会自动补充到RIAD5中去

  • mdadm -D /dev/md0 查看当前md状态

[[email protected] ~]# mdadm /dev/md0 -f /dev/sdb5  #将sdb5设置为faulty(损坏)

mdadm: set /dev/sdb5 faulty in /dev/md0

  • 此时sdb1会自动添加到RAID5中去,以下是正在recovery的状态

  • 恢复完成后:再度查看,RAID已经完全恢复正常状态:

  • 此时,可以移除坏掉的磁盘sdb5,重新添加新的可用分区做位RAID5的空闲盘

[[email protected] ~]# mdadm /dev/md0 --remove /dev/sdb5    #从RAID中移除sdb5

mdadm: hot removed /dev/sdb5 from /dev/md0

[email protected] ~]# mdadm /dev/md0 --add /dev/sdb6    #将sdb6添加到RIAD中去

mdadm: added /dev/sdb6

其它命令



-D:显raid的详细信息;

mdadm -D /dev/md#

管理模式:

-f: 标记指定磁盘为损坏;

-a: 添加磁盘

-r: 移除磁盘

观察md的状态:

cat /proc/mdstat

停止md设备:

mdadm -S /dev/md#

watch命令:

-n #: 刷新间隔,单位是秒;

watch -n# ‘COMMAND‘

时间: 2024-10-14 23:00:06

Linux学习笔记之 RAID介绍,及centos6上软RAID的实现的相关文章

linux学习笔记2-linux的基本命令

第一篇博客:linux学习笔记1-ubuntu的安装与基本设置 之中,已经介绍了如何安装linux操作系统,以及一些基本的设置修改. 本篇博客主要介绍linux中的一些基本的控制台命令 ============================================== 连接远程机器 以指定用户名登陆的命令为:ssh [email protected] (一般情况都需要指定用户名) 以指定用户名和指定端口登陆的命令为:ssh [email protected] -p XXX 断开连接的命

嵌入式Linux学习笔记之LED驱动

最近在学习嵌入式Linux驱动开发,大致了解了驱动的基本开发流程,本文主要针对字符设备驱动开发做一个简要介绍,也当作是对这几天工作的一个小小总结. 计算机系统是由软硬件相互协调共同完成工作的,作为专用计算机系统的嵌入式系统也不例外,既要有CPU.SDRAM.FLASH.IO等硬件,同时也少不了操作系统和应用软件等软件的支持,而作为应用程序与硬件的桥梁--驱动程序,是整个嵌入式系统开发过程中的关键环节.驱动开发涉及底层,而了解底层作用机制对于整个系统的开发意义重大. Linux内核中有60%以上是

Linux学习笔记之文件管理,用户管理

学而不用,总是忘记,今天又整理一下,记在这里,方便以后自己查看 常用操作命令 目录常用操作命令: pwd, cd, ls, mkdir, rmdir, tree. 文件常用操作命令: find,locate, whereis, which, touch, file, cp, rm,mv,ln,cat,tac,head,tail,more,less,grep,wc. 用户及用户组管理 Linux系统中用户分为3类:root用户,普通用户和虚拟用户.其中虚拟用户是不具备登录系统的能力,但却是系统运行

PHP教程:PHPUnit学习笔记(一)PHPUnit介绍及安装

PHP教程:PHPUnit学习笔记(一)PHPUnit介绍及安装 作者:罪惡 发布于:2011-4-9 19:15 Saturday PHP教程 最近学习并在项目中运用了PHPUnit做自动化测试,我将在博客上基于我的PHPUnit学习笔记进行连载,详细的介绍这个自动化测试框架. 笔记内容基本上基于PHPUnit的官方文档和例子,里面加上我自己理解的翻译和配合描述代码.本笔记使用的PHPUnit版本为3.5.13, 测试平台为ubuntu10.10 PHP5.3.3 什么是PHPUnit? PH

linux学习笔记一:获取命令帮助

linux命令超多,忘记命令的使用方式.格式是很平常的事 囧.能够使用系统自带的帮助文件获取到相关的信息是学习linux的必备基本功! 下面记录几个常用的帮助命令,只为加深本菜的记忆,有不对的地方请看到这篇博文的大大加以指导,感激不尽! 简要介绍下命令,命令分为两大种类. 一种为shell自带的一些基础命令,称为内部命令.该类命令集成在shell内部,执行速度比外部命令快. 还有一种称为外部命令,该类命令是额外安装的,开机不自动加载,在需要使用时通过路径查找(printenv中的PATH项),加

马哥Linux学习笔记之一

1.在执行脚本的时候可以用./或者. ./(点空格点斜杠)来执行脚本 ./ 表示启动了另一个Shell去执行脚本(另一个进程),所以点斜杠执行脚本时,设置的环境变量会随着进程的退出而结束,其中的环境变量设置对当前Shell不起作用. . ./相当于source ./执行脚本,source是执行脚本当中的命令,也就是说在当前进程中执行命令,所以其中的环境变量的设置会对当前Shell其作用. 2. 读取硬盘上的文件 读取硬盘上的文件先要将文件读取到内存上,再将其在内存上地址交给进程,这样进程就可以读

【Linux学习笔记】第5章 VIM工具

5.1vim介绍vim是vi的升级版,带有颜色显示,先安装包yum install -y vim-enhancedvim分为三种模式:一般模式.编辑模式.命令模式. 5.2vim颜色显示和移动光标相同的文件信息在不同目录下显示颜色会有差异.相同内容,不同文件名,显示颜色也会有差异.vim的配置文件/etc/vimrc. 5.3vim一般模式下移动光标一般模式下:h或向左的方向键 光标向左移动一个字符l或者向右的方向键 或者空格键 光标向右移动一个字符Ctrl+f或PageUp键 屏幕向前移动一页

linux学习笔记(一)-文件目录相关的命令&&文件通配符

一.几个命令概述 1.查看目录以及目录底下的文件:ls(-a显示隐藏文件:-d显示目录本身:-l显示详细内容:-R递归显示,即把子目录的文件也显示出来:-h以更加被人类理解的格式显示,比如显示文件大小的时候用M为单位显示:-i显示文件索引ID) 2.查看文件内容:cat,head,tail,less,more,tac cat:将文件连接起来,输出在屏幕上,可接多个文件(-E:显示隐藏的换行符:-n:显示出行号) head:默认查看文件的前10行(-n#:查看文件的前#行.空白行也是一行) tai

Linux学习笔记四:Linux的文件搜索命令

1.文件搜索命令  which 语法:which [命令名称] 范例:$which ls  列出ls命令所在目录 [[email protected] ~]$ which ls alias ls='ls --color=auto' /bin/ls 另外一个命令:whereis [名称名称],也可以列出命令所在目录. [[email protected] ~]$ whereis ls ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/ma