linux中软RAID制作方法
【操作系统版本:】红帽6.3
提示:在linux中磁盘设备可以在/dev/目录中找到
其中IDE接口的硬盘在该目录中以hd的文件名开头
SATA接口的硬盘在该目录中以sd的文件名开头
SCSI接口的硬盘在该目录中以sd的文件名开头
USB接口类型的磁盘在该目录中以sd的文名开头
【使用相关命令】
【fdisk】:磁盘管理,分区命令
【mdadm】:软RAID制作命令(支持将任何块设备做成RAID)
一、创建软RAID
注意:做成RAID要使用很多磁盘,本文档为了方便模拟,只添加了一块磁盘,在磁盘中创建分区,然后对分区进行RAID的制作。这样做只是为了方便演示,在实际中,使用一块磁盘由分区创建的软RAID是没有任何以意义,并且也不能提高文件的存储以及读取速度,因为,一块磁盘的转速是固定的,如果磁盘坏了,你在该磁盘中创造的软RAID中使用的备份都会同时损坏。
前提:先准备一块硬盘
如图,这里已经准备好了一块硬盘sdb已经再/dev/下面读取出来了。
【示例一:创建一个由两个分区组成的20G的RAID0】
如下图RAID0模型图如下:
注意:根据RAID0的结果,首先需要准备两个10G大小的分区。这一创建的RAID0就能达到20G
首先:创建两个10G大小的分区在sdb磁盘中
#fdisk /dev/sdb
可以进入sdb磁盘的分区管理模式
输入p可以查看磁盘分区信息
由于这里改磁盘还没做分区,就先创建一个扩展分区,将分区大小指定为磁盘的全部大小
输入:n
这里提示是输入e创建扩展分区输入p是创建主分区
输入:e
由于磁盘中最多可创建4个主分区,所有为了能创建扩展分区,需要用16个字节来表示一个扩展分区。
输入:1
这里时输入分区的起始柱面,这里提示默认值是1,可以输入1也可直接按回车键
输入:1
这里是输入磁盘的结束柱面,为了充分利用磁盘就将全部柱面都分割个扩展分区,这里提示的默认值是13054,可以输入13054也可以直接回车
直接回车
看到这里,又回到了刚开始的操作模式,现在可以使用p查看详细信息
输入:p
刚刚创建的扩展分区大小就已经在这里显示出来了。
那么接下来就可以在扩展分区中创建分区了
输入:n
这里刚才那个e就没了,因为一个磁盘上只能创建一个扩展分区的引用地址。那么现在的L就表示在刚才创建的扩展分区引用地址中创建扩展分区,注意:扩展分区的编号默认是从5开始。
输入:l
这里指定扩展分区的起始柱面:为了防止出现磁盘碎片,建议直接回车
回车
这里输入扩展分区的结束柱面,由于按照柱面不好确定分区的大小可以直接使用+10G来指定分区创建为10G的大小
输入:+10G
这可以使用p查看创建后的分区情况
输入p
接下来继续和上面一样创建第二个10G的分区。
现在就是要调整分区类型了,由于软RAID的创建必须使用Linux raid auto类型,这里可以输入t来调整分区类型
输入:t
这里是说,输入要调整分区类型的编号即,你刚刚已经创建好了的分区类型的编号,
输入:5
这里是输入类型编号,如果不知道类型编号可以输入l来查看
接下来输入fd修改类型
输入:fd
输入p可以查看修改后的结果
下面继续修改sdb6的分区类型
这里已经修改完成,输入w保存退出
输入:w
接下来通知内核重读sdb的分区表
输入:partprobe/dev/sdb
为了验证结果可以查看/proc/partitions文件来验证
输入:cat /proc/partitions
这里已经可以看到sdb5和sdb6了
输入:mdadm -C /dev/md0 -l 0 -a yes -n 2 /dev/sdb5 /dev/sdb6
这里显示创建成功:
输入:cat /proc/mdstat可以验证
这里RAID0的设备已经创建完成,要想使用需要在其设备上创建文件系统。
注意:由于此次sdb5和sdb6已经组成了一个RAID0设备md0,那么创建文件系统就要在md0上创建文件系统
输入:mke2fs -j/dev/md0
为md0创建文件系统
这里文件系统已经创建完成,要想使用就挂载/dev/md0即可
输入:fdisk -l 可以查看md0的磁盘信息
这里已经显示为21.5G了,那么此时就创建完成了。由于磁盘分区中是以柱面来分配的,说以这里不能完全保证创建刚好的是20G。大小有误差.
注意,对于创建RAID0中的两个分区sdb5和sdb6其中一个只要损坏,那么存放在由sdb5和sdb6组成的RAID0设备md0就无法继续使用。因为RAID0不具备冗余能力
【示例二:创建一个2G的RAID1】
分析:由于要创建的是一个2G的RAID1根据RAID1的构成结构,我们需要两块2G的硬盘才能组成一个2G的RAID1
如下图:RAID1模型
为了演示,
首先,创建两个2G的分区当做磁盘来使用
输入:fdisk/dev/sdb
接下来的创建磁盘的操作在示例一中已经演示过。这里只放截图。
修改分区类型
保存退出
输入:partprobe/dev/sdb
通知内核重读sdb的分区表
这里由于使用的是虚拟机,现在出现了一个错误,目前不清楚,不过可以使用partx来重读
输入:partx –a /dev/sdb
这里的这几个错误不用管,没多大影响,只需要检查看设备是否已经读取出来了
输入:cat /proc/partitions
这里已经显示了,刚才创建的sdb7和sdb8,为了之后做个损坏模拟,我还多创建了一个2G的sdb9
现在来使用mdadm创建RAID1
输入:mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdb7 /dev/sdb8
这里这个输入y确定
输入:y
这里已经显示md1设备已经创建完成。
输入:cat /proc/mdstat
验证
这里已经显示md1是有sdb8和sdb9创建。
输入:mke2fs -j /dev/md1
为设备创建文件系统(即格式化)
这里已经格式化完成。到这里一个2G的RAID1已经创建成功。可以挂载使用了。
输入:fdisk -l
可以查看md1设备详细信息
这里可以看到使用两个2G大小的sdb7,sdb8创建的RAID1的容量只有2G因为,RAID1中需要使用一个相同大小的磁盘来做备份。
【演示RAID1中一个磁盘的模拟损坏】
上面已经创建好了一个md0和md1的RAID设备,
现在挂载md1
输入:mount /dev/md1 /ftpftp/gandian/gz1
已经将md1设备挂载到/ftpftp/gandian/gz1目录下面了
输入:ls /ftpftp/gandian/gz1
查看该目录
输入:cp /etc/inittab /ftpftp/gandian/gz1/
拷贝一个文件到inittab到gz1目录中
输入:mdadm --detail /dev/md1
可以查看RAID1设备md1的构成信息
在这里可以看到sdb7和sdb8都是active可以使用状态。
现在可以模拟损坏sdb8后看md1是否依然可以使用
输入:mdadm /dev/md1 -f /dev/sdb8
这里显示sdb8已经模拟损坏
输入:mdadm--detail /dev/md1
这里已经看到sdb8已经损坏,并且目前工作的磁盘只有sdb7
使用cd/ftpftp/gandain/gz1/进入md1的挂载目录查看文件
输入:cd/ftpftp/gandian/gz1/
输入:ls -l
这里依然可以使用,这就是RAID1的冗余能力,当一块硬盘出现错误后,文件依然可以使用,但是如果现在不及时替换坏掉的硬盘那么当另外一块硬盘坏掉后就无法访问文件了。
在实际中,如果是真正的硬盘只需要将该硬盘拔掉后替换一块一模一样大小的新硬盘就ok了,由于现在使用的是软件模拟。那么替换硬盘的方法如下:
输入:mdadm /dev/md1 -r /dev/sdb8
可以拿走已经损坏的sdb8磁盘
输入:mdadm --detail /dev/md1
查看md1的RAID信息
这里已经看到,只有一块磁盘sdb7在使用。
现在替换新的硬盘,使用之前已经创建好了的sdb9
输入: mdadm /dev/md1 -a /dev/sdb9
为md1设备添加一块硬盘
输入:mdadm --detail /dev/md1
再次查看mdadm的信息
这里可以看到sdb9正在自动同步数据
输入:cat /proc/mdstat
可以查看同步进度。
由于本人电脑太快,同步比较快当我输入命令后设备已经同步完成。
再次输入:mdadm --detail /dev/md1
查看md1信息
已经可以看到sdb9可以使用了。
那么现在md1设备损坏后替换硬盘的工作就修补完成。
如果此时,你再损坏sdb7,文件依然可以访问
附加:--------------------------------
mdadm命令使用
【mdadm】将任何块设备做成RAID
模块化的命令:
创建模式
【-c】
专用选项
【-l】:级别(即RAID的级别类型)
【-n】:设备个数
【-a{yes|no}】:自动为其创建设备文件
【-c】:指定CHUNK大小(数据块大小)2^n 默认大小为64k
【-x】:指定空闲盘个数
例如:
mdadm -C /dev/md0 -a yes -l 0 -n 2/dev/sdb{5,6}
管理模式
不指定模式直接使用
【--add】【--del】等表示管理
默认mdadm工作在管理模式下
【-D】【--detail】查看RAID阵列信息
【-F】【--fail】【--set-faulty】将磁盘模拟损坏
例如:mdadm /dev/md# --fail /dev/sdb7(将md#中sdb7模拟为损坏)
mdadm /dev/md1 -r /dev/sdb7 (可以将已损坏的磁盘删除)
【-S】【--stop】停止阵列
例如:mdadm -s /dev/md#
监控模式
【-F】
增长摸是
【-G】
装配模式
【-A】
【mdadm -D/dev/md# 】查看RAID阵列的详细信息
--detail也行
【mdadm -D--scan】可以查看当前设备上所有md设备的信息,
如果将信息保存在【mdadm-D --scan > /etc/mdadm.conf】中,那么下次启动就不必要指定设备的磁盘了。
安装软RAID必备条件:
1、需要内核模块:md:
2、linux上创建工具:mdadm