linux☞如何实现软RAID 0,软RAID 1,软RAID 10

RAID的实现:
RAID:廉价冗余磁盘阵列,是将几块硬盘变成一个总体使用
后来由于它失去了原有的廉价目的,变得很昂贵,就改名为
独立冗余磁盘阵列
虽然咱们没法实现硬件上得RAID由于实力有限,没有买那些设备,可是咱们仍是能实现RAID的
下面咱们就来看一下如何实现软RAID:
html

第一:软RAID 0的实现:
首先介绍一下RAID 0 的原理,RAID 0是将一股数据流分红两份分别存在两个盘上,以实现提升一倍性能的
现象,不只如此,它还提供了很大的吞吐量,下面咱们就实现一下软RAID 0
第一首先要建立两个分区【固然大于两个也是能够实现raid 0的】,在建立一个大小为2G的RAID时须要
两个大小各为1G的分区,分区建立完以后记得让内核重读一下分区表,
面试

partprobe /dev/sda

[root@server56 raid10]# fdisk /dev/sda
Command (m for help): n
First cylinder (7011-15665, default 7011):      
Using default value 7011
Last cylinder or +size or +sizeM or +sizeK (7011-15665, default 15665): +1G

Command (m for help): t
Partition number (1-6): 5
Hex code (type L to list codes): fd
Changed system type of partition 5 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-6): 6
Hex code (type L to list codes): fd
Changed system type of partition 6 to fd (Linux raid autodetect)

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        5235    41945715   8e  Linux LVM
/dev/sda3            5236        5300      522112+  82  Linux swap / Solaris
/dev/sda4            5301       15665    83256862+   5  Extended
/dev/sda5            5301        5423      987966   fd  Linux raid autodetect
/dev/sda6            5424        5546      987966   fd  Linux raid autodetect


Linux raid autodetect是创建软RAID 是须要的系统类型必定记得在分区的时候给须要划分的那两个
分区指定成这样的类型,如下是全部能够为其指定的系统类型与系统类型的编号,在指定系统类型的时候
只须要输入前面的编号便可
ide

0  Empty           1e  Hidden W95 FAT1 80  Old Minix       bf  Solaris        
 1  FAT12           24  NEC DOS         81  Minix / old Lin c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          82  Linux swap / So c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  83  Linux           c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     84  OS/2 hidden C:  c7  Syrinx         
 5  Extended        41  PPC PReP Boot   85  Linux extended  da  Non-FS data    
 6  FAT16           42  SFS             86  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set de  Dell Utility   
 8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext df  BootIt         
 9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       e1  DOS access     
 a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi ee  EFI GPT        
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a6  OpenBSD         f0  Linux/PA-RISC b
11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f1  SpeedStor      
12  Compaq diagnost 5c  Priam Edisk     a8  Darwin UFS      f4  SpeedStor      
14  Hidden FAT16 <3 61  SpeedStor       a9  NetBSD          f2  DOS secondary  
16  Hidden FAT16    63  GNU HURD or Sys ab  Darwin boot     fb  VMware VMFS    
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT


分区建立完以后记得输入w   保存退出,若以q退出则以上分区均没有了性能

分区建立完以后记得格式化,为其建立文件系统ext2或ext3,不管你指定怎样的文件系统类型,可是两个
分区的文件系统类型必须同样,这样才能保持一致与同步工做
spa

mkfs.ext2 /dev/sda5
mkfs.ext2 /dev/sda6


格式化完成以后就能够进行下一步了,创建软RAID 0
code

mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sda5 /dev/sda6


【此命令的意思是建立/dev/md0,若是没有就直接建立/dev/md0,RAID等级为0,由/dev/sda5和
/dev/sd6组成】server

建立完以后对整个格式化,由于此时这两个分区已经在逻辑上属于一个硬盘了,
htm

mke2fs /dev/md0


此时你能够看一下/proc/mdstatrem

md0 : active raid0 sda6[1] sda5[0]
      1975680 blocks 64k chunks


这里的chunks 是磁盘读写的最小数据单位,单位是k,默认是64k
还有默认的数据块儿大小是4096k,因此,每次内核都须要计算读了多少个chunk
可是使用命令
同步

mk2tfs -b 2048 -E stride=32 /dev/md0


能够直接把须要读多少个chunk告诉内核,这样能够大大的
节省CPU的空间,-b是制定一个数据块儿的大小

