RAID——独立磁盘冗余阵列(Redundant Array of Independent Disks),本来叫作廉价磁盘冗余阵列。RAID 的基本思想是将多个容量较小、相对廉价的磁盘进行有机组合,从而以较低的成本得到与昂贵大容量磁盘至关的容量、性能、可靠性。随着磁盘成本和价格的不断下降, RAID 可使用大部分的磁盘, “廉价” 已经毫无心义。因此RAID咨询委员会使用“独立”代替“廉价”。linux
RAID的种类目前来讲使用的较多的是RAID0、RAID一、RAID五、RAID6。RAID的初心是为大型服务器提供高端的存储功能和冗余的数据安全,但RAID0显然是不符合该要求的,由于RAID0是为了极大程度地提升数据读写(I/O)的效率和硬盘的使用率,所以其原理是同时向多个磁盘中同时写入信息,可是不保证数据的安全可靠性,有一块磁盘挂了就没法致使数据丢失,适用于仅仅只须要高读写能力的场景,然后面的类型对于数据的安全与可靠性都有了明显的改善与增强。算法
RAID1——镜像复制,使用两块或以上的磁盘(通常是偶数块)进行读写,向一块磁盘中写入信息,而且复制一份到另外一块磁盘中,这样保证了数据的可靠读写,二者互不影响,可是使用率只有本来资源的一半,因此是可靠性较强但资源耗费也是比较大的。shell
说白了,RAID0是只在意速度,而RAID1考虑的是安全。而RAID5则是由三块磁盘构成,凭借算法进行奇偶差错校验来确保数据的可靠性的同时兼顾磁盘使用率,其容许一块磁盘挂掉,可是在修复重建数据的时间段中不能够再有磁盘损坏,不然数据仍然会丢失。安全
RAID6则是基于RAID5的基础上进行双重校验以保证两块磁盘挂掉的状况下数据仍然不会丢失。可是其读写性能就比较低了尤为是磁盘损坏的时候,读写速度将急剧降低,并且价格方面也是较其余而言更加昂贵。服务器
下面对RAID0进行配置的实验操做:less
[root@lokott ~]# lsblk //查看磁盘概要信息 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 40G 0 disk ├─sda1 8:1 0 6G 0 part /boot ├─sda2 8:2 0 20G 0 part / ├─sda3 8:3 0 4G 0 part [SWAP] ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 10G 0 part /home sdb 8:16 0 20G 0 disk sdc 8:32 0 20G 0 disk sdd 8:48 0 20G 0 disk sde 8:64 0 20G 0 disk sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64 [root@lokott ~]# fdisk /dev/sdb //设置b磁盘分区格式为fd 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 Device does not contain a recognized partition table 使用磁盘标识符 0x363a740e 建立新的 DOS 磁盘标签。 命令(输入 m 获取帮助):n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): Using default response p 分区号 (1-4,默认 1): 起始 扇区 (2048-41943039,默认为 2048): 将使用默认值 2048 Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039): 将使用默认值 41943039 分区 1 已设置为 Linux 类型,大小设为 20 GiB 命令(输入 m 获取帮助):t 已选择分区 1 Hex 代码(输入 L 列出全部代码):fd 已将分区“Linux”的类型更改成“Linux raid autodetect” 命令(输入 m 获取帮助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。 [root@lokott ~]# fdisk /dev/sdc 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 Device does not contain a recognized partition table 使用磁盘标识符 0x1d0b68fc 建立新的 DOS 磁盘标签。 命令(输入 m 获取帮助):n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): Using default response p 分区号 (1-4,默认 1): 起始 扇区 (2048-41943039,默认为 2048): 将使用默认值 2048 Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039): 将使用默认值 41943039 分区 1 已设置为 Linux 类型,大小设为 20 GiB 命令(输入 m 获取帮助):t 已选择分区 1 Hex 代码(输入 L 列出全部代码):fd 已将分区“Linux”的类型更改成“Linux raid autodetect” 命令(输入 m 获取帮助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。 //查看分区是否正确 [root@lokott ~]# fdisk -l /dev/sd[b-c] 磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x363a740e 设备 Boot Start End Blocks Id System /dev/sdb1 2048 41943039 20970496 fd Linux raid autodetect 磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x1d0b68fc 设备 Boot Start End Blocks Id System /dev/sdc1 2048 41943039 20970496 fd Linux raid autodetect
[root@lokott ~]# mdadm -C -v /dev/md0 -l0 -n2 /dev/sd[b-c] //mdadm命令进行RAID磁盘管理 mdadm: chunk size defaults to 512K //md0是本身取的RAID0的设备名称,-l是level,0表示的是RAID0 mdadm: partition table exists on /dev/sdb //1 就是RAID1,5就是RAID5,-n表示须要几块磁盘,后面的加的 mdadm: partition table exists on /dev/sdb but will be lost or //就是磁盘数量 meaningless after creating array mdadm: partition table exists on /dev/sdc mdadm: partition table exists on /dev/sdc but will be lost or meaningless after creating array Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started. [root@lokott ~]# lsblk /dev/md0 //查看概要信息的确是RAID0 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT md0 9:0 0 40G 0 raid0 [root@lokott ~]# mkfs -t xfs /dev/md0 meta-data=/dev/md0 isize=512 agcount=16, agsize=654720 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=10475520, imaxpct=25 = sunit=128 swidth=256 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=5120, version=2 = sectsz=512 sunit=8 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@lokott ~]# mount /dev/md0 /mnt [root@lokott ~]# df -hT 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/sda2 xfs 20G 4.4G 16G 22% / devtmpfs devtmpfs 474M 0 474M 0% /dev tmpfs tmpfs 489M 0 489M 0% /dev/shm tmpfs tmpfs 489M 7.1M 482M 2% /run tmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/sda5 xfs 10G 37M 10G 1% /home /dev/sda1 xfs 6.0G 158M 5.9G 3% /boot tmpfs tmpfs 98M 4.0K 98M 1% /run/user/42 tmpfs tmpfs 98M 20K 98M 1% /run/user/0 /dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64 /dev/md0 xfs 40G 33M 40G 1% /mnt
其实软RAID的磁盘阵列的设置仍是比较简单的,对于其余类型的RAID的配置的步骤是同样的,固然也但是设置备份,就是在mdadm命令的最后加上-xn (n表示的是备用的磁盘的数量),而后加上设备名称,这里主要是软RAID的设置操做。ide