分类: LINUX
2007-04-24 17:17:47
在 RedHat 9 下用mdadm建立RAID 1
数据在现今企业中占有重要的地位,数据存储的安全性有而是人们使用计算机要注意的重要问题之一。通常情况下人们在服务器端采用各种冗余磁盘阵列RAID技 术来保护数据,中高档的服务器一般都提供了昂贵的硬件RAID控制器,但是很多中小企业没有足够的经费承受这笔开销。我们有没有方法可以通过软件来实现 RAID呢?
实际上在Linux下可以通过软件来实现硬件的RAID功能,这样既节省了投资,又能达到很好的效果。今天就由我为大家介绍如何在网络环境中实现带有一块Spare-disk的软RAID1(数据镜像)阵列。
小提示:什么是RAID1(数据镜像)?RAID 1是比较可靠的数据存储方式,每一个磁盘都具有一个对应的镜像盘。对任何磁盘的数据写入都会被复制镜像盘中;系统可以从一组镜像盘中的任何一个磁盘读取数 据,也就是说同一个数据会被重复写入两次,这样的磁盘镜像肯定会提高系统成本。因为我们所能使用的空间只是所有磁盘容量总和的一半。
在RedHat 9 下可以使用rpm的方式安装
[root@Meil89 root]# rpm -ivh mdadm-
warning: mdadm-
Preparing... ########################################### [100%]
1:mdadm ########################################### [100%]
也可以在http://neil.brown.name/blog/mdadm 寻找相关的包安装.
查看系统硬盘状况:
[root@Meil89 root]# fdisk -l
Disk /dev/sda: 250.0 GB, 250059292672 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 30401 244196001 83 Linux
Disk /dev/sdb: 250.0 GB, 250059292672 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 30401 244196001 83 Linux
Disk /dev/hdc: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hdc1 1 30401 244196001 83 Linux
Disk /dev/hda: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 1305 10482381 83 Linux
/dev/hda2 1306 1566 2096482+ 82 Linux swap
/dev/hda3 1567 30401 231617137+ 83 Linux
我们准备采用以上的/dev/hdc 和/dev/sdb 做RAID 1.
确认这个两个分区没有mount, 如果有mount,必须先umount.
[root@Meil89 root]# mount -l
/dev/hda1 on / type ext3 (rw) [/]
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
none on /dev/shm type tmpfs (rw)
/dev/sda1 on /mnt/sda1 type ext3 (rw) []
/dev/hda3 on /opt type ext3 (rw) []
#fdisk /dev/sdb
将设备/dev/sdb上的全部磁盘空间划分给一个主分区,建立/dev/sdb1分区,并修改分区的类型标识为fd(linux raid auto),然后对剩余的磁盘做同样的操作。创建/dev/hdc1分区。
具体步骤如下:
[root@Meil89 root]# fdisk /dev/sdb
The number of cylinders for this disk is set to 30401.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from
other
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): d
Selected partition 1
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-30401, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-30401, default 30401):
Using default value 30401
Command (m for help):
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@Meil89 root]#
重新启动使分区表生效
[root@Meil89 sda1]# mdadm -Cv /dev/md0 -l1 -n2 /dev/hdc /dev/sdb
mdadm: chunk size defaults to 64K
mdadm: size set to 244198464K
mdadm: array /dev/md0 started.
[root@Meil89 sda1]#
小提示:-C参数为创建阵列模式。/dev/md0为阵列的设备名称。-l1为阵列模式,可以选择0,1,4,5等多种不同的阵列模式,分别对应 RAID0,RAID1,RAID4,RAID5。-n2为阵列中活动磁盘的数目,该数目加上备用磁盘的数目应该等于阵列中总的磁盘数目/dev/hdc /dev/sdb为参与创建阵列的磁盘名称,阵列由2块镜象的活动磁盘组成
查看RAID阵列情况.
[root@Meil89 sda1]# cat /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md0 : active raid1 sdb[1] hdc[0]
244198464 blocks [2/2] [UU]
[>....................] resync = 3.0% (7405824/244198464) finish=84.5min speed=46653K/sec
unused devices:
[root@Meil89 sda1]#
创建文件系统:
[root@Meil89 etc]# mkfs -t ext3 /dev/md0
mke2fs 1.32 (09-Nov-2002)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
30539776 inodes, 61048976 blocks
3052448 blocks (5.00%) reserved for the super user
First data block=0
1864 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, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information:
done
This filesystem will be automatically checked every 29 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
加载文件系统:
mount /dev/md0 /home/meil/software
现在就可以使用了.为了系统开机能使用,添加如下内容到:
mdadm -Cv /dev/md0 -l1 -n2 /dev/hdc1 /dev/sdb1< /etc/y
mount /dev/md0 /home/meil/software
其中/etc/y是个文件,重新启动后创建RAID要输入y, 故创建文件内容为y的文件/etc/y.
或许可以集成到/etc/mdadm.conf中,但是还没有弄明白.