Loading... <p>写在前面–命令总览:创建RAID:mdamd -C [-l级别 -n盘数量 -cchunk -a是否询问]</p> <p>查看RAID: mdadm –D 停止RAID:mdadm –S 管理RAID:-f标记损坏 -r删除 -a添加</p> <p>watch 文件:/proc/mdstat 操作简要流程在尾部</p> <p> </p> <p style="text-align:center"><strong>RAID</strong><strong>各</strong><strong>级</strong><strong>特性</strong></p> <p>RAID全称为独立磁盘冗余阵列(Redundant Array of Independent Disks),基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵的硬盘。</p> <p> </p> <p>RAID优点如下:</p> <p>把多块硬盘组合成更大的硬盘当做一块硬盘使用</p> <p>提高IO能力:磁盘并行读写</p> <p>提高耐用性:通过磁盘冗余来实现</p> <p>拥有独立内存和自我供电能力,在突然断电时能靠电池把内存中的数据写入磁盘,一定程度上防止数据丢失。</p> <p> </p> <p>RAID的实现方式:</p> <p>外接式磁盘阵列:通过扩展卡提供适配能力</p> <p>内接式RAID:主板集成RAID控制器</p> <p>上述两种方式:RAID配置在BIOS中</p> <p>software RAID:但现在几乎没人用了</p> <p> </p> <p>RAID级别:level,多块磁盘组织在一起的工作方式不同,而不是性能好坏之分</p> <p>单一类型:</p> <p><strong>RAID-0</strong>:条带卷。chunk</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180710-55.png" title="1450611463862467.png" alt="搜狗截图20151220180904.png" /></p> <p>假如,有两块硬盘A和B,把数据存储到这两块硬盘上。就把数据切割成到四数据块,把数据块1存储到A盘上,数据块2存储到B盘上,把数据块3再存储到A盘上,把数据块4存储到B盘上。这样A和B盘可以同时存储,整个数据存储的时间就减半了。相同的,读取时从两盘一起读数据,读取的时间也减半了。</p> <p>但是,假如一块磁盘坏掉的可能性为1/4,那么两块盘坏掉一块的概率就为1/2,坏掉任何块盘都会导致整个数据的损坏,所以使用磁盘越多,虽然IO能力越强,但风险也越大。上述数据块1,数据块2等称为chunk。这种方式一般存放不是很重要的数据。</p> <p>特性:</p> <p>读写能力提升</p> <p>可用空间:n*min 假如有三块硬盘分别为10G,12G,15G 大小,可用空间为3x10G=30G。</p> <p>无容错(冗余)能力,反而增加风险</p> <p>需要磁盘数量:2块以上</p> <p> </p> <p><strong>RAID-1</strong>:镜像卷。</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180710-74.png" title="1450611491964971.png" alt="搜狗截图20151220181322.png" /></p> <p>把数据分别写入A和B两块盘内,相当于把数据存了两份,这两个盘内的数据完全一样。这样,即便有一块盘坏掉,另一块盘也能保存好完成数据。读取是从两块盘一起读,所以读取能力上升。但是写入数据时需要把数据写两遍,所以写入能力下降。</p> <p>特性:</p> <p>写性能下降</p> <p>读性能提升</p> <p>可用空间:1*min,只有一块盘有用,其他盘只是做备份</p> <p>有容错能力</p> <p>最少磁盘数:2</p> <p> </p> <p><strong>RAID-4</strong>:校验盘技术。假如有四块盘,拿三块盘A,B,C分别存储小数据块chunk,拿最后一块盘D做校验盘,存储前面三块盘数据的校验码(校验码可以理解为前三块盘数据的总和但占用空间却没增加)。这样就允许坏一块盘,无论任何一块盘坏掉,通过另外三块盘都可以找回丢失的数据。但是校验盘D存储数据多,压力大,而且前ABC三块盘任何一块坏掉,校验盘D就不得不扛起那块坏掉的盘的工作,压力很大,所以坏掉的可能性最大。所以通常就为校验盘D做一块备胎盘E,E时刻监视D的一举一动,哪一天D坏掉了,备胎E就会自动自告奋勇,挑起大梁。</p> <p><strong>RAID-5</strong>:三块盘轮流做校验盘。</p> <p>比如第一轮存储把chunk1存储到A上,chunk2存储到B上,chunk3存储到C上,校验码存储到D上。第二轮存储校验码存到C上,chunk存储到ABD上,第三轮存储把校验码存储到B上,chunk存储到ACD上,第四轮把校验码存储到A上,以此类推。这样就不会有哪一块盘的压力特别大了。</p> <p>读写性能提升</p> <p>可用空间:n-1,相当于一块拿来做校验盘</p> <p>容错能力:1块盘</p> <p>最少磁盘数:3</p> <p> </p> <p><strong>RAID-6</strong>:</p> <p>拿两个盘做校验盘,这样可以允许坏两块磁盘,但效果不如RAID10</p> <p>读写性能提升</p> <p>可用空间:n-2</p> <p>容错能力:2块盘</p> <p>最少磁盘数:4</p> <p> </p> <p><strong>混合类型</strong>:</p> <p><strong>RAID-10</strong>:先做1再做0,先组合下层,才能组合上层</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180710-22.png" title="1450611512945052.png" alt="搜狗截图20151220181853.png" /></p> <p>假如6个盘分成三组,AB为一组,CD二组,EF三组。简称把数据分成三个chunk,每一组一个chunk,</p> <p>读写性能提升。一组拿到chunk后把自己的chunk分别存到A,B盘上,这样A和B就互为镜像了。这样每个小组内都允许坏掉一块盘,比如ACE同时坏掉都没事。</p> <p>可用空间:1/2</p> <p>有容错能力:每组只能坏一块</p> <p>最少磁盘数:4</p> <p><strong>RAID-01</strong>:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180710-64.png" title="1450611523883920.png" alt="搜狗截图20151220182311.png" /></p> <p>例如把6个盘分成两组,ABC为第一组,DEF为第二组。把数据给第一组,再把相同的数据给第二组。第一组拿到数据后把数据切成三个chunk,分别存储到A、B、C、上。第二组拿到数据后也执行与第一组相同的操作。表面看两组互为镜像,但由于组拿到数据后又进行了切割,两个组的切割方式几乎不可能完全相同,所以如果 第一组和第二组都各自坏掉一块盘,数据基本就找不回来了,所以只允许有一组出错,一组内全部坏掉都没事,但不允许两组同时出现坏盘。</p> <p> </p> <p><strong>RAID-50</strong>:至少6块盘,最多坏一个</p> <p>RAID-7:</p> <p> </p> <p><strong>JBOD</strong>:just a bunch of disks</p> <p>最简单的将多块磁盘空间合并成一个大的可用空间</p> <p>可用空间:sum,不论是否一样大</p> <p>无容错能力</p> <p> </p> <p>常用级别:RAID-0,RAID-1,RAID-10,RAID-50,JBDO</p> <p>一般用10,和50,或0,其他不好用</p> <p> </p> <p>centos6上软RAID的实现;</p> <p>结合内核中的md(multi device)</p> <p> </p> <p><strong>mdadm</strong>:模式化工具</p> <p>支持LINEAR, RAID0,RAID4,RAID5,RAID6,RAID10</p> <p>创建:-C 查看 –D 管理-f,-r,-a 停用,删除-S 装配-A 监控-F</p> <p><strong>-C</strong>:创建RAID</p> <p>mdadm –C /dev/md0 –l 5 –n 3 –x 1 –c 128K -a yes /dev/sda{5,6,7}</p> <p> </p> <p style="margin-left: 28px">-n #:使用#块设备创建此RAID</p> <p style="margin-left: 28px">-l #:指明RAID级别</p> <p style="margin-left: 28px">-a {yes,no}:自动创建目标RAID的设备的设备文件</p> <p style="margin-left: 28px">-c chunk_size:指明块大小</p> <p style="margin-left: 28px">-x#:指明空闲盘的个数</p> <p><strong>-D</strong>:显示raid的详细信息</p> <p style="text-indent: 28px">mdadm -D /dev/md0</p> <p>观察md状态:</p> <p style="text-indent: 28px">cat /proc/mdstat</p> <p><strong>watch</strong>命令:</p> <p style="margin-left: 14px">watch –n1 'command'</p> <p style="margin-left: 14px">watch -n1 'cat /proc/mdstat'</p> <p style="text-indent: 28px"> </p> <p>管理模式:</p> <p><strong>-f</strong>:标记磁盘为损坏</p> <p> mdadm /dev/md0 -f /dev/sda6</p> <p><strong>-a</strong>添加磁盘</p> <p> mdadm /dev/md0 -a /dev/sda5</p> <p><strong>-r</strong>移除磁盘</p> <p> mdadm /dev/md0 -r /dev/sda5</p> <p> </p> <p><strong>-S</strong>停止,删除md设备</p> <p>mdadm -S /dev/md0 ———删除md0</p> <p></p> <p><strong>下面</strong><strong>为创</strong><strong>建RAID5的</strong><strong>详细过</strong><strong>程</strong>:</p> <p> [root@localhost ~]# mdadm -C /dev/md0 -l 5 -n 3 -x 1 -c 128K -a yes /dev/sda{7,8,9,10}</p> <p>mdadm: /dev/sda7 appears to contain an ext2fs file system —————-创建/dev/md0</p> <p> size=2099724K mtime=Thu Jan 1 08:00:00 1970</p> <p>mdadm: largest drive (/dev/sda9) exceeds size (2097664K) by more than 1%</p> <p>Continue creating array? y</p> <p>mdadm: Defaulting to version 1.2 metadata</p> <p>mdadm: array /dev/md0 started.</p> <p> </p> <p> [root@localhost ~]# cat /proc/mdstat</p> <p>Personalities : [raid6] [raid5] [raid4]</p> <p>md0 : active raid5 sda9[4] sda10[3](S) sda8[1] sda7[0]</p> <p> 4195328 blocks super 1.2 level 5, 128k chunk, algorithm 2 [3/3] [UUU]</p> <p>unused devices: <none></p> <p>[root@localhost ~]# mke2fs -t ext4 /dev/md0 ———–格式化md0</p> <p>[root@localhost ~]# mkdir /mydata</p> <p>[root@localhost ~]# mount /dev/md0 /mydata</p> <p>[root@localhost ~]# mdadm -D /dev/md0 —-可以看到一共有4块设备组成/dev/sda{7,8,9}和/dev/sda10</p> <p>[root@localhost ~]# mdadm /dev/md0 -f /dev/sda7 ——–把/dev/sda7标记损坏</p> <p>mdadm: set /dev/sda7 faulty in /dev/md0</p> <p>[root@localhost ~]# mdadm -D /dev/md0</p> <p> Number Major Minor RaidDevice State</p> <p> 3 8 10 0 spare rebuilding /dev/sda10</p> <p> 1 8 8 1 active sync /dev/sda8 ——–可看到/dev/sda10自动替换到了</p> <p style="text-indent: 344px">—————————/dev/sda7的位置,正在同步数据</p> <p style="margin-left: 28px;text-indent: 28px">4 8 9 2 active sync /dev/sda9</p> <p> </p> <p> 0 8 7 – faulty /dev/sda7</p> <p>[root@localhost ~]# mdadm /dev/md0 -f /dev/sda8 —–再标记坏一块盘</p> <p>mdadm: set /dev/sda8 faulty in /dev/md0</p> <p>[root@localhost ~]# cd /mydata </p> <p>[root@localhost mydata]# ll</p> <p>总用量 16</p> <p>drwx——. 2 root root 16384 12月 20 17:11 lost+found ————-原来数据还能查看</p> <p>[root@localhost mydata]# mdadm /dev/md0 -r /dev/sda7 ———移除/dev/sda7</p> <p>mdadm: hot removed /dev/sda7 from /dev/md0</p> <p>[root@localhost mydata]# mdadm /dev/md0 -r /dev/sda8</p> <p>mdadm: hot removed /dev/sda8 from /dev/md0</p> <p>[root@localhost mydata]# mdadm -D /dev/md0 ——发现只剩两块盘</p> <p>………………………………………………..</p> <p> Number Major Minor RaidDevice State</p> <p> 3 8 10 0 active sync /dev/sda10</p> <p> 2 0 0 2 removed</p> <p> 4 8 9 2 active sync /dev/sda9</p> <p>[root@localhost mydata]# mdadm /dev/md0 -a /dev/sda7 ——-/dev/sda7加上去</p> <p>mdadm: added /dev/sda7</p> <p>[root@localhost mydata]# mdadm -D /dev/md0 ———-/dev/sda7添加成功</p> <p> Number Major Minor RaidDevice State</p> <p> 3 8 10 0 active sync /dev/sda10</p> <p> 5 8 7 1 spare rebuilding /dev/sda7</p> <p> 4 8 9 2 active sync /dev/sda9</p> <p> </p> <p> </p> <p> </p> <p><strong>下面</strong><strong>为创</strong><strong>建RAID5的</strong><strong>简</strong><strong>要</strong><strong>过</strong><strong>程</strong>:</p> <p>fdisk /dev/sda — 创建4个5G分区—用t,设备号即数字—-把磁盘类型改写fd,RAID用的磁盘类型</p> <p>cat /proc/mdstat ———此文件可查看RAID设备的信息</p> <p>mdadm -C /dev/md0 -a yes -n 3 -l 5 /dev/sda{5,6,7,8,}—– 创建一个名为md0的RAID</p> <p>mke2fs -t ext4 /dev/md0 ————-把RAID格式化成ext4格式</p> <p>mount /dev/md0 /mydata ———-把RAID挂载至 /mydata目录下</p> <p>mount ———-查看是否挂载成功</p> <p>df –lh ———查看磁盘信息</p> <p>blkid /dev/md0 ———–查看md0的信息</p> <p>mdadm -D /dev/md0 ————查看md0的详细信息</p> <p>mdadm /dev/md0 -f /dev/sda5———损坏一块 损坏RAID md0 上的一块盘</p> <p>watch -n1 'cat /proc/mdstat' ———-监控这个文件,随时掌握RAID的信息</p> <p>mdadm -D /dev/md0 ———-查看md0的详细信息</p> <p> </p> <p>mdadm /dev/md0 -f /dev/sda6–再损坏一块盘</p> <p>mdadm -D /dev/md0 —————查看md0的详细信息,发现依然能访问挂载点</p> <p> </p> <p>mdadm /dev/md0 -r /dev/sda5 ——-移除坏掉的盘</p> <p>mdadm /dev/md0 -r /dev/sda6</p> <p>mdadm -D /dev/md0</p> <p> </p> <p>mdadm /dev/md0 -a /dev/sda5 ———给md0加上一块盘</p> <p>mdadm -D /dev/md0 ———–查看md0的状态</p> <p> </p> <p> </p> <p> </p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信