好大的风

2009年10月21日

QuickStart — Linux环境中的软件RAID

Filed under: 你要去哪里 — 好大的风 @ 4:50 下午

 

QuickStart — Linux环境中的软件RAID

RAID 1是最适合数据库环境的一种磁盘配置方式。理由主要有以下几点:

1,目前磁盘容量一般都远远超出数据库数据的容量,一般认为,如果单个MySQL实例的数据容量超过100G,就算是很大了,目前的服务器配置的单块磁盘容量基本都在300G以上,所以磁盘容量不是我们所担心的。

2,互联网应用中的数据库,数据写入与读取比例一般会高于1 : 10,而且写入操作可以使用多种措施进行延迟写入,所以数据库应用对于磁盘的读取性能要求很高,对写入的性能要求相对低一些。从理论上说,RAID 1的写入性能与单块磁盘写入性能相近,读取性能基本等同于单块磁盘的性能X磁盘的数量。所以说RAID 1的磁盘配置满足了数据库对于读写性能的需求。

3,数据是最宝贵的资源,即使对于互联网应用,数据的安全性也是必须重视的,RAID 1 提供了最高级别的数据冗余。所以说RAID 1的磁盘配置满足了数据库对于数据安全性的要求。

4,最基本的RAID 1的磁盘配置只需要两块磁盘即可,相对成本很低。由于RAID 1的原理简单,所以使用软件实现的RAID 1 也具有很好的性能表现,不需要使用昂贵的硬件RAID卡即可达到比较高的可靠性和读取性能,所以 RAID 1 是一种低成本的磁盘配置方式。

Linux 内核中实现了RAID 1的磁盘配置,模块名为raid1,可以使用modprobe raid1来加载。 Linux 环境下RAID磁盘配置的管理工具有多种,一般认为比较稳定好用的为mdadm。

以下为在CentOS 4.7环境下使用两块磁盘配置RAID 1 的操作过程:

使用/dev/sdb /dev/sdc创建RAID 1磁盘配置,新的设备名为/dev/md0

 [root@localhost ~]# mdadm –create –level=1 /dev/md0 –raid-devices=2 /dev/sdb /dev/sdc

mdadm: array /dev/md0 started.

通过查看/proc/mdstat来获知目前RAID的状态,可以看到正处于sync状态。

[root@localhost ~]# cat /proc/mdstat

Personalities : [raid1] md0 : active raid1 sdc[1] sdb[0] 8388544 blocks [2/2] [UU]

 [===>.................] resync = 16.7% (1402368/8388544) finish=0.5min speed=200338K/sec

unused devices:

现在已经sync完成。

[root@localhost ~]# cat /proc/mdstat

Personalities : [raid1] md0 : active raid1 sdc[1] sdb[0] 8388544 blocks [2/2] [UU]

unused devices:

创建文件系统。

[root@localhost ~]# mkfs.ext3 /dev/md0

mke2fs 1.35 (28-Feb-2004) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 1048576 inodes, 2097136 blocks 104856 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2147483648 64 block groups 32768 blocks per group, 32768 fragments per group 16384 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 37 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.

将刚刚创建的文件系统加载。

[root@localhost ~]# mount -o noatime /dev/md0 /mnt/md0/

 将RAID的配置写入系统配置文件,系统重新启动后会自动加载所有有效的RAID设备。

 [root@localhost ~]# cat /etc/mdadm.conf

DEVICE /dev/sdb /dev/sdc

ARRAY /dev/md0 devices=/dev/sdb,/dev/sdc

当两个磁盘设备中的任何一个失效后,系统仍然能够正常加载并运行。

mdadm还可以作为监控工具来使用,甚至可以发邮件给系统管理员。

参考资料:

RAID基本概念:

http://en.wikipedia.org/wiki/RAID

The Software-RAID HOWTO:

http://tldp.org/HOWTO/Software-RAID-HOWTO.html

RAID_setup:

http://linux-raid.osdl.org/index.php/RAID_setup

mdadm的manual文档:

man 8 mdadm

2009年10月15日

好久没来

Filed under: 你要去哪里 — 好大的风 @ 3:35 下午

就算是凑一篇吧。

过节回家,研究了几种网络服务并发的实现原理,比较有代表性的有Apache HTTPD,Lighttpd,Libmicrohttpd,tokyotyrant等,稍后做详细分析并论述。

研究了一个效率比较高的关键字匹配算法,并使用C语言实现,包装成PHP模块来使用,效果不错,但程序写的比较晦涩,过了两天,自己居然也看不懂了… …

使用PHP语言实现了一个简单的中文分词程序,使用了最大正向匹配算法,程序比较简单,但效果还凑和。

对照《集体智慧编程》这本书,学习了文本过滤的一些技术,比如贝叶斯和费舍尔,貌似很高深,希望能够完全理解并应用到实践中去。

最近每天晚上都朗读几页英文版的计算机书籍,感觉很好,觉得朗读后的印象很深刻,比随便浏览的效果好多了。

恩,很好很好。

Powered by WordPress