#yyds干货盘点# linux动态磁盘(raid5)的创建扩容缩容等操作以及各个名词参数的解释,命令详解

知识养成了思想,思想同时又在融化知识。这篇文章主要讲述#yyds干货盘点# linux动态磁盘(raid5)的创建扩容缩容等操作以及各个名词参数的解释,命令详解相关的知识,希望能为你提供帮助。
管理动态磁盘


raid概念 称为独立冗余磁盘阵列
就是一种可以对磁盘进行条带化管理并可以冗余的方法


条带化:
可以将多个硬盘进行并行访问   这是raid里最大的概念
并行就是同一时间一起访问
相对于单个硬盘来说这样可以提高硬盘访问效率   (最小单位为分条)


冗余:
不同的raid有不同的冗余技术
raid1:采用镜像冗余 两个硬盘写入相同的数据   可靠性提高一倍   容量只有50%
raid5:分布式奇偶校验冗余 它采用异或算法 这种算法正向计算和反向计算是可逆的  
raid0:默认不提供数据冗余
raid10:先把硬盘做成几个raid1 在把几个raid1做成raid10
raid50:和raid10类似


raid5冗余
它由三块硬盘组成 ,写入第一个数据时先在每一块硬盘上创建一个分条,三个硬盘上的三个分条就组成一个条带,然后它将写入的数据分成两份二进制数,在第一个分条中写入第一个数据,第二个分条中写入第二个数据,第三个分条中写入两个数据的异或算法值,写入第二个数据时,又在每个硬盘上创建一个分条,然后在第一个分条写入第一个数据,第二个分条这时候用来写入校验值,第三个分条用来写第二个数据,这样子就没有哪一个硬盘时全部储存的校验值,这样子可以让每个硬盘使用率差不多,不会出现热盘问题,当任意一个硬盘出现故障时都可以通过另两个硬盘的数据算出坏掉的那个硬盘的数据


降级
当raid5当中有一块硬盘出现故障 这时候raid5就处于降级状态   这时候数据访问效率会明显下降   硬盘损坏就叫raid降级


容量
raid5 容量只有 n分之n-1 n为硬盘数量
raid1 容量为 2分之n n为硬盘数量


最佳硬盘配组
raid5 8+1   八个数据盘 和 一个校验盘


热备盘
当raid组中有一个硬盘出现故障时 由热备盘去自动替换故障磁盘


raid组重建
热备盘替换时会将损坏的磁盘上的数据进行重新校验或转移到热备盘中 这个过程被称为重构raid组


失效
当raid组中 同时 损坏的硬盘超过允许损坏的硬盘数量后 这时raid组就处于失效状态 数据也会丢失且无法恢复  


崩溃
当raid组正处于重构状态时又损坏一块硬盘导致数据无法在进行重构 这样就处于崩溃状态


raid分为软raid和硬raid
软raid功能更加丰富 但会占用服务器本身资源导致性能一定的下降
硬raid不会影响服务器性能   但是功能比较单一 且需要额外支付人民币


创建raid
首先对每个硬盘进行分一个主分区 把所有硬盘空间都给这个分区   不对每个分区进行格式化 否则会创建失败
mdadm --create /dev/raid名 --level=raid级别 --raid-devices=硬盘数量 硬盘名列表     #在创建时可以设定条带大小分条大小等等 参数可以在帮助文件中查找
  出现array /dev/raid名 /started标识raid创建成功


查看raid详细信息
mdadm --detail /dev/raid名
  可查看raid大小 raid由哪些硬盘组成 哪个硬盘失效 有没有热备盘 热备盘重构进度   失效设备数量   工作设备数量   各个设备的状态   raid对齐方式   chunk大小即条带大小等等


要挂载raid也需要先进行格式化


热备盘添加
mdadm --add /dev/raid名 热备盘名(就是硬盘名)
  现在再去查看raid详细信息即可看到热备盘被添加到了raid组中


扩充raid组的硬盘数量
mdadm --grow /dev/raid名 --raid-devices=增加后的硬盘数量


热备盘漂移测试
将raid组中的一块活动的磁盘设置成失效状态
  mdadm /dev/raid名 --fail /dev/失效硬盘名
  这时候去看raid详细信息会看到热备盘漂移到了活动设备列表中并且正在重构 rebuild status 为重构进度   state 状态为degraded,recovering 重构状态
将失效的磁盘从raid中删除
  mdadm /dev/raid名 --remove /dev/失效硬盘名
添加新的热备盘




raid5 最少需要三个磁盘
raid10可以损坏两块硬盘 因为进行了两次奇偶校验  


raid10 创建方法
mdadm –create –verbose /dev/md0 –level=10 –raid-devices=4 /dev/sd[bcde]1 –spare-devices=1 /dev/sdf1




mdadm –detail /dev/md0
的输出应如下所示:


Used Dev Size表示阵列所使用的每一块磁盘的容量。


Array Size表示阵列的整体大小。RAID 10阵列的大小通过(N*C)/M计算,其中N是活跃磁盘的数目,C是每个活跃磁盘的容量,M是每一个镜像中磁盘的数目。在本文的情形下,这个值等于(4*8GiB)/2 = 16GiB。


Layout是整个数据布局的详细信息。可能的布局数值如下所示。


  n(默认选项):代表就近(near)拷贝。一个数据块的多个拷贝在不同磁盘里有相同的偏移量。这种布局提供和RAID 0阵列相似的读写性能。


  o代表偏移量(offset)拷贝。块并不是在条带里面复制的,而是整个条带一起复制,但是循环会打乱,所以同一个分区中复制的块会出现在不同的磁盘。因此,一个块的后续拷贝会出现在下一个磁盘中,一个块接着一个块。为了在RAID 10阵列中使用这种布局,在创建阵列的命令中添加--layout=o2选项。


  f代表远端(far)拷贝(多个拷贝在不同的磁盘中具有不同的偏移量)。这种布局提供更好的读性能但带来更差的写性能。因此,对于读远远多于写的系统来说是最好的选择。为了在RAID 10阵列中使用这种布局,在创建阵列的命令中添加--layout=f2。


  跟在布局选项n、f和o后面的数字代表所需的每一个数据块的副本数目。默认值是2,但可以是2到阵列中磁盘数目之间的某个值。提供足够的副本数目可以最小化单个磁盘上的I/O影响。
  Chunk Size,参考Linux RAID wiki的说明,是写入磁盘的最小数据单元。最佳的chunk大小取决于I/O操作的速率和相关的文件大小。对于大量的写操作,通过设置相对较大的chunk可以得到更低的开销,但对于主要存储小文件的阵列来说更小的chunk性能更好。为了给RAID 10指定一个chunk大小,在创建阵列的命令中添加--chunk=desiredchunksize。


Chunk Size,参考Linux RAID wiki的说明,是写入磁盘的最小数据单元。最佳的chunk大小取决于I/O操作的速率和相关的文件大小。对于大量的写操作,通过设置相对较大的chunk可以得到更低的开销,但对于主要存储小文件的阵列来说更小的chunk性能更好。为了给RAID 10指定一个chunk大小,在创建阵列的命令中添加--chunk=desiredchunksize。


文件系统:就整体而言,XFS据说是最好的,当然EXT4也是不错的选择。


最佳布局:远端布局能提高读性能,但会降低写性能。


副本数目:更多的副本能最小化I/O影响,但更多的磁盘需要更大的花费。


硬件:在相同的环境下,SSD比传统(机械旋转)磁盘更能带来出性能提升


【#yyds干货盘点# linux动态磁盘(raid5)的创建扩容缩容等操作以及各个名词参数的解释,命令详解】


    推荐阅读