debian下应用raid5提高数据安全性--安恒网管员手记
2005-05-02    刘世伟   
打印自: 安恒公司
地址: HTTP://ds3.anheng.com.cn/news/article.php?articleid=606
debian下raid5应用,提高数据安全性 --安恒网管员手记

转载请注明出处:http://linux.anheng.com.cn/news/html/net_admin_blog/raid5.html

现在160G硬盘性价比比较高,
不建议采用200G,这样的非标准容量硬盘,因为每个磁片是80G,200G的硬盘,很可能是屏蔽掉一个有缺陷的面,制造出来的。
4个西部数据160G盘,用软件raid5,组成480G的一个卷,因为是raid5,支持一个硬盘损坏,每个盘拿出10G做系统,用raid1,然后剩下的作raid5,对于读操作来说,raid1速度的提升跟raid0一样,因为可以从多个盘片分别读取。
软件raid支持同一组硬盘的不同分区组建不同的raid格式。

raid5原理很简单,就是多一个盘用来做奇偶校验,这些盘是同等的互为校验,就是raid5,如果有一个专门的校验盘,就是raid4, 因为冗余了一个盘,所以就允许一个盘损坏.
如果冗余2个盘,就是raid6,允许2个盘同时损坏.
由于算法只是奇偶校验就够了,所以计算量很小,并不像大家想像的那样占用大量cpu处理.

debian下安装步骤:
首先,内核中要支持raid5,执行modconf 添加raid5和raid1支持。
安装mdadm软件包:
apt-get install mdadm
分区:
建立md0卷.  暂时空缺的硬盘用"missing"代替"/dev/hdex".raid5允许一个分区用missing代替,以后可以用mdadm -manage /dev/md0 --add /dev/hdxx来填加这个missing的分区.
#mdadm -C /dev/md0 --level 5 --raid-devices 4 /dev/hdb8 /dev/hdd8 /dev/hde8 /dev/hdg8
mdadm: array /dev/md0 started.

配置/etc/mdadm/mdadm.conf
先手动列出组建raid的分区:
echo DEVICE /dev/hd*6 /dev/hd*8 >/etc/mdadm/mdadm.conf
然后自动测试raid设置并记录到/dev/mdadm/mdadm.conf:
mdadm --detail --scan >> /etc/mdadm/mdadm.conf


格式化为reiserfs分区
# mkfs.reiserfs /dev/md0
mkfs.reiserfs 3.6.19 (2003
www.namesys.com)
Guessing about desired format.. Kernel 2.6.11-amd64 is running.
Format 3.6 with standard journal
Count of blocks on the device: 108998928
Number of blocks consumed by mkreiserfs formatting process: 11538
Blocksize: 4096
Hash function used to sort names: "r5"
Journal Size 8193 blocks (first block 18)
Journal Max transaction length 1024
inode generation number: 0
UUID: 85176854-9911-4154-9580-536b5b0f3281
ATTENTION: YOU SHOULD REBOOT AFTER FDISK!
        ALL DATA WILL BE LOST ON '/dev/md0'!
Continue (y/n):y
Initializing journal - 0%....20%....40%....60%....80%....100%
Syncing..ok
挂到/mnt
mount /dev/md0 /mnt将home目录同步过来
mirrordir /home /mnt修改/de/fstab 让md0做home
到现在就完成了raid5的部署.
查看/proc/mdstat文件,可以了解现在组建raid5的进度
files:/etc# cat /proc/mdstat
Personalities : [raid1] [raid5]
md0 : active raid5 hdg8[4] hde8[2] hdd8[1] hdb8[0]
      435995712 blocks level 5, 64k chunk, algorithm 2 [4/3] [UUU_]
      [==============>......]  recovery = 73.6% (106991744/145331904) finish=19.1min speed=33334K/sec
unused devices: <none>

.

从raid中取下一个分区:

files:/# mdadm --manage /dev/md1 -r /dev/hdg6

将一个分区加入到raid:
files:/# mdadm --manage /dev/md1 -a /dev/hdg6
查看修复进度:
files:/# cat /proc/mdstat
Personalities : [raid1] [raid5]
md0 : active raid5 hdb8[0] hdg8[3] hde8[2] hdd8[1]
      435995712 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
     
md1 : active raid1 hdg6[4] hdb6[0] hde6[2] hdd6[1]
      9767424 blocks [4/3] [UUU_]
      [========>............]  recovery = 42.0% (4107584/9767424) finish=3.7min speed=24917K/sec
unused devices: <none>

1

mdadm --manage  /dev/md0 --remove #取消一个raid

mdadm --manage /dev/md0  -f /dev/hdc8 #把hdc8标识为失效

 故障恢复步骤:

1.关机,取出坏盘
2.装上新盘,开机

3.先umount损坏分区所使用的分区 umount /dev/md0 有时需要停掉一些服务才可以卸载分区.
  用lsof看哪些程序占用md0的文件.
4.mdadm /dev/md0 -f /dev/hdc8 -r /dev/坏盘hdc8
5. 给新盘分区 和其它的盘完全一样
sfdisk -d /dev/hda |sfdisk /dev/hdc
6.mdadm --manage /dev/md0 --add /dev/hdc8
7.mdadm -R /dev/md0
8.mount /dev/md0  根据/etc/fstab来挂载分区.
9.系统会自动同步,用watch cat /proc/mdstat 查看 100%的时候就ok了 840G的阵列需要5小时才可以完成.
   在重建的同时,阵列已经可以投入使用了
 

如果阵列配置文件丢失,造成阵列解散,只要分区数据没有破坏,就可以用mdadm -create进行重建,而不丢失数据. 重建后UUID会改变, 要更新/etc/mdadm/mdadm.conf的UUID。
1.mdadm -create /dev/md0 --level=5 --raid-devices=4 /dev/hda8 /dev/hdb8 /dev/hdc8 /dev/hdd8 ;跟新建raid命令一样,只是系统会提示,磁盘原来是raid中的一个,输入y继续.
2.mount /dev/md0 /mnt  ;ls /mnt 数据应该都回来了.
3.重新建立/etc/mdadm/mdadm.conf ,方法跟前面建立raid5时一样

下面是一个操作实例(红色为键入的命令):

anheng.com.cn#mdadm --create /dev/md1 --level=5 --raid-devices=3 /dev/hda11 /dev/hdc6 /dev/hdd6
mdadm: /dev/hda11 appears to be part of a raid array:
    level=5 devices=3 ctime=Thu Jul 20 19:13:28 2006
mdadm: /dev/hdc6 appears to be part of a raid array:
    level=5 devices=3 ctime=Thu Jul 20 19:13:28 2006
mdadm: /dev/hdd6 appears to be part of a raid array:
    level=5 devices=3 ctime=Thu Jul 20 19:13:28 2006
Continue creating array? y
mdadm: array /dev/md1 started.
anheng.com.cn:~# mount /dev/md1 /home1
anheng.com.cn:~# df -h /home1Filesystem            容量  已用 可用 已用% 挂载点
/dev/md1               56G   17G   40G  30% /home1
anheng.com.cn:~# ls /home1
192.168.10.80  192.168.2.2  192.168.8.1  192.168.9.1
anheng.com.cn:~# cat /proc/mdstat
Personalities : [raid5]
md0 : active raid5 hda10[0] hdd7[3] hdc7[2] hdb1[1]
      234444288 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]

md1 : active raid5 hdd6[3] hdc6[1] hda11[0]
      58412032 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]
      [>....................]  recovery =  1.0% (295540/29206016) finish=30.9min speed=15554K/sec
unused devices: <none>

责任编辑: 刘世伟