Raid早期叫廉价冗余磁盘阵列,发展到现在也不廉价了,所以叫独立磁盘冗余阵列,他的主要目的是提高读写性能和容错能力,而RAID的主要思想是把多个相对廉价的硬盘接起来,组成一个硬盘阵列,让操作系统看起来只有一个盘,从而提升磁盘的读写性能以及容错能力.
RAID又分为软RAID和硬RAID,软RAID实际上就是利用软件模拟出RAID,所以软RAID对系统的提升不明显,因为软RAID的控制基于主机上的cpu,他的读写都要经过CPU的控制,而硬RAID基于RAID本身的控制芯片.
而他们又分为RAID0,RAID1,RAID4,RAID5,RAID6,RAID1-0,RAID0-1.
RAID0:
至少需要两块硬盘,他的原理是把计算机原本要储存的一个文件,以一定的原理分成两部分,分别存在两块硬盘上,这样就提升了两倍的读写性能,但是其中一块磁盘坏了,数据就坏了,所以不利于存放重要的数据,建议使用一模一样的盘
RAID1:
至少需要两块硬盘,他的原理是把计算机原本要存储的一个文件,同时存在两块硬盘上,每个硬盘各存一份,这样写性能就降低了一半,但是读性能就提高了一倍,他读数据的时候从两块盘一起读,但这不是他的主要目的,他的主要目的是容错,如果其中的一块盘损坏了,并不影响服务器工作,但是使用率只有50%
RAID4:
至少需要3块盘,计算机把原本要存储的数据通过一定的计算方式分成两部分,分别存在不同的两个磁盘中,第三个磁盘存校验码,所以读写性能都有提升,允许坏一块盘,如果损坏一块数据盘,RAID的控制芯片会根据校验码盘和剩余的一块数据盘计算出损坏的数据.磁盘利用率为(n-1)/n
RAID5:
在RAID4的基础上优化而来,至少三块盘,计算机要存储数据时通过一定的计算方式分别存在三块盘中,而三块盘中又分别存有校验码,任何一块盘损坏了,都可以通过其他剩余的两块盘计算出损坏盘中的数据,提升了读写性能,利用率为(n-1)/n
RAID6:
与RAID5机制相同,但是至少需要4块盘,允许一块盘损坏,利用率为(n-2)/n
2.Linux上实现软磁盘阵列
1.创建RAID1级别的磁盘阵列
a.使用fdisk给磁盘分区,这里分别创建两个10G大小的虚拟盘:
dd if=/dev/zero of=/dev/sdb bs=510 count=1(这里是格式化sdb磁盘,由于笔者之前有用过这个盘,所以先格式化了)
echo -e 'n\np\n1\n \n+10G\nn\np\n2\n \n+10G\nw' | fdisk /dev/sdb
b.格式话完成后,因为我们是创建RAID阵列,所以磁盘的格式要选择为磁盘ID号的fd
c.创建磁盘阵列,这里是最简单的RAID1,没有热备盘
mdadn -C /dev/md0 -n 2 -l 1 /dev/sdb{1,2}
d.创建完成后查看磁盘阵列
mdadm -D /dev/md0
e.为该磁盘阵列创建文件系统
mke2fs -t ext4 /dev/md0
f.挂载该文件系统到/mnt/md0,并查看
mount /dev/md0 /mnt/md0
2.磁盘阵列创建完成了,接下来我们模拟磁盘损坏,看RAID是否有容错能力
a.复制一些文件到/mnt/md0,并模拟/dev/sdb1磁盘损坏,看损坏一块磁盘是否影响元数据
b.模拟磁盘/dev/sdb1损坏
mdadm -f /dev/md0 /dev/sdb1
c.在去看看对数据是否有影响
cd /mnt/md0
ls
d.拔出损坏的磁盘,并查看信息
mdadm -r /dev/md0 /dev/sdb1
mdadm -D /dev/md0
e.插回原磁盘,看是否会自动备份数据
mdadm -a /dev/md0 /dev/sdb1
mdadm -D /dev/md0
注:笔者只是有限,有不对的地方或着写的不好的地方请多多指教.好吧,是我多虑了,也许都没人看...
转载于:https://blog.51cto.com/lidefu/1362502