一,什么是raid?
RAID(Redundant Arrays of Independent Disks)中文叫磁盘阵列。
简单来讲就是把很多的硬盘组织在一起来使用。
RAID技术分为几种不同的等级,分别可以提供不同的速度,安全性和性价比。根据实际情况选择适当的RAID级别可以满足用户对存储系统可用性、性能和容量的要求。常用的RAID级别有以下几种:NRAID,JBOD,RAID0,RAID1,RAID10,RAID3,RAID5等。目前经常使用的是RAID5和RAID10。
本文主要介绍常用的RAID0,RAID1,RAID10,RAID4,RAID5
①RAID 0
RAID 0即Data Stripping(数据分条技术)。整个逻辑盘的数据是被分条(stripped)分布在多个物理磁盘上,可以并行读/写,提供最快的速度,但没有冗余能力。我们通过RAID 0可以获得更大的单个逻辑盘的容量,且通过对多个磁盘的同时读取获得更高的存取速度。RAID 0首先考虑的是磁盘的速度和容量,忽略了安全,只要其中一个磁盘出了问题,那么整个阵列的数据都会不保了。
优点:对数据的读写有很大提升
缺点:不提供冗余能力
至少2块磁盘
②RAID 1
RAID 1,又称镜像方式,也就是数据的冗余。在整个镜像过程中,只有一半的磁盘容量是有效的(另一半磁盘容量用来存放同样的数据)。同RAID 0相比,RAID 1首先考虑的是安全性,容量减半、速度不变。
优点:对数据的读取性能提升;具有冗余能力,当磁盘中的一块坏掉后,不会损失任何数据
缺点:对数据的写入的性能下降,空间的利用率低,仅有1/2
所需磁盘数:至少两块
③RAID 10
为了达到既高速又安全,出现了RAID 10(或者叫RAID 0 1),可以把RAID 10简单地理解成由多个磁盘组成的RAID 0阵列再进行镜像。
优点:对数据的读写性能都有很大的提升,并且对数据有冗余能力每一个组的任何一个磁盘损坏不会影响数据的损失,并且更换磁盘修复时,不用遍历整个磁盘
缺点:空间利用率低仅有1/2,同组的磁盘同时损坏时就会造成整个磁盘阵列的数据崩溃
所需磁盘数:至少四个
④RAID 4
在RAID0的基础思想上引入了校验码的概念,也就是拿出一块磁盘来存放校验码,以备磁盘损坏的时候,能通过校验盘来找回数据。
优点:采用校验技术;有一个特定的磁盘作为数据的完全存储,其他的磁盘采用条带技术,进行对数据的读写性能都有提高并且磁盘利用率高,磁盘损坏一个或者是校验盘损坏也不会造成数据的流失,可以重新计算为(n-1)/n(n代表磁盘个数)
缺点:校验码盘访问量大的性能很大程度的牵制着整个磁盘阵列的性能校验码盘很有可能会成为性能的瓶颈,并且修复损坏磁盘的数据的需要遍历整个阵列,修复慢,性能损失大
所需磁盘数:至少三个磁盘
⑤RAID5:
在RADI4基础上的进行了改良,让所有盘都能用来存放校验码。
优点:采用校验技术;与RAID不同的是每个磁盘都是校验盘,轮替的当做校验盘的功能,降低了对单个磁盘的巨大的访问量,使其读写性能在RAID4 的基础上又了提高;与RAID4相同磁盘的损坏个数只能有一个,校验盘损坏也不会造成数据的流失,都可以重新计算
缺点: 修复损坏磁盘的数据的需要遍历整个阵列,修复慢,性能损失大,相对RAID4有很大的改善
需要磁盘数:至少三块
二,RAID有硬件和软件实现的方式,下面为大家带来软件创建一个可用空间为5G的RAID1设备的步骤:
工具:mdadm模式化工具
命令: 命令的语法格式:madadm [mode] <raiddevice> [optiongs] <component-devices>
支持的RAID级别:LINEAE,RAID0,RAID1,RAID4,RAID5,RAID6,RAID10
模式:
创建:-C
装配:-A
监控:-F
管理:-f, -r,-c
<raiddevice>:/dev/md#
<component-devices>:任意块设备
-C:创建模式
-n #:使用#个快设备来创建此RAID
-l #:指明要创建的RAID的级别
-a {yes|no}:自动创建目标RAID设备的设备文件
-c CHUNK_SIZE:指明块大小
-x #:指明空闲盘的个数
-D:显示raid的详细信息:mdadm -D /dev/md#
管理模式:
-f:标记制定磁盘为损坏
-a:添加磁盘
-r:移除磁盘
观察md的状态:
cat /proc/mdstat
停止md设备:
mdadm -S /dev/md#
环境:虚拟机下的CentOS 6.8 64位
[root@totooco6 ~]# cat /etc/issue CentOS release 6.8 (Final) Kernel \r on an \m
这里要用到的磁盘是sdb,sdc,sdd
[root@totooco6 ~]# fdisk -l | grep sd Disk /dev/sda: 16.1 GB, 16106127360 bytes /dev/sda1 * 1 64 512000 83 Linux /dev/sda2 64 1959 15215616 8e Linux LVM Disk /dev/sdb: 5368 MB, 5368709120 bytes Disk /dev/sdc: 5368 MB, 5368709120 bytes Disk /dev/sdd: 5368 MB, 5368709120 bytes
用fdisk工具分区,设置分区类型id为fd
[root@totooco6 ~]# fdisk -l | grep sd Disk /dev/sda: 16.1 GB, 16106127360 bytes /dev/sda1 * 1 64 512000 83 Linux /dev/sda2 64 1959 15215616 8e Linux LVM Disk /dev/sdb: 5368 MB, 5368709120 bytes /dev/sdb1 1 652 5237158+ fd Linux raid autodetect Disk /dev/sdc: 5368 MB, 5368709120 bytes /dev/sdc1 1 652 5237158+ fd Linux raid autodetect Disk /dev/sdd: 5368 MB, 5368709120 bytes /dev/sdd1 1 652 5237158+ fd Linux raid autodetect
mdadm -C /dev/md1 -n2 -l1 -ayes -x1 /dev/sd[b,c,d]1
[root@totooco6 ~]# mdadm -C /dev/md1 -n2 -l1 -ayes -x1 /dev/sd[b,c,d]1 mdadm: Note: this array has metadata at the start and may not be suitable as a boot device. If you plan to store '/boot' on this device please ensure that your boot-loader understands md/v1.x metadata, or use --metadata=0.90 Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md1 started.
查看一下创建进度
[root@totooco6 ~]# cat /proc/mdstat Personalities : [raid1] md1 : active raid1 sdd1[2](S) sdc1[1] sdb1[0] 5233024 blocks super 1.2 [2/2] [UU] unused devices: <none>
已经完成,查看详细信息
[root@totooco6 ~]# mdadm -D /dev/md1 /dev/md1: Version : 1.2 Creation Time : Fri Jun 10 11:06:42 2016 Raid Level : raid1 Array Size : 5233024 (4.99 GiB 5.36 GB) Used Dev Size : 5233024 (4.99 GiB 5.36 GB) Raid Devices : 2 Total Devices : 3 Persistence : Superblock is persistent Update Time : Fri Jun 10 11:07:08 2016 State : clean Active Devices : 2 Working Devices : 3 Failed Devices : 0 Spare Devices : 1 Name : totooco6.8:1 (local to host totooco6.8) UUID : 8baef42a:f845df94:9addff79:32cef574 Events : 17 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 33 1 active sync /dev/sdc1 2 8 49 - spare /dev/sdd1
可以看到,raid1已经创建好,由/dev/sd1 /dev/sdc1 /dev/sdd1组成,其中sdd1是空闲盘。下面创建文件系统:
[root@totooco6 ~]# mkfs.ext4 /dev/md1 mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 327680 inodes, 1308256 blocks 65412 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=1342177280 40 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
写入配置文件,不然重启之后会自动命名md1为md127
[root@totooco6 ~]# mdadm -Ds > /etc/mdadm.conf [root@totooco6 ~]# cat /etc/mdadm.conf ARRAY /dev/md1 metadata=1.2 spares=1 name=totooco6.8:1 UUID=36371dde:0ae4fccc:8383159d:5d1b21fd
挂载相应目录
[root@totooco6 ~]# mkdir /md1 [root@totooco6 ~]# mount /dev/md1 /md1 [root@totooco6 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_totooco6-lv_root 13G 744M 12G 7% / tmpfs 497M 0 497M 0% /dev/shm /dev/sda1 477M 28M 425M 7% /boot /dev/mapper/testvg-testlv 2.9G 7.6M 2.7G 1% /users /dev/md1 4.8G 10M 4.6G 1% /md1
为了让开机自动挂载,写入自动挂载文件/etc/fstab
[root@totooco6 ~]# echo /dev/md1 /md1 ext4 defaults 0 0 >> /etc/fstab
好了,文件夹/md1可以正常使用了.
注:本文部分资料和图片来自互联网
原创文章,作者:Net20_totooco,如若转载,请注明出处:http://www.178linux.com/18024