» » 人人都可以玩的Linux soft Raid |
|
人人都可以玩的Linux soft Raid
周末,抽点时间绣一把。相信大家很少玩过Raid阵列,这东西我最近弄的挺多的,硬Raid的我就不多说了,那卡很贵(3 Ware9500要8000左右)。
既然是人人都可以玩的,当然廉价,只要有虚拟机VMware就够了。 |
|
第一步,安装虚拟机VMware
安装虚拟机VMware,我现在用的版本是4.5 for windows,估计已经有更高的版本了。推荐大家在windows下安装虚拟机,个人认为这样性能不错,当然要有256以上的内存。
用虚拟机的道理有: 1 可以虚拟很多SCSI硬盘,不然俺们硬盘不够 2 可以一边玩虚拟机一边用windows
安装VMware的时候要注意的是安装将结束后的一个选项,好像是要我们选择扫描磁盘上的虚拟机文件,这个最好选“no”,不然很浪费时间。
这是俺的VM,装了Red Hat的FC4 |
|
第二步,安装Linux
1 准备好Linux的安装盘,这里推荐大家使用Red hat的fedora 4。下载网站[url][/url],但我不清楚学院是否能到国外网站。
2 安装盘可以是镜像文件,因为虚拟机允许使用镜像文件载入光驱。
3 创建一个新的虚拟机,看图
[[i] 本帖最后由 幻隐 于 2006-3-12 12:56 AM 编辑 [/i]] |
|
屏蔽中~~~~~~~~~~
[[i] 本帖最后由 幻隐 于 2006-3-11 01:09 AM 编辑 [/i]] |
|
安装Linux
安装,Linux 我就不提供这级的说明了,俺大二的时候就会在虚拟机上安Linux了。
不想安装的到ftp上考吧,以前的老师上传有虚拟机文件,直接就能跑。
[[i] 本帖最后由 幻隐 于 2006-3-11 01:21 AM 编辑 [/i]] |
|
题外话
推荐大家使用的两个软件 1 Secure Shell Client 安全shell客户端,linux默认会启动一个sshd进程来监测ssh的连接,这里注意,这玩意比telnet要好玩多了,因为它能提供window下的控制台,如同在linux本机上操作一样,还提供文件传输,既你能从你的windows下传输文件到linux下,相反也是可以的,只要拖动鼠标。这给不会smba和scp命令的人提供了良好的界面。
2 vncviewer,象windows xp远程桌面连接一样的工具,这里不仔细对这两个软件进行教学了,自己到网上搜索吧。 |
|
相关命令演示
[color=Blue][root@sn ~]# fdisk -l[/color]
Disk /dev/hda: 1073 MB, 1073741824 bytes 255 heads, 63 sectors/track, 130 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System /dev/hda1 * 1 127 1020096 83 Linux
Disk /dev/sda: 4294 MB, 4294967296 bytes 255 heads, 63 sectors/track, 522 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sda doesn't contain a valid partition table
Disk /dev/sdb: 4294 MB, 4294967296 bytes 255 heads, 63 sectors/track, 522 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
Disk /dev/sdc: 4294 MB, 4294967296 bytes 255 heads, 63 sectors/track, 522 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdc doesn't contain a valid partition table
Disk /dev/sdd: 4294 MB, 4294967296 bytes 255 heads, 63 sectors/track, 522 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdd doesn't contain a valid partition table
/dev/sd* 的磁盘就是虚拟的SCSI硬盘,到这步的话,Raid已经与你走的很近了。
[[i] 本帖最后由 幻隐 于 2006-3-11 01:10 AM 编辑 [/i]] |
|
[color=Blue][root@sn ~]# mdadm -C -n3 -l5 -x1 /dev/md0 /dev/sd[a-d][/color] mdadm: array /dev/md0 started.
说明:mdadm是目前Linux制作Raid的软件,系统自带(FC4),在没有这个软件前使用的工具是raidtool
mdadm 主要命令说明
-C 创建Raid (/dev/md0是我的raid名称) -n 磁盘阵列个数,这里是3,刚好可以做raid5 -l raid的级别,你可以玩一下0或者3,当然,虚拟机下面,速度体现不出来 -x hostspare,待机磁盘,如果阵列中有一块硬盘坏了,它会立刻顶上,rebuilding --size 指定没块磁盘大小,比如我每块磁盘是4G,当我只用2G做raid,其他空着
这里要注意,raid创建后,其实有一块盘会立刻做rebuilding,由于是虚拟机,所以速度很快,大家感觉不到什么.但如何你用8*250G的真硬盘做raid,rebuilding的时候少说也要2小时以上了.
[color=Red]rebuilding完成后,写配置文件[/color]
1 [color=Blue][root@sn ~]# mdadm --detail --scan >/etc/mdadm.conf[/color] 2 查看你的/etc/mdadm.conf [color=Blue][root@sn ~]# cat /etc/mdadm.conf [/color] ARRAY /dev/md0 level=raid5 num-devices=3 spares=1 UUID=c2067aab:d6093963:275ce274:26e16f62 devices=/dev/sda,/dev/sdb,/dev/sdc,/dev/sdd
3修改/etc/mdadm.conf [color=LimeGreen] device /dev/sda /dev/sdb /dev/sdc /dev/sdd ARRAY /dev/md0 level=raid5 num-devices=3 spares=1 UUID=c2067aab:d6093963:275ce274:26e16f62[/color]
或者 [color=LimeGreen] device /dev/sd[a-d] ARRAY /dev/md0 level=raid5 num-devices=3 spares=1 UUID=c2067aab:d6093963:275ce274:26e16f62[/color]
完成配置文件修改后,即使你系统重启,raid也不会丢失,照样会启动,其实是系统调用了命令 [color=Blue][root@sn ~]# mdadm -A -s[/color]
感兴趣的同学看/etc/rc.d/rc.sysinit [color=LimeGreen]# RAID setup update_boot_stage RCraid echo "raidautorun /dev/md0" | nash --quiet if [ -f /etc/mdadm.conf ]; then /sbin/mdadm -A -s fi[/color]
[[i] 本帖最后由 幻隐 于 2006-3-12 05:07 PM 编辑 [/i]] |
|
[color=Blue][root@sn ~]# cat /proc/mdstat [/color] Personalities : [raid5] md0 : active raid5 sdc[2] sdd[3](S) sdb[1] sda[0] 8388480 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU] unused devices:
[[i] 本帖最后由 幻隐 于 2006-3-11 01:12 AM 编辑 [/i]] |
|
[color=Blue][root@sn ~]# mdadm --detail --scan /dev/md0[/color] /dev/md0: Version : 00.90.02 Creation Time : Fri Mar 10 23:23:32 2006 Raid Level : raid5 Array Size : 8388480 (7.100 GiB 8.59 GB) Device Size : 4194240 (3.100 GiB 4.29 GB) Raid Devices : 3 Total Devices : 4 Preferred Minor : 0 Persistence : Superblock is persistent
Update Time : Fri Mar 10 23:24:10 2006 State : clean Active Devices : 3 Working Devices : 4 Failed Devices : 0 Spare Devices : 1
Layout : left-symmetric Chunk Size : 64K
UUID : c2067aab:d6093963:275ce274:26e16f62 Events : 0.2
Number Major Minor RaidDevice State 0 8 0 0 active sync /dev/sda 1 8 16 1 active sync /dev/sdb 2 8 32 2 active sync /dev/sdc
3 8 48 - spare /dev/sdd
[[i] 本帖最后由 幻隐 于 2006-3-11 01:12 AM 编辑 [/i]] |
|
这个时候呢,raid建完了,接着我们要创建lvm来玩玩.如果你对系统内核提供的信息感兴趣,用命令 [color=Blue][root@sn rc.d]# dmesg [/color] 你会看到类似的信息: md: bind md: bind md: bind md: bind raid5: automatically using best checksumming function: pIII_sse pIII_sse : 1694.000 MB/sec raid5: using function: pIII_sse (1694.000 MB/sec) md: raid5 personality registered as nr 4 raid5: device sdb operational as raid disk 1 raid5: device sda operational as raid disk 0 raid5: allocated 3165kB for md0 raid5: raid level 5 set md0 active with 2 out of 3 devices, algorithm 2 RAID5 conf printout: --- rd:3 wd:2 fd:1 disk 0, o:1, dev:sda disk 1, o:1, dev:sdb RAID5 conf printout: --- rd:3 wd:2 fd:1 disk 0, o:1, dev:sda disk 1, o:1, dev:sdb disk 2, o:1, dev:sdc RAID5 conf printout: --- rd:3 wd:2 fd:1 disk 0, o:1, dev:sda disk 1, o:1, dev:sdb disk 2, o:1, dev:sdc md: syncing RAID array md0 md: minimum _guaranteed_ reconstruction speed: 1000 KB/sec/disc. md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for reconstruction. md: using 128k window, over a total of 4194240 blocks. md: md0: sync done. RAID5 conf printout: --- rd:3 wd:3 fd:0 disk 0, o:1, dev:sda disk 1, o:1, dev:sdb disk 2, o:1, dev:sdc
[[i] 本帖最后由 幻隐 于 2006-3-11 01:12 AM 编辑 [/i]] |
|
lvm
lvm就是逻辑卷管理器 我们的步骤分为 1 创建pv(物理卷) 2 创建vg(卷组) 3 创建lv(逻辑卷)
好处,为文件系统提供一个透明的磁盘接口,利于扩容之类的.
[color=Red]1 创建pv[/color] [color=Blue][root@sn rc.d]# pvcreate /dev/md0[/color] Physical volume "/dev/md0" successfully created
[color=Red]2 创建vg[/color] [color=Blue][root@sn rc.d]# vgcreate vg0 /dev/md0 [/color] Volume group "vg0" successfully created
[color=Red]3 创建lv[/color] [color=Blue][root@sn rc.d]# lvcreate vg0 --name=lv0 --size=1G[/color] Logical volume "lv0" created
[color=Red]4 再创建一个lv[/color] [color=Blue][root@sn rc.d]# lvcreate vg0 --name=lv1 --size=1G[/color] Logical volume "lv1" created
[color=Red]格式化lv[/color] [color=Blue][root@sn rc.d]# mke2fs /dev/vg0/lv0 [/color] mke2fs 1.38 (30-Jun-2005) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 131072 inodes, 262144 blocks 13107 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=268435456 8 block groups 32768 blocks per group, 32768 fragments per group 16384 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376
Writing inode tables: done Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 27 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
[color=Red]挂载[/color] [color=Blue][root@sn rc.d]# mkdir /mnt/lv0 [root@sn rc.d]# mount /dev/vg0/lv0 /mnt/lv0/ [root@sn rc.d]# df[/color] Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda1 988088 546412 390672 59% / /dev/shm 94860 0 94860 0% /dev/shm /dev/mapper/vg0-lv0 1032088 1284 978376 1% /mnt/lv0
[[i] 本帖最后由 幻隐 于 2006-3-11 01:13 AM 编辑 [/i]] |
|
[color=Red]查看vg详细信息[/color] [color=Blue][root@sn rc.d]# vgdisplay -v[/color] Finding all volume groups Finding volume group "vg0" --- Volume group --- VG Name vg0 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 1 Max PV 0 Cur PV 1 Act PV 1 VG Size 8.00 GB PE Size 4.00 MB Total PE 2047 Alloc PE / Size 768 / 3.00 GB Free PE / Size 1279 / 5.00 GB VG UUID s1YRVf-ApCR-bs0g-CIac-738i-2gK2-wYJAl1 --- Logical volume --- LV Name /dev/vg0/lv0 VG Name vg0 LV UUID 8sVFV7-8RC7-qVih-XSvd-msCm-8v7l-nV7XA3 LV Write Access read/write LV Status available # open 1 LV Size 1.00 GB Current LE 512 Segments 1 Allocation inherit Read ahead sectors 0 Block device 253:0 --- Logical volume --- LV Name /dev/vg0/lv1 VG Name vg0 LV UUID cdVFVG-3H68-vexk-GxCa-pkSk-ZjZO-z5SpNQ LV Write Access read/write LV Status available # open 0 LV Size 1.00 GB Current LE 256 Segments 1 Allocation inherit Read ahead sectors 0 Block device 253:1 --- Physical volumes --- PV Name /dev/md0 PV UUID H2LpVi-Icx9-IN3Y-wxLY-7Nxq-BVs0-ZbOM2t PV Status allocatable Total PE / Free PE 2047 / 1279 [color=Red]到这里,你该发现很多命令会很类似 pvcreate vgcreate lvcreate pvscan vgscan lvscan pvdisplay vgdisplay lvdisplay [/color] [color=Red]扩容lv0[/color] [color=Blue][root@sn rc.d]# lvextend -L2G /dev/vg0/lv0 [/color] Extending logical volume lv0 to 2.00 GB Logical volume lv0 successfully resized
[[i] 本帖最后由 幻隐 于 2006-3-11 01:23 AM 编辑 [/i]] |
|
启动自动加载?
修改 [color=Blue][root@sn rc.d]# vi /etc/fstab[/color]
添加 /dev/vg0/lv0 /mnt/lv0 ext2 defaults 0 0
不过ext2这个参数有可能是错的,因为我们用的是lv,那个格式化命令我不知道格出来的是什么系统,这个我没有尝试过,sorry,大家自己了解吧.
[[i] 本帖最后由 幻隐 于 2006-3-12 11:20 PM 编辑 [/i]] |
|
测试一下速度?
[color=Blue][root@sn ~]# time dd if=/dev/zero of=/dev/vg0/lv0 bs=1M count=1k[/color] 1024+0 records in 1024+0 records out
real 0m16.984s user 0m0.000s sys 0m3.484s
好慢,我用8*250G做的raid写有150MBps,这里写1G就这么久了,虚拟机就是虚拟机,玩不了性能的东西.
[[i] 本帖最后由 幻隐 于 2006-3-11 01:20 AM 编辑 [/i]] |
lzldai |
2006-3-11 07:01 AM | |
哈,这不就是你的工作吗?呵呵,来这里做培训啊? 支持,顶,3Ware卡我见过,绝对是贵,要不也不做软RAID了 |
|
从目前的调研来看,3Ware不但贵,而且管理功能很差。阵列掉盘的时候不能立刻发现,而且热插拔也存在问题。掉盘后不会反映到内核层,一般的报警方式只是通过邮件,既,掉一块盘后,如果你不能迅速查看到邮件,这时候再掉一块盘,那你的数据就真的完蛋了。 软raid可以很好的解决上面出现的问题,目前的测试中不足的大概是并发性和读性能跟3Ware差距太大。当然,如果调整内核设置,加大预读,也许可以弥补这些问题。 |
Powered by Discuz! Archiver 4.0.0 © 2001-2005 Processed in 0.017848 second(s), 2 queries |