|
tags: raid5 gentoo mdraid softraid ATI sb850
1. 前言
最近公司需要搭建一些测试环境给开发人员,为了保证每个项目的测试环境相对“干净”,所以考虑使用虚拟机。对KVM闻名已久就打算使用qemu-kvm来搭建测试虚拟机。说到这里,怎么貌似和本文没关系?别着急:考虑到可能会应用到多kvm虚拟机并行运行,所以购买了一台测试用设备,并打算构建 linux raid5 环境。
购买的配置如下:
处理器 Athlon II X4 635
内 存 Kingmax 2GB*4 (一共8G)
硬 盘 WD 500G*3(绿盘)
主 板 梅捷 A890G+
特别说明一下,选这个主板,主要是看重两个方面:利于散热的内存条布局;BIOS RAID5支持(后来证明是白搭)。
2. 安装准备
准备做系统了,下载了portage-latest、stage3-amd64,继续用我量产的usb-cdrom 版 mini install cd。
3. 开始折磨自己
首先呢,在 BIOS 里面启用 SATA RAID,然后 CTRL+F 配置一个新的 RAID5,用 install cd 引导系统,尝试启用 dmraid ……
失败!
见鬼,快到 2012年了,dmraid 还是不支持 ati raid ……
反复尝试几次,无效。看来,只能放弃 dmraid 了,决定正式采用 mdraid (soft raid)。
1) 在 BIOS 中去掉 RAID 设置,改为 SATA AHCI,继续用 install cd 启动。
2) 硬盘分区
记得么,我有三块一模一样的硬盘,所以分区方式也保持一致。
分配方式如下:
/dev/sda1 512MB /boot bootable
/dev/sda2 2GB swap
/dev/sda3 150GB /
/dev/sda5 50GB /bak
/dev/sda6 100GB /home
/dev/sda7 175GB(剩下的所有)/app
注意一下,所有的分区类型,记得按“T”,然后选择 “FD”,就是Linux Raid Autodetect
接下来把分区表直接复制到其他硬盘上(当然,你乐意在每个硬盘上都用一次 cfdisk 也无所谓):- livecd# sfdisk -d /dev/sda | sfdisk /dev/sdb
- livecd# sfdisk -d /dev/sda | sfdisk /dev/sdc
复制代码
弄好之后,建议重启一下机器。
3) 制作 RAID
硬盘分区完成,mdraid出场。
首先,创建设备符:- livecd# cd /dev
- livecd dev# MAKEDEV
复制代码
完成后,会在 /dev 下面看到一堆 md*
创建 raid 的时候,有几点需要注意:
首先,引导分区的 metadata 必须是 0.9 版本的,也就是说 /boot 所在分区在创建raid的时候必须加上 --metadata=0.9 或者 -e 0.9 的参数,否则引导会不正常;
其次,/boot 分区不可以用序列阵列,只能用镜像,也就是 raid1,否则 grub 无法识别(硬raid卡因为将raid识别为一个单一的硬盘设备,所以无此问题);
最后,/dev/sda2 /dev/sdb2 /dev/sdc2 我准备做个 raid5 的 swap,如果只想大点空间,可以用单硬盘的方式分别设置为 swap 分区,并启用,这样会多上2GB的swap,不过我觉得 4GB 够用了。
创建的命令如下(注意,md1 是三块硬盘做镜像):- livecd# mdadm --create --verbose /dev/md1 --level=1 --raid-devices=3 -e 0.9 /dev/sda1 /dev/sdb1 /dev/sdc1
- livecd# mdadm --create --verbose /dev/md2 --level=5 --raid-devices=3 /dev/sda2 /dev/sdb2 /dev/sdc2
- livecd# mdadm --create --verbose /dev/md3 --level=5 --raid-devices=3 /dev/sda3 /dev/sdb3 /dev/sdc3
- livecd# mdadm --create --verbose /dev/md5 --level=5 --raid-devices=3 /dev/sda5 /dev/sdb5 /dev/sdc5
- livecd# mdadm --create --verbose /dev/md6 --level=5 --raid-devices=3 /dev/sda6 /dev/sdb6 /dev/sdc6
- livecd# mdadm --create --verbose /dev/md7 --level=5 --raid-devices=3 /dev/sda7 /dev/sdb7 /dev/sdc7
复制代码
这个时候 cat /proc/mdstat 可以看到硬盘阵列开始同步。
同步的时间根据硬盘分区的容量不同而不同,长得可能个把小时一个分区。不过大家不用傻等,同步的同时一样可以对硬盘做分区和安装操作。
如果想知道什么时候同步完成,输入下面的命令(建议开多个tty):- livecd# watch -n 1 'cat /proc/mdstat'
复制代码
4) 文件系统和安装
/boot 我打算用ext2,主要是兼容性最好,而且有mirror了,不怕出问题。
/ 我打算用ext3,为了以后升级到 ext4 玩,别的分区用 reiserfs,当然,你有不同的想法,我完全支持,只是记得,grub在raid下面对ext系列的识别是最好的就行了。
swap 很简单:- livecd# mkswap /dev/md2
- livecd# swapon /dev/md2
复制代码
这个时候 top 一下就可以看到 4GB 的 swap 在跑了。三个 2GB 的分区做RAID5,得到 4GB 的 SWAP,刚刚好。
5) 安装 gentoo 系统
这个部分的工作和安装别的 gentoo 系统并无不同。
6) chroot 之后需要做的事情
首先,别忘记你的 mdraid 是需要支持的,所以下面的命令是必须的:
- # emerge mdadm
- # rc-update add mdadm boot
复制代码
然后呢,你要把 mdraid 的内容放置到 mdadm 的配置文件里面:- # mdadm --detail --scan >> /etc/mdadm.conf
- 或者
- livecd# mdadm --detail --scan >> /mnt/gentoo/etc/mdadm.conf
复制代码
根据 druggo 同学的补充,如果分区使用 Linux Raid Autodetect,并且内核配置中选中了 Devices driver --> Multiple devices driver support --> RAID support -> Autodetect RAID arrays during boot,则可不执行 rc-update add mdadm boot。
编译内核的时候,记得把 mdraid / raid 相关的东西都选上,如果是对自己编译内核比较陌生的朋友,还是 genkernel 吧。而且用 initrd 也有个好处,就是可以区分出 real_root 来,系统装好之后关机的时候不会出现因为 / 分区已挂载无法释放的情况。
* grub 的设置
修改 /boot/grub/devices.map 文件,我的类似于
(hd0) /dev/sda
(hd1) /dev/sdb
(hd2) /dev/sdc
运行 grub 命令:
- grub> root (hd0,0)
- grub> setup (hd0)
- grub> root (hd1,0)
- grub> setup (hd1)
- grub> root (hd2,0)
- grub> setup (hd2)
复制代码
修改 grub.conf 的时候,只要 root (hd0,0) 就可以了。
OK,一切做好了,重启。
收工!
ps: raid5 主要提升数据安全性和硬盘读写性能中的读取性能,经过对 /dev/sda3 /dev/md3 的测试(命令 hdparm -tT)
读取性能从 97MB/s 提升到 174MB/s |
|