linux之RAID 学习

硬件阵列和软件阵列

硬件阵列需要使用磁盘阵列卡,系统要安装磁盘阵列的驱动器

RAID级别

RAID在存储的时候会将各个磁盘预划分为等同的小区块,在写数据时将数据按照磁盘小区(称为chunk)块的大小进行写数据。

RAID-0:

至少两块磁盘。在写数据时是按顺序依次写入各个磁盘中

优点:磁盘总容量是各磁盘之和。等量模式,性能最佳,写性能

缺点:1、任何一个磁盘损毁,整个RAID上面的数据都将丢失而无法读取。

2、如果组成RAID-0的磁盘容量不等,那么等到容量小的磁盘用完,数据只能写入容量大的磁盘中。

性能提升:读,写

冗余能力:无

空间利用率:ns

RAID-1:映像模式,完整备份

至少需要两块相同磁盘,如果不同,总容量将以容量小的磁盘容量为主

优点:数据完整备份,读性能好,写性能差

性能表现:写性能下降,读性能提升

冗余能力:有

空间利用率:1/2

RAID 0+1:先做两组RAID-0,在将两组RAID-0做成RAID-1

性能提升:读,写提升

冗错能力:有

空间利用率:1/2

RAID 1+0:先做两组RAID-1,在将两组RAID-1做成RAID-0

性能提升:读,写提升

冗错能力:每组只允许块一个磁盘

空间利用率:1/2

RAID-4 :至少需要3块磁盘,第三块磁盘做校验码

性能提升:读,写提升

冗错能力:有

空间利用率:(n-1)/n

RAID-5:至少三块磁盘,两块存数据,一块存校验码,只能允许有1块磁盘的损坏.在将数据块写入磁盘时采用校验码对角线存放的机制来保证数据的安全,分为左对角线存放(通常使用)和右对角线存放。

性能提升:读,写

冗余能力:有

空间利用率:(n-1)/n

RAID-6:是在RAID-5的基础上在加一块磁盘作为校验盘,可以允许出现两块磁盘损坏

性能提升:读,写

冗余能力:有

空间利用率:(n-2)/n

JBOD技术:简单将多个磁盘逻辑成一个磁盘来应用,单纯扩容功能,读写速度和数据安全不变

性能提升:读,写

冗余能力:有

空间利用率:完全利用

提供磁盘阵列的软件是mdadm

硬盘类型:

SATA:133Bbps,600Mbps,6Gbps  串行

IDE:133Mbps  并行

CISC:  small computer system interface  并行总结

USB:3.0达到480Mbps  串行

SAS:

linux中有md模块支持做RAID磁盘阵列

使用mdadm命令,支持将任何模块设备做成RAID

模式化的命令: mdadm [mode] <raiddevice> [options] <component-devices>

创建模式

-C

-l :级别

-n:设备个数

-a:自动创建其设备文件。yes

-x :指明空闲盘的个数

-c:指明chunk大小(小分区块的大小)

管理模式

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

-a: 添加磁盘

-r: 移除磁盘

mdadm  /dev/md#  --fail或者-f  /dev/sdb1

增长模式

-G

监控模式

-F

装配模式

-A

查看阵列的详细信息

-D 或者--detail

观察md的状态:

cat /proc/mdstat

停止md设备:

mdadm -S /dev/md#

watch命令:周期性的执行某个命令,并以全屏方式显示结果

watch  -n # ‘commend’

停用阵列

-S   或者--stop

例如创建RAID-0

在同一磁盘不同分区创建RAID-0

第一步:创建两个2G的分区/dev/sdb1   /dev/sdb2,分区类型是fd

第二步:创建阵列/dev/md0

[[email protected] ~]# mdadm -C /dev/md0 -a yes -n 2 -l 0 /dev/sdb1 /dev/sdb2

mdadm: Defaulting to version 1.2 metadata

mdadm: array /dev/md0 started.

[[email protected] ~]# cat /proc/mdstat

Personalities : [raid0]

md0 : active raid0 sdb2[1] sdb1[0]

4208640 blocks super 1.2 512k chunks

unused devices: <none>

第三步:格式化/dev/md0

[[email protected] ~]# mkfs -t ext3 /dev/md0

mke2fs 1.41.12 (17-May-2010)

文件系统标签=

操作系统:Linux

块大小=4096 (log=2)

分块大小=4096 (log=2)

Stride=128 blocks, Stripe width=256 blocks

263472 inodes, 1052160 blocks

52608 blocks (5.00%) reserved for the super user

第一个数据块=0

Maximum filesystem blocks=1077936128

33 block groups

32768 blocks per group, 32768 fragments per group

7984 inodes per group

Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912, 819200, 884736

正在写入inode表: 完成

Creating journal (32768 blocks): 完成

Writing superblocks and filesystem accounting information: 完成

This filesystem will be automatically checked every 32 mounts or

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

[[email protected] ~]#

第四步:挂载使用/dev/md0到/mnt/md文件

[[email protected] ~]# mkdir /mnt/md

[[email protected] ~]# ls /mnt/md

[[email protected] ~]# ls /mnt

md

[[email protected] ~]# mount /dev/md0 /mnt/md

[[email protected] ~]# df

文件系统         1K-块      已用      可用 已用% 挂载点

/dev/sda1             10079084   2172384   7394700  23% /

tmpfs                   255464         0    255464   0% /dev/shm

/dev/sda3              3527712     72536   3275976   3% /home

/dev/sda2              5039616    141204   4642412   3% /usr/local

/dev/md0               4142444    139420   3792592   4% /mnt/md

[[email protected] ~]#

[[email protected] ~]# cd /mnt/md

[[email protected] md]# ls

lost+found

[[email protected] md]#

RAID-0完成

构建RAID-1

在/dev/sdc上创建/dev/sdc1   /dev/sdc2

创建RAID-1

[[email protected] mnt]# mdadm -C /dev/md1 -n 2 -l 1 /dev/sdc1 /dev/sdc2

[[email protected] mnt]# partprobe

[[email protected] mnt]# cat /proc/partitions

[[email protected] mnt]# cat /proc/mdstat

[[email protected] mnt]# mkfs -t ext3 /dev/md1

[[email protected] mnt]# mount /dev/md1 /mnt/md1

RAID 模拟错误救援模式

模拟/dev/md0下的/dev/sdb1损坏

[[email protected] mnt]# mdadm /dev/md1 --fail /dev/sdc2

mdadm: set /dev/sdc2 faulty in /dev/md1

[[email protected] mnt]# mdadm --detail /dev/md1

/dev/md1:

Version : 1.2

Creation Time : Tue Jun 30 01:23:45 2015

Raid Level : raid1

Array Size : 2102400 (2.01 GiB 2.15 GB)

Used Dev Size : 2102400 (2.01 GiB 2.15 GB)

Raid Devices : 2

Total Devices : 2

Persistence : Superblock is persistent

Update Time : Tue Jun 30 01:38:09 2015

State : clean, degraded

Active Devices : 1

Working Devices : 1

Failed Devices : 1

Spare Devices : 0

Name : localhost.localdomain:1  (local to host localhost.localdomain)

UUID : 232ccdda:5a8d76ba:f42a131a:3ce54a72

Events : 20

Number   Major   Minor   RaidDevice State

0       8       33        0      active sync   /dev/sdc1

1       0        0        1      removed

1       8       34        -      faulty spare   /dev/sdc2

[[email protected] mnt]# mdadm /dev/md1 --remove /dev/sdc2

mdadm: hot removed /dev/sdc2 from /dev/md1

[[email protected] mnt]# mdadm --detail /dev/md1

/dev/md1:

Version : 1.2

Creation Time : Tue Jun 30 01:23:45 2015

Raid Level : raid1

Array Size : 2102400 (2.01 GiB 2.15 GB)

Used Dev Size : 2102400 (2.01 GiB 2.15 GB)

Raid Devices : 2

Total Devices : 1

Persistence : Superblock is persistent

Update Time : Tue Jun 30 01:41:17 2015

State : clean, degraded

Active Devices : 1

Working Devices : 1

Failed Devices : 0

Spare Devices : 0

Name : localhost.localdomain:1  (local to host localhost.localdomain)

UUID : 232ccdda:5a8d76ba:f42a131a:3ce54a72

Events : 23

Number   Major   Minor   RaidDevice State

0       8       33        0      active sync   /dev/sdc1

1       0        0        1      removed

[[email protected] mnt]#

在重启系统之后重启RAID 启动不了,查看cat /proc/partitions 文件,发现之前设定的RAID0和RAID1 变成了RAID 126和RAID 127 .

解决办法,执行mdadm -Ds > /etc/mdadm.conf 将RAID信息记录到文件中,重启系统重新启动RAID就不会出错了

RAID调优:

可以在格式化RAID的时候指定条带(stride)参数

mkfs -t ext3 -E stride=16 -b 4096 /dev/md0

注意 stride=chunk/block  的倍数

创建RAID-10

创建第一组RAID-1

[[email protected] ~]# mdadm -C /dev/md1 -n 2 -c 16M -l 1 /dev/sdb{5,6}

[[email protected] ~]# cat /proc/mdstat

Personalities : [raid1]

md1 : active raid1 sdb6[1] sdb5[0]

1059200 blocks super 1.2 [2/2] [UU]

unused devices: <none>

创建第二组RAID-1

[[email protected] ~]# mdadm -C /dev/md2 -n 2 -c 16M -l 1 /dev/sdb{7,8}

[[email protected] ~]# cat /proc/mdstat

Personalities : [raid1]

md2 : active raid1 sdb8[1] sdb7[0]

1059200 blocks super 1.2 [2/2] [UU]

md1 : active raid1 sdb6[1] sdb5[0]

1059200 blocks super 1.2 [2/2] [UU]

unused devices: <none>

在此基础上创建RAID-0

[[email protected] ~]# mdadm -C /dev/md10 -n 2 -l 10 /dev/md{1,2}

查看RAID-10

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

/dev/md10:

Version : 1.2

Creation Time : Thu Aug 27 06:56:55 2015

Raid Level : raid10

Array Size : 1057792 (1033.17 MiB 1083.18 MB)

Used Dev Size : 1057792 (1033.17 MiB 1083.18 MB)

Raid Devices : 2

Total Devices : 2

Persistence : Superblock is persistent

Update Time : Thu Aug 27 06:57:03 2015

State : clean

Active Devices : 2

Working Devices : 2

Failed Devices : 0

Spare Devices : 0

Layout : near=2

Chunk Size : 512K

Name : localhost.localdomain:10  (local to host localhost.localdomain)

UUID : 20bbfec0:fda1c342:18cb8605:2c9964af

Events : 17

Number   Major   Minor   RaidDevice State

0       9        1        0      active sync set-A   /dev/md1

1       9        2        1      active sync set-B   /dev/md2

格式化RAID-10

[[email protected] ~]# mke2fs -t ext3 -L "RAID-10" /dev/md10

查看RAID-10信息

[[email protected] ~]# blkid /dev/md10

/dev/md10: LABEL="RAID-10" UUID="b12da796-fa15-48ad-a46e-d94b90fa62b5" SEC_TYPE="ext2" TYPE="ext3"

挂载RAID-10至/mnt目录

[[email protected] ~]# mount /dev/md10 /mnt

然后就可以正常使用了。

时间: 2024-11-08 23:32:51

linux之RAID 学习的相关文章

linux 命令 及学习进度综合整理

linux  命令  及学习进度综合整理 pwd 查看当前所在位置 cd  跳转到什么什么目录 ls  显示所有文件和目录 ls -l  显示目录详细信息 cd ..  返回上一级 vi  lnany.txt  创建一个文件 vi  .lnany.txt    创建一个隐藏文件 vim 是 vi 的升级版 功能更多 出现 -bash: vim: command not found 的解决办法 i. 那么如何安裝 vim 呢?输入rpm -qa|grep vim 命令, 如果 vim 已经正确安裝

raid基础及linux软raid之dmadm

RAID  0 : 条带         性能提升:读,写  n         冗余能力(容错能力):无         空间利用率: nS         至少2块磁盘    1 : 镜像         性能提升:写性能有所下降,读性能提升         冗余能力:有         空间利用率: 1/2         至少2块磁盘  2 :   3 :   4 :   5 :          性能表现:读写提升         冗余能力:有         空间利用率:(n-1)/

linux中RAID详解

一.RAID介绍 RAID即廉价冗余磁盘阵列(Redundant Array of Inexpensive Disks),从Linux 2.4内核开始,Linux就提供软件RAID,不必购买昂贵的硬件RAID控制器和附件(一般中.高挡服务器都提供这样的设备和热插拔硬盘),就可以通过并行处理多个独立的I/O 请求提高读写性能,而且能通过增加冗余信息来提高数据存储的可靠性. 二.几种RAID类型 RAID 0 非冗余,读写性能好,数据可靠性低于单个磁盘. RAID 1 镜像,读性能好,写性能与单个磁

Linux运维学习之 —— 搭建本地yum源

yum是RPM的前端工具,通过yum命令可以帮我们自动解决安装rpm包之间的依赖关系.下面是搭建本地yum仓库的步骤: 1.挂载光盘(光盘为CentOS-6.5-x86_64-bin-DVD2.iso)     mount /dev/cdrom1 /media ls一下/media这个目录,可以看到以下内容 2.创建本地文件夹,将Packages下的rpm包全部拷贝到本地文件夹     mount /dev/cdrom1 /media/     cp -r /media/Packages/* /

Linux链接脚本学习--lds(转)

Linux链接脚本学习--lds 一.概论 ld: GNU的链接器. 用来把一定量的目标文件跟档案文件链接在一起,并重新定位它们的数据,链接符号引用. 一般编译一个程序时,最后一步就是运行ld进行链接 每一个链接都被一个链接脚本所控制,这个脚本是用链接命令语言书写的. 二.链接脚本 链接脚本的一个主要目的是描述输入文件中的各个段(数据段,代码段,堆,栈,bss)如何被映射到输出文件中,并控制输出文件的内存排布. 链接器总是使用链接脚本的,如果你不提供,则链接器会使用一个缺省的脚本,这个脚本是被编

Linux阵列 RAID详解 (转)

原文链接:http://molinux.blog.51cto.com/2536040/516008   一. RAID详解   二. mdadm工具介绍   三. 创建一个RAID的基本过程   四. 磁盘阵列的管理   五. RAID优化 RAID详解:   描述:RAID: (Redundant Array of indenpensive Disk) 独立磁盘冗余阵列: 磁盘阵列是把多个磁盘组成一个阵列,当作单一磁盘使用,它将数据以分段(striping)的方式储存在不同的磁盘中,存取数据时

linux网络编程学习笔记之二 -----错误异常处理和各种碎碎(更新中)

errno 在unix系统中对大部分系统调用非正常返回时,通常返回值为-1,并设置全局变量errno(errno.h),如socket(), bind(), accept(), listen().erron存放一个正整数来保存上次出错的错误值. 对线程而言,每个线程都有专用的errno变量,不必考虑同步问题. strerror converts to English (Note: use strerror_r for thread safety) perror is simplified str

[Linux]谈谈如何学习Linux操作系统

一. 选择适合自己的linux发行版谈到linux的发行版本,太多了,可能谁也不能给出一个准确的数字,但是有一点是可以肯定的,linux正在变得越来越流行, 面对这么多的Linux 发行版,打算从其他系统转到linux系统来的初学者可能会感到困惑,即便是忠实的 Linux 用户也没有时间和精力去挨个尝试,因此初学者在学习linux的之前,需要有一个明确的方向,选择一个适合自己的系统开始学习linux至关重要!下面我们就分类介绍. 1.1 初学者入门首选-redhat系列在学习redhat系列li

linux shell 命令学习(5) xxd- make a hexdump or do the reverse.

对于标准输入或者给定的文件,显示其16进制的内容.也可以反过来进行转换. ? 1 2 3 xxd -h[elp] xxd [options] [infile [outfile]] xxd -r[evert] [options] [infile [outfile]] 如果没有指定输入文件, 则采用标准输入. -b: 以2进制格式进行输出 ? 1 2 3 4 [[email protected] src]$ xxd -b train.ini 0000000: 01011011 01110100 01