Chinaunix首页 | 论坛 | 博客
  • 博客访问: 670102
  • 博文数量: 87
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2022
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-23 11:16
个人简介

西邮大三狗!!!

文章分类

全部博文(87)

文章存档

2015年(47)

2014年(40)

分类: 服务器与存储

2014-10-15 14:14:50

RAID的实现:

RAID:廉价冗余磁盘阵列,是将几块硬盘变成一个整体使用

后来因为它失去了原有的廉价目的,变得很昂贵,就更名为

独立冗余磁盘阵列

虽然我们无法实现硬件上得RAID因为实力有限,没有买那些设备,但是我们还是能实现RAID的

下面我们就来看一下如何实现软RAID:

第一:软RAID 0的实现:

首先介绍一下RAID 0 的原理,RAID 0是将一股数据流分成两份分别存在两个盘上,以实现提高一倍性能的

现象,不仅如此,它还提供了很大的吞吐量,下面我们就实现一下软RAID 0

第一首先要创建两个分区【当然大于两个也是可以实现raid 0的】,在创建一个大小为2G的RAID时需要

两个大小各为1G的分区,分区创建完之后记得让内核重读一下分区表,

 
  1. partprobe /dev/sda  
  2.   
  3. [root@server56 raid10]# fdisk /dev/sda  
  4. Command (m for help): n  
  5. First cylinder (7011-15665, default 7011):        
  6. Using default value 7011  
  7. Last cylinder or +size or +sizeM or +sizeK (7011-15665, default 15665): +1G  
  8.   
  9. Command (m for help): t  
  10. Partition number (1-6): 5  
  11. Hex code (type L to list codes): fd  
  12. Changed system type of partition 5 to fd (Linux raid autodetect)  
  13.   
  14. Command (m for help): t  
  15. Partition number (1-6): 6  
  16. Hex code (type L to list codes): fd  
  17. Changed system type of partition 6 to fd (Linux raid autodetect)  
  18.   
  19.    Device Boot      Start         End      Blocks   Id  System  
  20. /dev/sda1   *           1          13      104391   83  Linux  
  21. /dev/sda2              14        5235    41945715   8e  Linux LVM  
  22. /dev/sda3            5236        5300      522112+  82  Linux swap / Solaris  
  23. /dev/sda4            5301       15665    83256862+   5  Extended  
  24. /dev/sda5            5301        5423      987966   fd  Linux raid autodetect  
  25. /dev/sda6            5424        5546      987966   fd  Linux raid autodetect  

Linux raid autodetect是建立软RAID 是需要的系统类型一定记得在分区的时候给需要划分的那两个分区指定成这样的类型,以下是所有可以为其指定的系统类型与系统类型的编号,在指定系统类型的时候只需要输入前面的编号即可

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

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

分区创建完之后记得格式化,为其创建文件系统ext2或ext3,无论你指定怎样的文件系统类型,但是两个分区的文件系统类型必须一样,这样才能保持一致与同步工作 

 
  1. mkfs.ext2 /dev/sda5  
  2. mkfs.ext2 /dev/sda6  

格式化完成之后就可以进行下一步了,建立软RAID 0

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

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

创建完之后对整个格式化,因为此时这两个分区已经在逻辑上属于一个硬盘了,

 mke2fs /dev/md0  

此时你可以看一下/proc/mdstat

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

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

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

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

接下来需要给RAID 0指定一个挂在点挂上就可以了

 
  1. mkdir /mnt/raid0  
  2. 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  

分完区后格式化

 
  1. mkfs.ext3 /dev/sda7   
  2. 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!


阅读(2996) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~