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吧 方法基本相似