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