免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 780 | 回复: 0
打印 上一主题 下一主题

Linux 下的软 Raid(0~5): MD Device [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-05 23:46 |只看该作者 |倒序浏览
什麽是 MD ?
_________________________________________________________________
MD 就是指 Multiple Devices,意思是把一些不 在同一颗 HD 上的 partitions
集合在一起,变成一个大的合体,原理很像我 们常听说的 RAID,但这个 (md)
是由 kernel 去做 (一般常见而言,RAID 是由 Controller 自行处理,如 DPT
SmartRAID 系列,或 IFT-3000 等高阶 Controller),所以在效能上自然输了不
少。但它的好处是,用 linear 或 RAID 0 时,可以混用 IDE 及 SCSI HD 上的
partitions。
_________________________________________________________________
如何使用 MD ?
Step 1: 准备工作
* 把你的 kernel 改为大於 1.3.69 的版本, compile 支援 MD 吧.
* 去抓 md035.tar.gz, 这是做 md volumn group 的程式.
* 把上面讲的东西 compile 好并 install 完成; 在 make install 时会同时
帮你把 /dev/md0 ~ /dev/md3 做好, 这点不必麻烦自己手动跑 mknod 了.
* 在 /etc/rc.d/rc.S 的开头中加入一行:
/sbin/mdadd -ar
它要比 swapon 等和 filesystem 有关者更早执行的, 因为也许你的 swap
或 /usr 就是建在某个 md device 上. 但它必需在 kerneld 之後执行 ( 如
果你有用到 kerneld + modules 的话)
Step 2: 开始了
* 考虑一下你要把哪些 partitions 兜在一起,而且要了解一件事: 把同一颗
HD 上的 partitions 搞在一起,反而会变慢而且又操硬碟!
* 好, 例如我打算把 /dev/sda1, /dev/sdb1, /dev/sdc1 做成一个
/dev/md0, 参数我们选 RAID0,chuck size 是 8Kbytes, 那就执行:
mdcreate -c8k raid0 /dev/md0 /dev/sda1 /dev/sdb1 /dev/sdc1
如此就完成了 /etc/mdtab 中的设定 (并计算出一个 crc32 的检查码).
注意! 那个 /dev/sda1 /dev/sdb1..... 的顺序很重要,将来可以照此顺序
重建 (如果你的 HD 顺序变了,例如中间多加了一颗 HD......)
/etc/mdtab 而不必 重建其内容。至於那个 -c8k 的参数 (chuck
size=8kbytes) 请参考 md 内附的说明文件。这个参数是 pagesize (在
x86 上应都是 4k) 乘 上 2 的 N 次方 (例如 0,1,2,4,8),所以应为
4k、8k、16k、32k...... 等值中选一个来用,我不多讲了,请自己用功一
点......
* 再来我们 cat 一下 /proc/mdstat 看看,如果还没跑 mdadd -ar 的话,应
该 看到这样:
Personalities : [1 linear] [2 raid0]
read_ahead not set
md0 : inactive
md1 : inactive
md2 : inactive
md3 : inactive
因为你尚未 reboot 过,所以 mdcreate 完後, 也尚未跑 /etc/rc.d/rc.S
去 执行那个 mdadd -ar。 OK,那就手动执行一下 mdadd -ar 吧,然後再
cat 一次 /proc/mdstat 看看,应该是像这样的:
Personalities : [1 linear] [2 raid0]
read_ahead xxx sectors
md0 : active raid0 sda1 sdb1 sdc1 xxxxxx blocks 8k chunks
md1 : inactive
md2 : inactive
md3 : inactive
其中那些 xxxxx 是我这儿的数字,也许您的就不同了 (那个 read_ahead 不
一定 有值,也许还是 not set 而已)
* 至此,您已经可以使用 /dev/md0 来玩了。例如要准备当 swap,那就执行
mkswap /dev/md0。或许您要当 ext2 fs,那就执行 mke2fs /dev/md0。 再
来就看您的用途罗......
* 尚有 mdstop、mdrun 那些程式,请自行研究好吗?
Step 3: 测试报告
* 我已经在两颗很烂又很旧的 IBM 330MB 老 HD 上 (它的速度只有 3600rpm,
internal transfer rate 约 1.x MB/s,而且 SCSI bus 的速度会变成
5MB/s) ,做了一个 100MB 的 swap 在 /dev/md0 上,及一个 512MB 的
ext2 fs 在 /dev/md1 上,准备要 mount 在 /usr 上使用 (很冒险吧?)。
於是, 我先 mount -t ext2 /dev/md1 /mnt 後, 把所有的 /usr/* 拷贝到
/mnt 下,再清空 /usr/* (或是 先 mv /usr /usr1 再 mkdir 一个空的
/usr 子目录)。然後改一下 /etc/fstab 加入:
/dev/md0 swap swap default 1 1
/dev/md1 /usr ext2 default 1 1
然後 reboot 我的机器 (因为很多 daemon 都用了旧的 /usr/sbin/ 中的东
西)
* 嗯,在 reboot 中,我看到它真的在 e2fsck /dev/md1 唷,而且成功地
mount 在 /usr 下,而且 swap 也加入了。这时我看了看 /proc/mdstat:
Personalities : [1 linear] [2 raid0]
read_ahead 120 sectors
md0 : active raid0 sdb1 sdc1 100320 blocks 4k chunks
md1 : active raid0 sdb2 sdc2 524288 blocks 8k chunks
md2 : inactive
md3 : inactive
看起来不错的样子,也没问题。
* 再来就是玩 compile kernel 看看罗。在 /usr/src/linux 我花了一些 时间
make xxxxx, 觉得这个速度不输给比它快了两倍多的 Quantum Lightning 系
列耶。
* 开 X-window 也跑得很顺。
* swap 我也在观察, 也很顺。
* 再来,我搞了一招狠招:
# cd /usr
# find -type f -name "*" -exec cat {} > /dev/null \;
意思是把所有的 /usr 下的档案都 cat 到 /dev/null 去,狠狠地 操这个
/dev/md1。 结果很不错, 220MB 的资料在 14 分钟内就解决了。
不过,我碰到了个问题。因为其中有一颗 HD 不太稳,在尔後我一直跑这个
操死硬碟的指令时,就一直卡在某个有问题的 (读不出来) 的档案上。於是
在砍掉那些档案後,就十分顺利了。我会再验证这个问题的。
* 好,最後我发现一件事;就是如果是把东西拷入 md 的 volumn 的话,是没
有问题,而且也读得很正常。一但在其上开始工作 (例如 compile
something) 的话,之後就无法把一些新增的档案拷至其他 filesystem,cp
指令 (或是 cat,或是其他读它的指令都会) 将『死得很难看』变成 dead
process。 这是我後来使用『完全正常』的两颗 540MB 的硬碟测试之後的结
论。 而且,如果使用 (例) mke2fs -c /dev/md1 的话,在 test 完後会出
现一个 'Unknown md_iotcl 11' 的讯息。显然这个 md-0.34 版有待改进。
无论如何,这个 md 的美意,大家都很欣赏吧?所以我花了功夫写下使用过程、
心得及建议。当然,我现在不鼓励大家使用它,原因 (或说现象吧) 你也看得 很
清楚了 (如果我写得不算乱的话),总之就是大家再观察一阵子,相信好的东 西
及概念将会早日带给大家更便利的功能的。

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/27588/showart_210810.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP