linux学习日记十三 软件磁盘阵列raid

来源: 电脑维修教程 阅读:     发表时间:

这系列文章首要是一刀写的linux相关进修资料,这篇文章首要介绍了linux下的软件磁盘阵列raid相关常识,需要的朋侪可以参考下 磁盘阵列的英文全称是re

这系列文章首要是一刀写的linux相关进修资料,这篇文章首要介绍了linux下的软件磁盘阵列raid相关常识,需要的朋侪可以参考下

磁盘阵列的英文全称是redundant arrays of inexpensive disks(raid),即容错廉价磁盘阵列。可以经由过程一些手艺将多个较小的磁盘整合成为一个较大的磁盘设备;而这个设备可不止存储功能罢了,它还具稀有据护卫功能。

raid的品级:

× raid-0(等量模式,stripe):机能较佳

这种模式利用不异型号和容量的磁盘来构成,可以有多个,raid会将每一个磁盘划分成等量的区块(通常是4k,2k等等),然后当一个文件被写入时,该文件会根据块巨细切割好,以后依序放到各个磁盘里面去,因为每一个磁盘交织寄存数据,是以当你的数据要写入raid时,数据会被等量的放置到各个磁盘上去。越多磁盘构成raid-0,那末的话机能一定就越好了。

错误谬误:一个磁盘挂点,整个文件系统崩盘,没法恢复了。而且所有磁盘容量必需一样,否则机能会下降。

× raid-1(映像模式,mirror):完整备份

这种模式也要不异型号,不异容量的磁盘,最好完全一样,一个模型刻出来的。

数据传送到i/o总线被复制多份到各个磁盘,是以写的机能会变得很差,不外若是你用硬件raid(磁盘阵列卡),磁盘阵列卡会自动帮你复制,不需要i/o总线。可是磁盘阵列卡很贵滴呀呀,我买不起,所以很悲剧。raid-1最大的用处在于备份,不外它的读取机能很好。

× raid 0+1, raid 1+0

raid-0的机能较佳可是数据不平安,raid-1数据平安可是机能欠安,那能不克不及组合下撒。

raid 0+1:先让n块磁盘构成raid-0, 同时再让别的的n块磁盘也构成raid-0, 如许子我获得了两组raid-0,然后将这两组raid-0再构成一组raid-1。

raid 1+0:先让2n块磁盘构成n个组,每一个组两个磁盘,每一个组里面的两个磁盘构成raid-1, 然后将这n组raid-1构成raid-0。

错误谬误:磁盘有一半的容量用来做备份了,悲剧呀!!!

raid-5:机能与数据备份的平衡考虑

raid-5最少需要三块以上的磁盘才能构成这种类型的磁盘阵列。这种磁盘阵列的数据写入有点近似raid-0,不外每次轮回写入进程中,在每块磁盘还插手一个同位查抄数据(parity),这个数据会记实其他磁盘的备份数据,用于当有磁盘损毁时的救援。

raid-5的容量要减失落一个磁盘容量,也就是阵列的磁盘总数n-1,因为需要一个磁盘容量来留存同位查抄数据parity

raid-5的读取机能很不错,跟raid-0有得一拼,可是写入机能就很尴尬了,在软件磁盘阵列的时辰,cpu还得花时候去计较同位查抄数据。同时它只能保证一个磁盘损毁数据的平安,若是两个磁盘损毁就挂了。

raid-6:跟raid-5近似,不外此次会利用两块磁盘容量作为parity的存储,它可以撑持两块磁盘同时损毁,这个几率应该比走在马路上被一辆驴车撞到的几率还低吧,^_^

====spare disk:豫备磁盘的功能====

为了让系统可以及时在坏失落磁盘时自动重建,需要豫备磁盘spare disk的辅助,日常平凡不包括在磁盘阵列中,当磁盘阵列有任何磁盘损毁时,spare disk顿时被自动拉入磁盘阵列中,并将坏失落的磁盘移除磁盘阵列,然后当即重建数据系统,若是你的磁盘阵列还撑持热插拔就更爽了,因为这个时辰只需要把坏的那颗磁盘拔下来,换上一个新的,再将新的磁盘设置成spare disk,完成了,不消关机重启可以完成一切。这对服务器的不变性有很好的扶助。

磁盘阵列的长处:

× 数据平安与靠得住性,这里指的是硬盘坏了数据可以挽回。

× 读写机能,raid-0可以增强读写机能,让你的系哦i/o系统部份得以改良

× 容量:可让多个磁盘组合起来,是以单一文件系统可以有相当大的容量。

centos供给的软件磁盘阵列为mdadm这套软件,以分区或磁盘为单元,也就是说你不需要多个磁盘便可以设计你的磁盘阵列了。另外,mdadm撑持方才提到的raid-0,raid-1,raid-5品级,还撑持spare disk的功能。并且供给的经管机制还可以到达近似可以热插拔的功能,可以在线(文件系统正常利用)进行分区的抽换,利用上很是的利便。。

注重:硬盘磁盘阵列在linux看起来就是一个大的磁盘,所有设备文件名为/dev/sd[a-p],因为利用到scsi的模块的原因。而软件磁盘阵列因为是系统仿真,是以利用的设备文件名时系统的设备文件,文件名为/dev/md0, /dev/md1,二者注重区别。

====软件磁盘阵列的设置====

# mdadm –detail /dev/md0

# mdadm –create –auto=yes /dev/md[0-9] –raid-device=4 –level=[015] –spare-device=2 /dev/sd5 /dev/sd6

–create:为新建raid的参数

–auto=yes:决议新建后面接的软件磁盘阵列设备,即/dev/md0, /dev/md1等

–raid-devices=n:利用n个磁盘作为磁盘阵列的设备

–spare-devices=n:利用n个磁盘作为备用spare设备

–level=[015]:设置磁盘阵列的品级。撑持良多,不外建议只要用0,1,5便可

–detail:后面所接的谁人磁盘阵列设备的具体信息

注重最后面接的设备文件名,可以时整块磁盘,好比/dev/sdb,也能够是一个分区,好比/dev/sdb1,不外这些设备文件名的数目总数必需等于–raid-devices和–spare-devices的个数总和才行。

下面我来尝尝成立一个raid-5的软件磁盘阵列,貌似这个对比经常使用,很合适。

我但愿这个raid-5情况时如许子的:

× 操纵4个分区构成raid-5

× 每一个分区大约为1g巨细,需要确定每一个分区一样大较佳

× 别的加一个分区设置为sparedisk

× 这个sparedisk的巨细与其他raid所需分区一样大

× 将此raid-5设备挂载到/mnt/raid目次下面

先用fdisk构建5个1g的分区:

# fdisk /dev/sda

前面省略。。。

command (m for help):n

每次分1000m空间巨细,注重,我不明白神马原因,first 扇区要手动输入,用p选项查看后,用最后一个分区的扇区号+2049才是第一个余暇扇区号,这个可能时fedora的一个bug,分区竟然不是持续的,不管了,自己去尝尝。囧

最后的分区用p查看后,是如许子的:

设备 boot start end blocks id system

/dev/sda1 2048 206847 102400 7 hpfs/ntfs/exfat

/dev/sda2 * 206848 169859071 84826112 7 hpfs/ntfs/exfat

/dev/sda3 169859072 462827821 146484375 7 hpfs/ntfs/exfat

/dev/sda4 462829568 976773119 256971776 5 extended

/dev/sda5 462833664 463243263 204800 83 linux

/dev/sda6 463245312 631181311 83968000 83 linux

/dev/sda7 631183360 799119359 83968000 83 linux

/dev/sda8 799121408 803315711 2097152 82 linux swap / solaris

/dev/sda9 803317760 805365759 1024000 83 linux

/dev/sda10 805367808 807415807 1024000 83 linux

/dev/sda11 807417856 809465855 1024000 83 linux

/dev/sda12 809467904 811515903 1024000 83 linux

/dev/sda13 811517952 813565951 1024000 83 linux

后面的从9到13就是方才我分的5个分区,每一个大要1g,巨细都不异。

# partprobe

接下来就简单啦啦,,经由过程mdadm来建立磁盘阵列吧。哦也

# mdadm –create –auto=yes /dev/md0 –level=5 –raid-devices=4 –spare-devices=1 /dev/sda{9,10,11,12,13}

查看下(等下,先去喝杯咖啡先,因为若是你直接立马运行,可能呈现下面的正在building数据的信息):

复制代码

代码以下:

# mdadm --detail /dev/md0

/dev/md0: <==raid设备文件名

version : 1.2

creation time : sun oct 28 10:03:43 2012 <==raid被建立的时候

raid level : raid5 <==此raid的品级

array size : 3068928 (2.93 gib 3.14 gb) <==此raid可用磁盘容量

used dev size : 1022976 (999.17 mib 1047.53 mb) <==每一个设备可用容量

raid devices : 4 <==用作raid的设备数目

total devices : 5 <==全数的设备数目

persistence : superblock is persistent

update time : sun oct 28 10:04:01 2012

state : clean, degraded, recovering

active devices : 3 <==启动的(active)设备数目

working devices : 5 <==可工作的设备数目

failed devices : 0 <==呈现过错的设备数目

spare devices : 2 <==豫备spare磁盘的数目

layout : left-symmetric

chunk size : 512k

rebuild status : 17% complete

name : localhost.localdomain:0 (local to host localhost.localdomain)

uuid : 657db303:887c7b6f:b8d8fc91:dc7b3374

events : 3

number major minor raiddevice state

0 8 9 0 active sync /dev/sda9

1 8 10 1 active sync /dev/sda10

2 8 11 2 active sync /dev/sda11

5 8 12 3 spare rebuilding /dev/sda12

4 8 13 - spare /dev/sda13

真正的完成build后的信息应该是:

复制代码

代码以下:

# mdadm --detail /dev/md0

/dev/md0:

version : 1.2

creation time : sun oct 28 10:03:43 2012

raid level : raid5

array size : 3068928 (2.93 gib 3.14 gb)

used dev size : 1022976 (999.17 mib 1047.53 mb)

raid devices : 4

total devices : 5

persistence : superblock is persistent

update time : sun oct 28 10:06:00 2012

state : clean

active devices : 4

working devices : 5

failed devices : 0

spare devices : 1

layout : left-symmetric

chunk size : 512k

name : localhost.localdomain:0 (local to host localhost.localdomain)

uuid : 657db303:887c7b6f:b8d8fc91:dc7b3374

events : 20

number major minor raiddevice state

0 8 9 0 active sync /dev/sda9

1 8 10 1 active sync /dev/sda10

2 8 11 2 active sync /dev/sda11

5 8 12 3 active sync /dev/sda12

4 8 13 - spare /dev/sda13

还可以经由过程查看/proc/mdstat查看磁盘阵列环境:

# cat /proc/mdstat

personalities : [raid6] [raid5] [raid4]

md0 : active raid5 sda12[5] sda13[4](s) sda11[2] sda10[1] sda9[0]

3068928 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [uuuu]

unused devices: <none>

格局化与挂载利用raid:

# mkfs -t ext4 /dev/md0

# mkdir /mnt/raid

# mount /dev/md

# mount /dev/md0 /mnt/raid

# df

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

rootfs 82649712 4681980 73769332 6% /

devtmpfs 1964632 4 1964628 1% /dev

tmpfs 1975352 600 1974752 1% /dev/shm

tmpfs 1975352 1160 1974192 1% /run

/dev/sda6 82649712 4681980 73769332 6% /

tmpfs 1975352 0 1975352 0% /sys/fs/cgroup

tmpfs 1975352 0 1975352 0% /media

/dev/sda7 82649712 8355056 70096256 11% /home

/dev/sda5 198337 90718 97379 49% /boot

/dev/md0 3020688 70048 2797196 3% /mnt/raid

看到了吧,最后一个,是否是很有成就感,=_=

====仿真raid过错的救援模式====

# mdadm –manage /dev/md[0-9] [--add 设备] [--remove 设备] [--fail 设备]

–add:将后面的设备插手到这个md中

–remove:将后面的设备从这个md中删除

–fail:将后面的设备设置成犯错的状况

手动摹拟磁盘过错:

# cp -a /etc /var/log /mnt/raid/

# df -h /mnt/raid/; du -smh /mnt/raid/*

文件系统 容量 已用 可用 已用% 挂载点

/dev/md0 2.9g 126m 2.7g 5% /mnt/raid

45m /mnt/raid/etc

4.4m /mnt/raid/log

16k /mnt/raid/lost+found

# mdadm –manage /dev/md0 –fail /dev/sda10

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

然后顿时查看状况,这个动作要快点,因为raid会主动重建数据系统:

复制代码

代码以下:

# mdadm --detail /dev/md0

/dev/md0:

version : 1.2

creation time : sun oct 28 10:03:43 2012

raid level : raid5

array size : 3068928 (2.93 gib 3.14 gb)

used dev size : 1022976 (999.17 mib 1047.53 mb)

raid devices : 4

total devices : 5

persistence : superblock is persistent

update time : sun oct 28 10:24:42 2012

state : clean, degraded, recovering

active devices : 3

working devices : 4

failed devices : 1

spare devices : 1

layout : left-symmetric

chunk size : 512k

rebuild status : 6% complete

name : localhost.localdomain:0 (local to host localhost.localdomain)

uuid : 657db303:887c7b6f:b8d8fc91:dc7b3374

events : 23

number major minor raiddevice state

0 8 9 0 active sync /dev/sda9

4 8 13 1 spare rebuilding /dev/sda13

2 8 11 2 active sync /dev/sda11

5 8 12 3 active sync /dev/sda12

1 8 10 - faulty spare /dev/sda10

喝完咖啡后,看一下(其实也就1分钟阁下)

复制代码

代码以下:

# mdadm --detail /dev/md0

/dev/md0:

version : 1.2

creation time : sun oct 28 10:03:43 2012

raid level : raid5

array size : 3068928 (2.93 gib 3.14 gb)

used dev size : 1022976 (999.17 mib 1047.53 mb)

raid devices : 4

total devices : 5

persistence : superblock is persistent

update time : sun oct 28 10:26:53 2012

state : clean

active devices : 4

working devices : 4

failed devices : 1

spare devices : 0

layout : left-symmetric

chunk size : 512k

name : localhost.localdomain:0 (local to host localhost.localdomain)

uuid : 657db303:887c7b6f:b8d8fc91:dc7b3374

events : 43

number major minor raiddevice state

0 8 9 0 active sync /dev/sda9

4 8 13 1 active sync /dev/sda13

2 8 11 2 active sync /dev/sda11

5 8 12 3 active sync /dev/sda12

1 8 10 - faulty spare /dev/sda10

看到了吧,不消我来给你诠释了吧。

接下来,我将犯错的磁盘删除并插手新的磁盘:

起首,先新建一个新的分区,这个分区巨细要与其他的分区一样大才好。然后再用mdadm删除过错的并插手新的

# fdisk /dev/sda

….下面建新分区步调省略,若是不明白怎样建,参考我的企鹅日志(一)

# partprobe

# partprobe

[root@localhost ~]# mdadm –manage /dev/md0 –add /dev/sda14 –remove /dev/sda10

mdadm: added /dev/sda14

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

复制代码

代码以下:

# mdadm --detail /dev/md0

/dev/md0:

version : 1.2

creation time : sun oct 28 10:03:43 2012

raid level : raid5

array size : 3068928 (2.93 gib 3.14 gb)

used dev size : 1022976 (999.17 mib 1047.53 mb)

raid devices : 4

total devices : 5

persistence : superblock is persistent

update time : sun oct 28 10:33:04 2012

state : clean

active devices : 4

working devices : 5

failed devices : 0

spare devices : 1

layout : left-symmetric

chunk size : 512k

name : localhost.localdomain:0 (local to host localhost.localdomain)

uuid : 657db303:887c7b6f:b8d8fc91:dc7b3374

events : 45

number major minor raiddevice state

0 8 9 0 active sync /dev/sda9

4 8 13 1 active sync /dev/sda13

2 8 11 2 active sync /dev/sda11

5 8 12 3 active sync /dev/sda12

6 8 14 - spare /dev/sda14

看到了吧,成果不消我诠释了吧。。哈哈

而这一切的一切都是online的状况下完成的,是否是很nb呢 =_=

====开机主动挂载raid====

只需要明白/dev/md0的uuid就行

# mdadm –detail /dev/md0 | grep -i uuid

uuid : 657db303:887c7b6f:b8d8fc91:dc7b3374

# vi /etc/mdadm.conf

array /dev/md0 uuid=657db303:887c7b6f:b8d8fc91:dc7b3374

# vi /etc/fstab,在最后一行插手

/dev/md0 /mnt/raid ext4 defaults 1 2

测试下可行否(这个很主要,因为若是fstab点窜不合错误可能致使开不了机械)

# umount /dev/md0; mount -a

[root@localhost ~]# df /mnt/raid/

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

/dev/md0 3020688 120464 2746780 5% /mnt/raid

ok,没有问题,那末你便可以重启了,看是否是主动挂载了呢。

====封闭raid====

1,先卸载

# umount /dev/md0

2,删除设置装备摆设文件内容:

# vi /etc/fstab,删除(注释)下面这行

/dev/md0 /mnt/raid ext4 defaults 1 2

3,封闭/dev/md0:

# mdadm –stop /dev/md0

4,# cat /proc/mdstat

personalities : [raid6] [raid5] [raid4]

unused devices: <none>

5,vi /etc/mdadm.conf,删除(注释)下面的行

array /dev/md0 uuid=657db303:887c7b6f:b8d8fc91:dc7b3374

好的,所有的raid的根基都讲完了。不外上面我用的时一块磁盘,现实用处中记得用多块磁盘啊!!

=======================================end=========================================

以上是:解决linux学习日记十三 软件磁盘阵列raid问题的详细资料教程