1、管理软 RAID 磁盘阵列RAID 即廉价冗余磁盘阵列(Redundant Array of Inexpensive Disk),通过 RAID技术将多个磁盘组成一个阵列整体,使用时可作为单个磁盘,不仅可获得更大的磁盘空间,也能够提高读写性能、实现设备冗余(备份) 。Linux 服务器支持以软件控制器的方式来实现对 RAID 阵列的管理。1添加 4 块容量均为 20GB 的 SCSI 磁盘,组建一个 RAID5 软阵列。2格式化软 RAID 设备,并挂载到 /mymd 文件夹。3RAID 设备的解散和重组、故障盘替换、固定配置文件等。1添加 4 块 20GB 的 SCSI 虚拟磁盘1)关闭 R
2、HEL 5 虚拟机,通过“编辑虚拟机设置”添加 4 块新硬盘打开“编辑虚拟机设置”的“硬件”设置窗口,执行 4 遍 “添加”“ 硬盘”“创建一个新的虚拟磁盘”“SCSI”“20GB”的加新硬件操作,完成后的硬盘设备列表如图-1 所示,其中硬盘 2 为上一章实验中添加的/dev/sdb,紧挨着下面的 4 块新建磁盘将对应为 RHEL 5 系统中的/dev/sdc、/dev/sdd 、/dev/sde 、/dev/sdf。图单击确定后,重新打开“编辑虚拟机设置”,新建的 4 块 SCSI 磁盘自动编号为“硬盘 3”、 “硬盘 4”、“硬盘 5”、“硬盘 6”,如图-2 所示。图22)重新开启 RH
3、EL 5 虚拟机,确认新添加的 4 块磁盘执行 fdisk -l,找到新连接的 4 块磁盘 /dev/sdc、/dev/sdd、/dev/sde、/dev/sdf :1. rootsvr5 # fdisk -l2. Disk /dev/sda:85.8 GB,85899345920 bytes /系统装机时的硬盘3. 255 heads,63 sectors/track,10443 cylinders4. Units = cylinders of 16065*512=8225280 bytes5.6. Device Boot Start End Blocks Id System7. /dev/
4、sda1 *11310439183 Linux8. /dev/sda2 1425632048287583 Linux9. /dev/sda3 256428242096482+82 Linux swap / Solaris10.11.Disk /dev/sdb:85.8 GB,85899345920 bytes /上一章实验添加的硬盘12.255 heads,63 sectors/track,10443 cylinders13.Units = cylinders of 16065*512=8225280 bytes14.15. Device Boot Start End Blocks Id Sy
5、stem16./dev/sdb1 124331954304183 Linux17./dev/sdb2 2434486619543072+83 Linux18./dev/sdb4 48671044344797252+5 Extended19./dev/sdb5 486751101959898+82 Linux swap / Solaris20./dev/sdb6 511163279775521 c W95 FAT32(LBA)21.22.Disk /dev/sdc:21.4 GB,21474836480 bytes /本章实验添加硬盘(第 1块)23.255 heads,63 sectors/t
6、rack,2610 cylinders24.Units = cylinders of 16065*512=8225280 bytes25.26.Disk /dev/sdc doesnt contain a valid partition table27.28.Disk /dev/sdd: 21.4 GB, 21474836480 bytes /本章实验添加硬盘(第 2块)29.255 heads, 63 sectors/track, 2610 cylinders30.Units = cylinders of 16065 * 512 = 8225280 bytes31.32.Disk /dev/
7、sdd doesnt contain a valid partition table33.34.Disk /dev/sde:21.4 GB,21474836480 bytes /本章实验添加硬盘(第 3块)35.255 heads,63 sectors/track,2610 cylinders36.Units = cylinders of 16065*512=8225280 bytes37.38.Disk /dev/sde doesnt contain a valid partition table39.40.Disk /dev/sdf: 21.4 GB, 21474836480 bytes
8、/本章实验添加硬盘(第 4块)41.255 heads, 63 sectors/track, 2610 cylinders42.Units = cylinders of 16065 * 512 = 8225280 bytes43.44.Disk /dev/sdf doesnt contain a valid partition table2创建及使用 RAID5 软磁盘阵列1)新建 RAID 软阵列设备/dev/md0使用 mdadm 管理工具,选项-l 指定 RAID 级别、-n 指定成员磁盘数量、-x 指定冗余盘个数(默认为 0)、-v 显示详细执行过程信息。以下操作将 4 块磁盘/dev
9、/sdc、/dev/sdd、/dev/sde、/dev/sdf 创建为 RAID5 阵列设备/dev/md0:1. rootsvr5 # mdadm -C /dev/md0 -l5 -n4 /dev/sdc-f /创建 RAID5阵列2. mdadm: array /dev/md0 started.3. rootsvr5 # ls -l /dev/md0 /查看新建的阵列设备文件4. brw-r-1 root disk 9,010-0815:55/dev/md02)格式化 RAID 阵列设备将/dev/md0 格式化,创建 EXT3 文件系统:1. rootsvr5 # mkfs.ext3 /
10、dev/md0 /格式化软阵列/dev/md02. mke2fs 1.39(29-May-2006)3. Filesystem label=4. OS type: Linux5. Block size=4096(log=2)6. Fragment size=4096(log=2)7. 7864320 inodes,15728592 blocks8. 786429blocks(5.00%) reserved for the super user9. First data block=010.Maximum filesystem blocks=429496729611.480 block grou
11、ps12.32768 blocks per group,32768 fragments per group13.16384 inodes per group14.Superblock backups stored on blocks:15.32768,98304,163840,229376,294912,819200,884736,1605632,2654208,16.4096000,7962624,1123942417.18.Writing inode tables: done19.Creating journal(32768 blocks): done20.Writing superblo
12、cks and filesystem accounting information: done21.22.This filesystem will be automatically checked every 21 mounts or23.180 days, whichever comes first. Use tune2fs -c or -i to override.3)挂载及使用 RAID 阵列设备新建挂载点目录/mymd,将格式化好的设备/dev/md0 挂载到/mymd :1. rootsvr5 # mkdir /mymd /新建挂载点文件夹2. rootsvr5 # mount /d
13、ev/md0 /mymd /挂载 RAID设备确认挂载结果:1. rootsvr5 # mount | grep md0 /查看挂载情况2. /dev/md0 on /mymd type ext3(rw)3. rootsvr5 # df -hT /mymd /查看文件系统占用情况4. 文件系统 类型 容量 已用 可用 已用% 挂载点5. /dev/md0 ext3 60G 180M 56G 1% /mymd从 df 执行结果可以发现,4 块 20GB 的磁盘组建为 RAID5 阵列后,默认使用一块磁盘的容量作为冗余空间,实际文件系统的有效容量只有 60GB。4)访问已挂载的软 RAID 设备通
14、过挂载点目录访问,方法与使用其他本地文件系统类似:1. rootsvr5 # echo “write test“/mymd/mdtest.txt /写入测试2. rootsvr5 # cat /mymd/mdtest.txt /读取测试3. write test5)保存软 RAID 阵列配置配置文件为/etc/mdadm.conf,默认没有这个文件(需自行建立):1. rootsvr5 # ls /etc/mdadm.conf2. ls:/etc/mdadm.conf: 没有那个文件或目录使用 mdadm 手动建立阵列设备以后,可通过细节输出-v 选项(或-verbose )、详情查询选项-D
15、(或-detail )、扫描选项-s(或-scan)来探测阵列配置,重定向到/etc/mdadm.conf 即保存为固定配置:1. rootsvr5 # mdadm -vDs /输出阵列 md0的详细配置2. ARRAY /dev/md0 level=raid5 num-devices=4 metadata=0.90 spares=1 UUID=049091e4-8317-4950-bb65-4f19370a20903. devices=/dev/sdc,/dev/sdd,/dev/sde,/dev/sdf4. rootsvr5 # mdadm -vDs /etc/mdadm.conf /保存
16、阵列 md0的配置如果是手动建立/etc/mdadm.conf 配置文件,其中/dev/md0 设备的 UUID 号也可通过 blkid 命令获得:1. rootsvr5 # blkid /dev/md02. /dev/md0: UUID=“049091e4-8317-4950-bb65-4f19370a2090“ SEC_TYPE=“ext2“ TYPE=“ext3“6)建立自动挂载配置将默认的挂载设置写到/etc/fstab 文件内,设备可直接用/dev/md0,或者改用UUID=“049091e4-8317-4950-bb65-4f19370a2090“:1. rootsvr5 # vi
17、m /etc/fstab /添加自动挂载设置2. 3. /dev/md0 /mymd ext3 defaults 004. rootsvr5 # mount -o remount /mymd /确认挂载配置正常3RAID 阵列设备的解散和重组、故障盘替换1)查看软阵列设备的详细信息结合 mdadm 工具的-D 选项(或-detail)查看阵列的设备细节:1. rootsvr5 # mdadm -detail /dev/md02. /dev/md0:3. Version :0.904. Creation Time : Tue Oct 816:26:5820135. Raid Level : ra
18、id5 /使用的 RAID级别6. Array Size :62914368(60.00 GiB 64.42 GB) /阵列的有效容量7. Used Dev Size :20971456(20.00 GiB 21.47 GB) /每个成员盘的大小8. Raid Devices :4 /参与 RAID的磁盘数9. Total Devices :4 /总磁盘数10.Preferred Minor :011. Persistence : Superblock is persistent12.13. Update Time : Tue Oct 816:40:23201314. State : clea
19、n15. Active Devices :416.Working Devices :417. Failed Devices :018. Spare Devices :0 /冗余盘的个数19.20. Layout : left-symmetric21. Chunk Size : 64K22.23. UUID :049091e4:83174950:bb654f19:370a209024. Events :0.425.26. Number Major Minor RaidDevice State /列出所有的成员盘27.08320 active sync /dev/sdc28.18481 activ
20、e sync /dev/sdd29.28642 active sync /dev/sde30.38803 active sync /dev/sdf查看阵列的运行状态,可获知有哪些成员磁盘、各成员的状态标记,其中UUUU表示 4 块成员盘都处于正常使用状态:1. Personalities :raid6raid5raid42. md0 : active raid5 sdf3 sde2 sdd1 sdc03. 62914368 blocks level 5, 64k chunk, algorithm 24/4UUUU4.5. unused devices:2)替换 RAID 阵列中的故障盘假设/d
21、ev/md0 阵列中的成员盘/dev/sdc 出现故障了,则在执行磁盘替换操作之前,需要使用 mdadm 工具的-f 选项(或-fail)先标记磁盘故障:1. rootsvr5 # mdadm /dev/md0 -fail /dev/sdc /标记/dev/sdc 已故障2. mdadm: set /dev/sdc faulty in /dev/md0再次查看阵列状态时,可发现状态标识已变为_UUU,表示其中的第一块成员盘(sdc)已出现故障,被隔离等待测试:1. rootsvr5 # cat /proc/mdstat2. Personalities :raid6raid5raid43. md
22、0 : active raid5 sdf3 sde2 sdd1 sdc4(F)4. 62914368 blocks level 5, 64k chunk, algorithm 24/3_UUU5.6. unused devices:通过测试确认故障磁盘以后,可通过 mdadm 工具的-r 选项(或-remove)将故障磁盘标记为移除:1. rootsvr5 # mdadm /dev/md0 -remove /dev/sdc2. mdadm: hot removed /dev/sdc此后立即将故障盘取下,换上另一块相同大小的完好的磁盘再插入主机,再结合mdadm 工具的-a 选项(或 -add)
23、来重新加入替换后的新磁盘:1. rootsvr5 # mdadm /dev/md0 -add /dev/sdc2. mdadm: re-added /dev/sdc观察 RAID 阵列的状态,可以发现正在处于恢复过程中(可多次查看,百分比会不断增长直至 100%),根据校验信息来重写新替换后的磁盘数据、修复阵列:1. rootsvr5 # cat /proc/mdstat2. Personalities :raid6raid5raid43. md0 : active raid5 sdc4 sdf3 sde2 sdd14. 62914368 blocks level 5, 64k chunk,
24、algorithm 24/3_UUU5. = recovery =20.6%(4336000/20971456) finish=1.3min speed=206476K/sec6.7. unused devices:8.9. rootsvr5 # cat /proc/mdstat10.Personalities :raid6raid5raid411.md0 : active raid5 sdc4 sdf3 sde2 sdd112.62914368 blocks level 5, 64k chunk, algorithm 24/3_UUU13.=. recovery =35.4%(7436928
25、/20971456) finish=1.1min speed=202128K/sec14.15.unused devices:最后修复完成后,状态再次变为UUUU:1. rootsvr5 # cat /proc/mdstat2. Personalities :raid6raid5raid43. md0 : active raid5 sdc0 sdf3 sde2 sdd14. 62914368 blocks level 5, 64k chunk, algorithm 24/4UUUU5.6. unused devices:3)RAID 阵列的解散和重组当阵列设备不再使用时,可通过 mdadm 工
26、具的-S 选项(或-stop)解散阵列:1. rootsvr5 # umount /dev/md0 /卸载已挂载的阵列设备2. rootsvr5 # mdadm -stop /dev/md0 /解散阵列设备3. mdadm: stopped /dev/md04. rootsvr5 # rm -rf /dev/md0 /删除阵列设备此后各成员盘可挪作他用(原阵列中的文件数据不保留)。通过 mdadm 工具的-A 选项(-assemble)可以重组阵列设备,重组操作需要在/etc/mdadm.conf 内有预先定义好的阵列配置、成员盘配置,否则将无法重组,只能手工重建了。假如各成员磁盘在解散后尚未
27、做其他任何写入,重组为原来的阵列(级别、规模一样)后,其中存放的文档数据还可以继续访问。以下操作将根据配置文件/etc/mdadm.conf 中的设置重组/dev/md0 阵列设备:1. rootlocalhost # mdadm -A /dev/md0 /重组预定义的阵列2. mdadm:/dev/md0 has been started with 4 drives.3. rootlocalhost # ls -l /dev/md0 /确认自动生成的设备文件4. brw-1 root root 9,010-0818:40/dev/md0检查重组后是否能访问原有的文件数据:1. rootloc
28、alhost # mount /dev/md0 /mymd /重新挂载阵列设备2. rootlocalhost # cat /mymd/mdtest.txt /访问阵列中原有的文件3. write test2.4 扩展在构建软 RAID 阵列时,如果是使用分区来实现,建议将分区的类型 id 改为 fd,以方便管理员识别。反之,如果是用多块整磁盘来实现,则没有必要分区及设置类型,因为重建 RAID 阵列时会抹去分区表设置。前例中若改用 4 个分区/dev/sdc1、/dev/sdd1、/dev/sde1、/dev/sdf1 来构建RAID5 阵列设备,可参考下列步骤。1)执行 fdisk /de
29、v/sdc 建立 fd 分区/dev/sdc1进入分区界面:1. rootsvr5 # fdisk /dev/sdc /对磁盘/dev/sdc 进行分区2. Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel3. Building a new DOS disklabel. Changes will remain in memory only,4. until you decide to write them. After that, of course, the previous5
30、. content wont be recoverable.6.7.8. The number of cylinders for this disk is set to 2610.9. There is nothing wrong with that, but this is larger than 1024,10.and could in certain setups cause problems with:11.1) software that runs at boot time (e.g., old versions of LILO)12.2) booting and partition
31、ing software from other OSs13. (e.g., DOS FDISK, OS/2 FDISK)14.Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)15.16.Command (m for help):依次执行 n、p、1、回车、回车,将全部空间划分为一个主分区:1. Command(m for help): n /新建分区2. Command action3. e extended4. p primary partition(1-4)5. p /新建主分区6.
32、 Partition number(1-4):1 /编号为 17. First cylinder(1-2610,default1): /起始柱面默认8. Using default value 19. Last cylinder or +size or +sizeM or +sizeK(1-2610,default2610):10. /结束柱面默认11.Using default value 2610再依次执行 t、fd 进行转换,1. Command(m for help): t /修改分区类型标识2. Selected partition 1 /只有 1个分区,默认自动选中3. Hex c
33、ode(type L to list codes): fd /类型改为 fd,标识将作为 RAID成员4. Changed system type of partition 1 to fd(Linux raid autodetect)完成后按 p 确认分区结果、w 保存分区:1. Command(m for help): p /确认分区结果2.3. Disk /dev/sdc:21.4 GB,21474836480 bytes4. 255 heads,63 sectors/track,2610 cylinders5. Units = cylinders of 16065*512=8225280
34、 bytes6.7. Device Boot Start End Blocks Id System8. /dev/sdc1 1261020964793+ fd Linux raid autodetect9. Command(m for help): w10.The partition table has been altered!11.12.Calling ioctl() to re-read partition table.13.14.WARNING: If you have created or modified any DOS 6.x15.partitions, please see t
35、he fdisk manual page for additional16.information.17.Syncing disks.2)执行 fdisk /dev/sdd,参考前例操作,划分为一个 fd 主分区。3)执行 fdisk /dev/sde,参考前例操作,划分为一个 fd 主分区。4)执行 fdisk /dev/sdf,参考前例操作,划分为一个 fd 主分区。5)最后,使用 partprobe 重新探测分区表,使用 fdisk -l 确认结果:1. rootsvr5 # partprobe /dev/sdc-f /重新探测分区表2. rootsvr5 # fdisk -l /dev/sdc-f| grep raid /确认分区结果3. /dev/sdc1 1261020964793+ fd Linux raid autodetect4. /dev/sdd1 1261020964793+ fd Linux raid autodetect5. /dev/sde1 1261020964793+ fd Linux raid autodetect6. /dev/sdf1 1261020964793+ fd Linux raid autodetect