接下来须要给RAID 0指定一个挂在点挂上就能够了

mkdir /mnt/raid0
mount /dev/nd0 /mnt/raid0


就能够挂载使用了,
使用fdisk -l 能够查看

mdadm -D /dev/md0能够查看详细信息


此时,应该将RAID 0的配置信息保存,以备出现故障,下次能够恢复,

mdadm -D --scan /dev/md0 >> /etc/mdadm.conf


下次能够直接使用

mdadm -A --scan直接挂载
 
如何卸载RAID 0 应该先将RAID 0 的挂载点卸载,即
umount /mnt/raid0

而后使用命令

mdadm -S /dev/md0

将其中止
此时再用 fdisk -l 就看不见了  就完成了完整的卸载
下次再使用时  直接

mdadm -A --scan


,内核会自动读取/etc/mdadm.conf实现挂载所有的软RAID

若是出现意外,RAID 0的一起盘坏了,那么将会丢失所有的数据,因而就出现了RAID 1
先介绍一下RAID 1的原理,RAID 1是将数据流同时存到两个盘上,就像镜子同样,两个盘上都有完整的
数据,即使其中之一不幸挂了,那么照样仍是有完整的数据的,可是,两个盘上存有相同的数据那么
其中一起盘的空间就浪费了,可是它仍是提供了强大的读取能力,虽然写入的速度会和原来同样
活着不如之前,可是仍是有强大的吞吐量
那么要建立一个大小为2G的RAID 1 那么久须要两个大小同为2G的盘,也就是两个同为2G大小的分区来
实现软RAID 1
首先仍是须要两个大小为2G的分区,系统类型仍是
Linux raid autodetect
重读分区

partprobe /dev/sda


分完区后格式化

mkfs.ext3 /dev/sda7 
mkfs.ext3 /dev/sda8


而后就能够建立软RAID 1了

mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sda7 /dev/sda8


此时再将这个总体格式化
mkfs.ext3注意格式化是要保持一致
建立挂载点

mkdir /mnt/raid1


挂载RAID1

mount /dev/md1 /mnt/raid1


此时就可使用了
能够cd /mnt/raid1检测 ls -l  会看到

drwx------ 2 root root 16384 07-30 17:00 lost+found


fdisk -l  也能够看到

此时记得保存其相关信息

mdadm -D --scan /dev/md1 >> /etc/mdadm.conf


卸载的步骤与卸载RAID 0 同样,
下次使用只须要

mdadm -A --scan 便可挂载所有的RAID设备


若是出现意外RAID虽然也能够正常工做,可是它是工做在跛脚的状态下的,此时很容易形成另外一块盘的
损坏,那么就须要给它添加一个备用的盘,软raid也同样,须要一个备用的分区去作储备
那么再分一个与前两个相同的分区,系统类型依然是fd
分区完成后重读分区表,而后格式化成与RAID 1相同的文件系统而后
咱们就模拟一个分区坏了,用命令

mdadm --fail /dev/md1 /dev/sda7 ,模拟md1下sda7坏掉了


此时就须要刚才那个分区来用了,
先将好的盘安装好以后再一处坏的盘,避免次生危害

mdadm --add /dev/md1 /dev/sda9【安装完成以后它会自动与另外一块盘同步】



移除坏的盘:

mdadm --remove /dev/md1 /dev/sda7



因为RAID 0与RAID 1都有不足之处,全部都存在必定的风险,因此将两种方法组合起来将会减少必定的
风险,并能提供很优越的读写性能,与强大的吞吐量,实现的方法就是用RAID 0作中间层提升读写的
能力,用RAID 1作底层提供容错的能力,这样就下降了丢失所有数据的风险


实现软RAID 10是要保证RAID 0 与RAID 1没有挂载就是出去卸载状态的

mdadm -C /dev/md10 -a yes -l 10 -n 2 /dev/md0 /dev/md1


这样既可实现软RAID 10了
此时不须要格式化了
直接挂载就能够了
先创建挂载点

mkdir /mnt/raid10


挂载

mount/dev/md10 /mnt/raid10


即实现了软RAID 10

此时应先保存配置信息至

mdadm -D /dev/md10 >> /etc/mdadm.conf


卸载的方法与前两种同样
从新装载也于前面相同

mdadm -A --scan既可


如此就实现以上三种软RAID

RAID是面试时的人们话题,因此须要熟记!!! 下面就尝试一下实现RAID 5吧 方法基本相似