Part I. RAID基础(引用) RAID 是冗余磁盘阵列(Redundant Array of Inexpensive Disk)的简称。它是把多个磁盘组成一个阵列,当作单一磁盘使用。它将数据以分段(striping)的方式分散存储在不同的磁盘中,通过多个磁盘的同 时读写,来减少数据的存取时间,并且可以利用不同的技术实现数据的冗余,即使有一个磁盘损坏,也可以从其他的磁盘中恢复所有的数据。简单地说,其好处就 是:安全性高、速度快、数据容量大。 磁盘阵列根据其使用的技术不同而划分了等级,称为RAID level,目前公认的标准是RAID 0~RAID 5。其中的level并不代表技术的高低,RAID 5并不高于RAID 4 ,RAID 0并不低于RAID 2 ,至于选择哪一种RAID需视用户的需求而定。下面分别对常用的RAID 0、RAID 1、RAID 5进行简单的介绍。 1.RAID 0 特点:它是将多个磁盘并列起来,成为一个大硬盘。在存取数据时,将数据按磁盘的个数来进行分段,然后同时将这些数据写进这些盘中。在所有的级别中,RAID 0的速度是最快的。但没有数据冗余,阵列中任何一个磁盘坏掉,意味着所有数据丢失。 磁盘利用数:n(假设有n个磁盘)。 配置条件:最低两块磁盘,且分区大小尽量相同。 应用领域:对高磁盘容量及高速磁盘存取有特殊需求,而又不计较其高故障率的工作。当然,如果你正在使用集群,RAID 0 无疑是提高磁盘I/O性能的最好方法,因为在这种情况下,你就不用担心冗余的问题了。 2.RAID 1 特 点:使用磁盘镜像(disk mirroring)的技术,在一个磁盘上存放数据的同时也在另一个磁盘上写一样的数据。因为有了备份磁盘,所以RAID 1的数据安全性在所有的RAID级别上来说是最好的。尽管其写入数据的速度比较慢,但因其数据是以分段的方式作储存,因而在读取时,它几乎和RAID 0有同样的性能。 磁盘利用数:n/2。 配置条件:最低两块磁盘,且分区大小尽量相同。 应用领域:数据库、金融系统等一些对数据有着高可靠性要求的领域。再者就是系统中写数据量比较少,而读数据量又比较多的情况下可以采用这一模式。 3.RAID 5 特点:以数据的校验位来保证数据的安全,但它不是以单独硬盘来存放数据的校验位,而是将数据段的校验位交互存放于各个磁盘上。这样,任何一个磁盘损坏,都可以根据其他磁盘上的校验位来重建损坏的数据。并行读写数据,性能也很高。 磁盘利用数:n-1。 配置条件:最低三块硬盘,且分区大小尽量相同。 应用领域:适合于事务处理环境,例如民航售票处、销售系统等。 Part II. mdadm创建RAID5 RAID级别:5 设备列表: Host:/dev/sda RAID Devices:/dev/sdb /dev/sdc /dev/sdd Spare Devices:/dev/sde 设备准备: 直接使用硬盘硬件设备,不需要分区。 如果要具体使用哪个硬盘的分区做RAID,才需要fdisk特定的分区,并给它指定分区类型:fd。 1>创建raid: mdadm的每个命令都有其简写形式,当然也可以使用shell的正规表达式: #mdadm --create --verbose /dev/md0 --level=raid5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd --spare-devices=1 /dev/sde #mdadm -Cv /dev/md0 -l5 -n3 /dev/sdb /dev/sdc /dev/sdd -x1 /dev/sde #mdadm -Cv /dev/md0 0l5 -n3 /dev/sd[bcd] -x1 /dev/sde 2>格式化raid设备: #mkfs -t ext3 /dev/md0 3>挂载raid设备: #mkdir /mnt/raid #mount -t ext3 /dev/md0 /mnt/raid 4>查看raid设备状态: #mdadm -D /dev/md0 /dev/md0: Version : 00.90.03 Creation Time : Tue Nov 13 10:35:35 2007 Raid Level : raid5 Array Size : 2097024 (2048.22 MiB 2147.35 MB) Device Size : 1048512 (1024.11 MiB 1073.68 MB) Raid Devices : 3 Total Devices : 4 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Tue Nov 13 10:42:34 2007 State : clean Active Devices : 3 Working Devices : 4 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 64K UUID : b5e3276f:ab97e843:e601b1a4:46720384 Events : 0.2 Number Major Minor RaidDevice State 0 8 16 0 active sync /dev/sdb 1 8 32 1 active sync /dev/sdc 2 8 48 2 active sync /dev/sdd 3 8 64 - spare /dev/sde #cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdd[2] sde[3](S) sdc[1] sdb[0] 2097024 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU] unused devices: 说明: sdd[2]:此设备在RAID中的次序。 [3/3]:RAID使用3个设备,当前有3个设备正常运行。当某一个设备出错时将会显示[3/2]。 [UUU]:RAID中所有磁盘运转正常。如果出错则显示[_UU],则说明RAID中第一磁盘fail。 # mdadm -E /dev/sdb /dev/sdb: Magic : a92b4efc Version : 00.90.00 UUID : b5e3276f:ab97e843:e601b1a4:46720384 Creation Time : Tue Nov 13 10:35:35 2007 Raid Level : raid5 Device Size : 1048512 (1024.11 MiB 1073.68 MB) Array Size : 2097024 (2048.22 MiB 2147.35 MB) Raid Devices : 3 Total Devices : 4 Preferred Minor : 0 Update Time : Tue Nov 13 10:54:58 2007 State : clean Active Devices : 3 Working Devices : 4 Failed Devices : 0 Spare Devices : 1 Checksum : c59d3483 - correct Events : 0.2 Layout : left-symmetric Chunk Size : 64K Number Major Minor RaidDevice State this 0 8 16 0 active sync /dev/sdb 0 0 8 16 0 active sync /dev/sdb 1 1 8 32 1 active sync /dev/sdc 2 2 8 48 2 active sync /dev/sdd 3 3 8 64 3 spare /dev/sde 5>mdadm配置文件: mdadm的缺省配置文件为/etc/mdadm.conf。对于阵列而言不是必须的,主要是为了方便阵列的日常管理。 使用配置文件后,我们每次启动RAID时,就不需要再次输入建立RAID时的一大堆的参数。 mdadm.conf文件中要包含两行: 第一行是以DEVICE开头的行,它指明在阵列中的设备列表。 第二行是以ARRAY开头的行,它详细地说明了阵列的名称、模式、阵列中活动设备的数目以及设备的UUID号。 一般会有如下格式: #cat /etc/mdadm.conf =========================================================== DEVICE /dev/sdb /dev/sdc /dev/sdd /dev/sde ARRAY /dev/md0 level=raid5 num-devices=3 spares=1 UUID=b5e3276f:ab97e843:e601b1a4:46720384 ============================================================ 生成方法: #echo 'DEVICE /dev/sd[bcde]' > /etc/mdadm.conf #mdadm -Ds >> /etc/mdadm.conf 或 #echo 'DEVICE /dev/sdb /dev/sdc /dev/sdd /dev/sde' > /etc/mdadm.conf #mdadm -Ds >> /etc/mdadm.conf 6>配置mdadm开机自启动: 使用配置文件后,RAID设备在重启后也可以正常的自动加载,因为系统在开机启动时会自动加载RAID。 #cat /etc/rc.d/rc.sysinit ============================================================================= # RAID setup update_boot_stage RCraid [ -x /sbin/nash ] && echo "raidautorun /dev/md0" | nash --quiet if [ -f /etc/mdadm.conf ]; then /sbin/mdadm -A -s fi ============================================================================= 设备配置文件只能使系统在开机时正常启用RAID设备,但自动挂载RAID设备还是要再修改/etc/fstab #vi /etc/fstab =============================================== /dev/md0 /mnt/raid ext3 defaults 0 0 =============================================== 7>停止与开启RAID设备: 停止: #umount /mnt/raid #mdadm -S /dev/md0 mdadm: stopped /dev/md0 开启: 使用配置文件时: #mdadm -As /dev/md0 mdadm: /dev/md0 has been started with 3 drives and 1 spare. 没有使用配置文件时: #mdadm -A /dev/md0 /dev/sd[bcde] mdadm: /dev/md0 has been started with 3 drives and 1 spare. 8>故障演示 (1)将一个磁盘标记为faulty,模拟硬盘坏损 #mdadm /dev/md0 -f /dev/sdb (2)查看RAID5重建过程 #mdadm -D /dev/md0 /dev/md0: Version : 00.90.03 Creation Time : Tue Nov 13 11:55:59 2007 Raid Level : raid5 Array Size : 2097024 (2048.22 MiB 2147.35 MB) Device Size : 1048512 (1024.11 MiB 1073.68 MB) Raid Devices : 3 Total Devices : 4 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Tue Nov 13 18:21:27 2007 State : clean, degraded, recovering Active Devices : 2 Working Devices : 3 Failed Devices : 1 Spare Devices : 1 Layout : left-symmetric Chunk Size : 64K Rebuild Status : 48% complete UUID : faee3020:14fc3e48:9717e6f5:d7cf7de7 Events : 0.6 Number Major Minor RaidDevice State 4 8 64 0 spare rebuilding /dev/sde 1 8 32 1 active sync /dev/sdc 2 8 48 2 active sync /dev/sdd 3 8 16 - faulty spare /dev/sdb #cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdb[3](F) sde[4] sdd[2] sdc[1] 2097024 blocks level 5, 64k chunk, algorithm 2 [3/2] [_UU] [=================>...] recovery = 88.7% (931664/1048512) finish=0.0min speed=24130K/sec unused devices: (3)查看完成坏损设备后的RAID状态 #mdadm -D /dev/md0 /dev/md0: Version : 00.90.03 Creation Time : Tue Nov 13 11:55:59 2007 Raid Level : raid5 Array Size : 2097024 (2048.22 MiB 2147.35 MB) Device Size : 1048512 (1024.11 MiB 1073.68 MB) Raid Devices : 3 Total Devices : 4 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Tue Nov 13 18:21:59 2007 State : clean Active Devices : 3 Working Devices : 3 Failed Devices : 1 Spare Devices : 0 Layout : left-symmetric Chunk Size : 64K UUID : faee3020:14fc3e48:9717e6f5:d7cf7de7 Events : 0.8 Number Major Minor RaidDevice State 0 8 64 0 active sync /dev/sde 1 8 32 1 active sync /dev/sdc 2 8 48 2 active sync /dev/sdd 3 8 16 - faulty spare /dev/sdb #cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdb[3](F) sde[0] sdd[2] sdc[1] 2097024 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU] unused devices: (4)移除坏损设备 #mdadm /dev/md0 -r /dev/sdb mdadm: hot removed /dev/sdb (5)添加新的设备 #mdadm /dev/md0 -a /dev/sdb mdadm: added /dev/sdb (6)查看最终状态 #mdadm -D /dev/md0 /dev/md0: Version : 00.90.03 Creation Time : Tue Nov 13 11:55:59 2007 Raid Level : raid5 Array Size : 2097024 (2048.22 MiB 2147.35 MB) Device Size : 1048512 (1024.11 MiB 1073.68 MB) Raid Devices : 3 Total Devices : 4 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Tue Nov 13 18:25:44 2007 State : clean Active Devices : 3 Working Devices : 4 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 64K UUID : faee3020:14fc3e48:9717e6f5:d7cf7de7 Events : 0.10 Number Major Minor RaidDevice State 0 8 64 0 active sync /dev/sde 1 8 32 1 active sync /dev/sdc 2 8 48 2 active sync /dev/sdd 3 8 16 - spare /dev/sdb #cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdb[3](S) sde[0] sdd[2] sdc[1] 2097024 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU] unused devices: Part III. mdadm中文man(引用) 基本语法 : mdadm [mode] [options] [mode] 有7种: Assemble:将以前定义的某个阵列加入当前在用阵列。 Build:Build a legacy array ,每个device 没有 superblocks Create:创建一个新的阵列,每个device 具有 superblocks Manage: 管理阵列,比如 add 或 remove Misc:允许单独对阵列中的某个 device 做操作,比如抹去superblocks 或 终止在用的阵列。 Follow or Monitor:监控 raid 1,4,5,6 和 multipath 的状态 Grow:改变raid 容量或 阵列中的 device 数目 可用的 [options]: -A, --assemble:加入一个以前定义的阵列 -B, --build:Build a legacy array without superblocks. -C, --create:创建一个新的阵列 -Q, --query:查看一个device,判断它为一个 md device 或是 一个 md 阵列的一部分 -D, --detail:打印一个或多个 md device 的详细信息 -E, --examine:打印 device 上的 md superblock 的内容 -F, --follow, --monitor:选择 Monitor 模式 -G, --grow:改变在用阵列的大小或形态 -h, --help:帮助信息,用在以上选项后,则显示该选项信息 --help-options -V, --version -v, --verbose:显示细节 -b, --brief:较少的细节。用于 --detail 和 --examine 选项 -f, --force -c, --config= :指定配置文件,缺省为 /etc/mdadm/mdadm.conf -s, --scan:扫描配置文件或 /proc/mdstat以搜寻丢失的信息。配置文件/etc/mdadm/mdadm.conf create 或 build 使用的选项: -c, --chunk=:Specify chunk size of kibibytes. 缺省为 64. --rounding=: Specify rounding factor for linear array (==chunk size) -l, --level=:设定 raid level. --create可用:linear, raid0, 0, stripe, raid1,1, mirror, raid4, 4, raid5, 5, raid6, 6, multipath, mp. --build可用:linear, raid0, 0, stripe. -p, --parity=:设定 raid5 的奇偶校验规则:eft-asymmetric, left-symmetric, right-asymmetric, right-symmetric, la, ra, ls, rs.缺省为left-symmetric --layout=:类似于--parity -n, --raid-devices=:指定阵列中可用 device 数目,这个数目只能由 --grow 修改 -x, --spare-devices=:指定初始阵列的富余device 数目 -z, --size=:组建RAID1/4/5/6后从每个device获取的空间总数 --assume-clean:目前仅用于 --build 选项 -R, --run:阵列中的某一部分出现在其他阵列或文件系统中时,mdadm会确认该阵列。此选项将不作确认。 -f, --force:通常mdadm不允许只用一个device 创建阵列,而且创建raid5时会使用一个device作为missing drive。此选项正相反。 -a, --auto{=no,yes,md,mdp,part,p}{NN}: |
|