huangzonggui 2019-11-12
RAID——独立磁盘冗余阵列(Redundant Array of Independent Disks),原本叫做廉价磁盘冗余阵列。RAID 的基本思想是将多个容量较小、相对廉价的磁盘进行有机组合,从而以较低的成本获得与昂贵大容量磁盘相当的容量、性能、可靠性。随着磁盘成本和价格的不断降低, RAID 可以使用大部分的磁盘, “廉价” 已经毫无意义。所以RAID咨询委员会使用“独立”代替“廉价”。
RAID的种类目前来说使用的较多的是RAID0、RAID1、RAID5、RAID6。RAID的初心是为大型服务器提供高端的存储功能和冗余的数据安全,但RAID0显然是不符合该要求的,因为RAID0是为了极大程度地提高数据读写(I/O)的效率和硬盘的使用率,因此其原理是同时向多个磁盘中同时写入信息,但是不保证数据的安全可靠性,有一块磁盘挂了就无法导致数据丢失,适用于仅仅只需要高读写能力的场景,而后面的类型对于数据的安全与可靠性都有了明显的改善与加强。
RAID1——镜像复制,使用两块或以上的磁盘(一般是偶数块)进行读写,向一块磁盘中写入信息,并且复制一份到另一块磁盘中,这样保证了数据的可靠读写,两者互不影响,但是使用率只有原本资源的一半,所以是可靠性较强但资源耗费也是比较大的。
说白了,RAID0是只在乎速度,而RAID1考虑的是安全。而RAID5则是由三块磁盘构成,凭借算法进行奇偶差错校验来确保数据的可靠性的同时兼顾磁盘使用率,其允许一块磁盘挂掉,但是在修复重建数据的时间段中不可以再有磁盘损坏,否则数据仍然会丢失。
RAID6则是基于RAID5的基础上进行双重校验以保证两块磁盘挂掉的情况下数据仍然不会丢失。但是其读写性能就比较低了尤其是磁盘损坏的时候,读写速度将急剧下降,而且价格方面也是较其他而言更加昂贵。
下面对RAID0进行配置的实验操作:
[ ~]# 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 [ ~]# 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. 正在同步磁盘。 [ ~]# 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. 正在同步磁盘。 //查看分区是否正确 [ ~]# 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
[ ~]# 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. [ ~]# lsblk /dev/md0 //查看概要信息的确是RAID0 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT md0 9:0 0 40G 0 raid0 [ ~]# 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 [ ~]# mount /dev/md0 /mnt [ ~]# 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的设置操作。