mdadm 用于建设,管理和监控RAID阵列
用法:
mdadm --create device options...
用未使用的设备,创建raid选项,
mdadm --assemble device options...
合并先前创建的raid阵列。
mdadm --build device options...
创建或合并没有元数据的一个raid。
mdadm --manage device options...
对现有阵列进行更改
mdadm --misc options... devices
报告或修改各种MD相关设备的。
mdadm --grow options device
调整以激活的raid阵列
mdadm --incremental device
从一个raid中,添加/删除设备
mdadm --monitor options...
监视一个或多个raid阵列的变化
mdadm device options...
--manage的简写
mdadm --create 主要参数
--auto=yes :决定建立后面接的软体磁盘阵列设备,亦即/ dev/md0的,/ dev/md1上...
--raid-devices=N :使用几个磁盘 (partition) 作为磁盘阵列的设备
--spare-devices=N :使用几个磁盘作用磁盘阵列的备用设备
--level=[015] :设置磁盘阵列的等级,常用0,1,5
mdadm --manage 主要参数
--add :会将后面的设备加入到这个MD中!
--remove :会将后面的设备由这个MD中移除
--fail :会将后面的设备设定成为出错的状态
一、在linux系统中目前以MD(Multiple Devices)虚拟块设备的方式实现软件RAID,利用多个底层的块设备虚拟出一个新的虚拟设备,并且利用条带化(stripping)技术将数据块均匀分布到多个磁盘上来提高虚拟设备的读写性能,利用不同的数据冗祭算法来保护用户数据不会因为某个块设备的故障而完全丢失,而且还能在设备被替换后将丢失的数据恢复到新的设备上.
目前MD支持linear,multipath,raid0(stripping),raid1(mirror),raid4,raid5,raid6,raid10等不同的冗余级别和级成方式,当然也能支持多个RAID陈列的层叠组成raid1 0,raid5 1等类型的陈列,
本文主要讲解用户层mdadm如何管理软件RAID及使用中经常遇到的问题及解决办法.现流行的系统中一般已经将MD驱动模块直接编译到内核中或编译为可动态加载的驱动模块,我们可以在机器启动后通过cat /proc/mdstat看内核是否已经加载MD驱动或者cat /proc/devices是否有md块设备,并且可以使用lsmod看MD是否可以模块加载到系统中.
二、mdadm管理软raid陈列
mdadm程序是一个独立的程序,能完成所有的软件raid管理功能,主要有7种使用模式:
Create
使用空闲的设备创建一个新的阵列,每个设备具有元数据块
Assemble
将原来属于一个阵列的每个块设备组装为阵列
Build
创建或组装不需要元数据的阵列,每个设备没有元数据块
Manage
管理已经存储阵列中的设备,比如增加热备磁盘或者设置某个磁盘失效,然后从阵列中删除这个磁盘
Misc
报告或者修改阵列中相关设备的信息,比如查询阵列或者设备的状态信息
Grow
改变阵列中每个设备被使用的容量或阵列中的设备的数目
Monitor
监控一个或多个阵列,上报指定的事件
如果MD驱动被编译到内核中,当内核调用执行MD驱动时,会自动查找分区为FD(linux raid autodetect格式的磁盘。所以一般会使用fdisk工具将HD磁盘或者SD磁盘分区,再设置为FD的磁盘。
创建新的陈列
mdadm使用--create(或其缩写-C)参数来创建新的陈列并且将一些重要阵列的标识信息作为元数据可以写在每一个底层设备的指定区间
--level(或者其缩写-l)表示阵列的RAID级别
--chunk(或者其缩写-c)表示每个条带单元的大小,以KB为单位,默认为64KB,条带单元的大小配置对不同负载下的阵列读写性能有很大影响
--raid-devices(或者其缩写-n)表示阵列中活跃的设备个数
--spare-devices(或者其缩写-x)表示阵列中热备盘的个数,一旦阵列中的某个磁盘失效,MD内核驱动程序自动用将热备磁盘加入到阵列,然后重构丢失磁盘上的数据到热备磁盘上。
创建一个RAID 0设备: