什么是RAID
独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),旧称廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks),简称硬盘阵列。其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。根据选择的版本不同,RAID比单颗硬盘有以下一个或多个方面的好处:增强数据集成度,增强容错功能,增加处理量或容量。另外,磁盘阵列对于电脑来说,看起来就像一个单独的硬盘或逻辑存储单元。分为RAID 0,RAID 1,RAID 1E,RAID 5,RAID 6,RAID 7,RAID 10,RAID 50,RAID 60。
简单来说,RAID把多个硬盘组合成为一个逻辑扇区,因此,操作系统只会把它当作一个硬盘。RAID常被用在服务器电脑上,并且常使用完全相同的硬盘作为组合。由于硬盘价格的不断下降与RAID功能更加有效地与主板集成,它也成为了玩家的一个选择,特别是需要大容量存储空间的工作,如:视频与音频制作。
最初的RAID分成了不同的等级,每种等级都有其理论上的优缺点,不同的等级在两个目标间获取平衡,分别是增加数据可靠性以及增加存储器(群)读写性能。这些年来,出现了对于RAID观念不同的应用。
如何创建软RAID
想要创建RAID,肯定少不了磁盘阵列卡,现在绝大多数服务器都带有这种硬件,创建起来也很简单,傻瓜式操作,只是不同厂商之间肯定会有些不同,不过都是大同小异。但是今天我们要讨论的是在没有磁盘阵列卡的情况下,如何来创建软RAID,现在就来看看吧。
准备
yum install -y parted mdadm
查看磁盘使用情况
fdisk -cul
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders, total 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdc: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders, total 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
开始
为了演示,我在虚拟机里创建了2块2G的硬盘,可以看出分别是sdb和sdc,把这两块硬盘组建成一个软RAID1,操作如下:
fdisk /dev/sdb
Command (m for help): n #输入n,回车
Command action
e extended
p primary partition (1-4)
p #输入p,回车
Partition number (1-4): 1 #输入1,回车
First cylinder (1-261, default 1): #回车
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-261, default 261): #回车
Using default value 261
Command (m for help): t #输入t,回车
Selected partition 1
Hex code (type L to list codes): fd #输入fd,回车
Changed system type of partition 1 to fd (Linux raid autodetect)
Command (m for help): w #输入w,保存并推出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
现在sdb就变成raid类型的硬盘了,可以通过fdisk -cul查看,sdc的操作同上,不再重复演示。
fdisk -cul
Device Boot Start End Blocks Id System
/dev/sdb1 1 261 2096451 fd Linux raid autodetect
/dev/sdc1 1 261 2096451 fd Linux raid autodetect
#如果你是在服务器上直接添加硬盘,还需要执行一条命令
partprobe -a
#这样就不需要重启服务器而让新硬盘加入到战斗当中去了
创建RAID
接下来要做的事情就简单了,只需要把这两块硬盘通过mdadm命令组建成raid1并格式化,再挂载到特定目录即可,操作如下:
#在操作之前先来看看这个命令的参数
-C #创建软件RAID
-l #指定RAID级别
-n #指定磁盘个数
-x #指定备用设备个数
mdadm -C /dev/md1 -l 1 -n 2 /dev/sdb1 /dev/sdc1
mdadm: array /dev/md1 started. #提示你创建成功
#查看刚才创建的md1设备详情
mdadm --detail /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Wed Nov 12 16:19:53 2014 #创建时间
Raid Level : raid1 #RAID级别
Array Size : 2095360 (2046.59 MiB 2145.65 MB) #RAID磁盘空间有多大
Used Dev Size : 2095360 (2046.59 MiB 2145.65 MB)
Raid Devices : 2 #磁盘的个数
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Wed Nov 12 17:19:04 2014
State : clean
Active Devices : 2 #正在活动的磁盘个数
Working Devices : 2 #正在工作的磁盘个数
Failed Devices : 0 #有错误的磁盘个数
Spare Devices : 0 #备用的磁盘个数
Name : server1:1 (local to host server1)
UUID : ae9a70dd:dc2917a7:de515e04:f82950a7
Events : 21
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
格式化与挂载
mkfs.ext4 /dev/md1 #格式化为ext4格式
mkdir /raid1 #创建需要挂载的目录
mount /dev/md1 /raid1 #挂载
#然后将磁盘阵列的设备设置为开机自动挂载
echo "DEVICE /dev/sdb1 /dev/sdc1" > /etc/mdadm.conf
mdadm -Evs >> /etc/mdadm.conf
echo "/dev/md1 /raid1 ext4 defaults 0 0" >> /etc/fstab
到此,全部工作就完成了,搞定,收工!