6692975 发表于 2005-1-22 15:40:33

软件raid(线性模式)+Reiserfs v3.6.19

由于种种原因,使我的分区很乱,造成了在两个ext3分区间有个2G的fat32分区,结尾又有个3G的fat32分区
    现在想把这两个小分区合并在一起,
    于是使用了线性raid实现合并分区。
    这篇笔记讲述了如何创建线性raid,在上面创建Reiserfs v3.6.19
    并且当使用raid作为根分区,如何从grub启动。
    如果你也想合并两个不相邻的分区,但是不想影响中间的分区。或者也想尝试下Reiserfs,不妨看下去 ^_^


什么是软件RAID ?

    摘自:http://www-900.ibm.com/developerWorks/cn/linux/filesystem/raid1/index.shtml

    软件 RAID 的概念很简单 -- 使您可以将两个或多个块设备(通常是磁盘区)
    组合为单个 RAID 设备。我们假定您有三个空分区:hda3、hdb3 和 hdc3。
    使用软件 RAID,您就能将这些分区组合起来,并将它们作为单个 RAID 设备
    /dev/md0 来处理。接下来就可以格化 md0,为其创建文件系统,并像任何其他
    分区一样使用它。还有许多不同的配置 RAID 卷的方法 -- 一些用于最大化性
    能,一些用于最大化可用性,而另一些二者兼具。


什么是线性RAID模式?

    摘自:
    http://www-900.ibm.com/developerWorks/cn/linux/filesystem/raid1/index.shtml

    线性模式是将两个或多个块设备组合为一个 "RAID" 卷的最简便方法之一 --
    只是将设备连接起来。如果您有三个分区,hda3、hdb3 和 hdc3,每个分区的
    容量大约 2G,它们将构成一个 6G 的合成线性卷。线性卷的前三分之一位于
    hda3 上,后三分之一位于 hdc3 上,中间三分之一位于 hdb3 上。
    要配置线性卷,您至少要有两个要连接的分区。它们可以大小不同,甚至可以
    同时属于一个物理磁盘上,而不会对性能产生负面影响。


    因为它不以并行方式写入数据,只是简单的将分区连接在一起,
    所以不能和其他的模式(RAID-0、RAID-4、RAID-5)一样提高读写性能。
    但好处就是它可以连接同一硬盘上的分区,而其他模式都至少需要两块硬盘。
    我的lfs,mdk在hda7,hda11,而有两个小分区在hda9,hda12,现在想把它们合并在一起
    自从用PQ操作linux分区中途出错,再也不敢用它了。
    况且不能再依赖PQ了。。。
    而线性raid正好可以实现这个功能,真是天无绝人之路阿 :p

内核中支持RAID :


                            kernel version : 2.6.8.1
   Device Drivers--->
      Multi-device support (RAID and LVM)--->

      [*] Multiple devices driver support (RAID and LVM)

         <*>   RAID support
         <*>   Linear (append) mode
                  ............
         <*>   Multipath I/O support

    因为我只打算使用linear的raid 于是只选了它
    不明白Multipath I/O support是做什么的,也选上了 :(
    编译进核心,这样就可以在内核级支持raid。
    重新编译好内核后,cat /proc/mdstat 会看到一些输出,说明内核已经支持raid了。
    并且会在/dev下看到md0,1.....这些就是raid的设备文件

安装RAID的工具:

    有两种选择:raidtools,mdadm 可以从http://www.kernel.org/pub/linux/utils/raid/下载。
    我选择使用后者,因为它不需要配置文件就可以创建好,并且只有一个程序
    容易管理
    mdadm与raidtools的区别:
    摘自man mdadm

   mdadm is a program that can be used to create, manage, and monitor
         MD devices.As such it provides a similar set of functionality to
         theraidtoolspackages.   Thekey differences between mdadm and
         raidtools are:

            mdadm is a single program and not a collection of programs.

            mdadm can perform (almost) all of its functions without having
               aconfigurationfileand does not use one by default.Also
               mdadm helps with management of the configuration file.

            mdadm canprovideinformationaboutyourarrays(through
               Query, Detail, and Examine) that raidtools cannot.

         mdadm does not use /etc/raidtab, the raidtools configuration file,
         at all.It has a different configuration filewithadifferent
         format and an different purpose.

    现在它的最新版本是mdadm-1.8.1.tar.bz2,下载后使用下面命令安装:

    tar jxvf mdadm-1.8.1.tar.bz2 &&
    cd mdadm-1.8.1 &&
    make && make install

    安装好后就可以用mdadm创建,管理raid了,详细参数 man mdadm

准备空闲分区,并且标识分区类型为FD,这样linux可以识别它们为RAID分区,系统启动时就会启动它们

    我已经使用cfdisk,删除了hda9,hda12并且重新标识为FD
    使用fdisk -l 显示结果如下:


    /dev/hda7            6768      8072    10482381   83Linux
    /dev/hda8            8073      8085      104391   83Linux
    /dev/hda9            8086      8525   3534268+fdLinux raid autodetect
    /dev/hda10         8526      9403   7052503+83Linux
    /dev/hda11         9404      9468      522081   82Linux swap / Solaris
    /dev/hda12         9469      9729   2096451   fdLinux raid autodetect

OK,一切都准备好了,开始创建raid.使用下面命令:


   mdadm --create --verbose /dev/md0 --level=linear --raid-devices=2 \
   /dev/hda9 /dev/hda12

    --level=linear 指定创建线性模式的raid.
    --raid-devices=2 指定raid中设备的个数

    输出结果应类似如下:
      mdadm: chunk size defaults to 64K
      mdadm: array /dev/md0 started.

    cat /proc/mdstat 输入结果应类似如下:

    Personalities : [linear] [multipath]
    Event: 1
    md0 : active linear hda12[1] hda9[0]
          5630528 blocks 64k rounding

    unused devices: <none>

    现在已经成功的将hda9,hda12组成了线性raid,可以在/dev/md0上重新创建分区拉
    因为Reiserfs刚刚放出v4.0,内核还没有支持它,需要打补丁。
    3.6.19已经放出很久了,稳定性,安全性,速度都很好。所以决定先尝试下它吧 :)

安装Reiserfs v3.6.19 :

内核支持 :

    2.6的内核直接选择就可以拉,不用打补丁了

       File systems--->
         <*> Reiserfs support
          [ ]   Enable reiserfs debug mode

          [*]   Stats in /proc/fs/reiserfs

          [*]   ReiserFS extended attributes
          [ ]   ReiserFS POSIX Access Control Lists
          [ ]   ReiserFS Security Labels

    要做根分区的话,记得要编译进核心哦。

安装Reiserfs工具

    http://ftp.namesys.com/pub/reiserfsprogs/reiserfsprogs-3.6.19.tar.gz
    下载回来,使用下面命令安装:

    tar zxvf reiserfsprogs-3.6.19.tar.gz &&
    cd reiserfsprogs-3.6.19 &&
    ./configure --prefix=/usr --sbindir=/sbin &&
    make &&
    make install &&
    ln -sf reiserfsck /sbin/fsck.reiserfs &&
    ln -sf mkreiserfs /sbin/mkfs.reiserfs


开始在raid上创建Reiserfs分区吧:


    mkreiserfs /dev/md0

   mkdir /mnt/raid
   mount /dev/md0 /mnt/raid
    在/etc/fstab中加入一行:
    /dev/md0      /mnt/raid      reiserfs      defaults      0 0
    作为根分区+更好的性能:
    /dev/md0   /       reiserfs defaults,noatime,notail1 1


   
    我的目的是要在这个raid上安装我的优化lfs
    可是grub怎么写呢?似乎grub不认识raid这个家伙。
    还好当初比较"明智",分区时分了个/boot,有了解决办法
    不然还真不知道该怎么解决这个"先有鸡还是先有蛋的问题"

raid 作为根分区,grub引导:


    将刚刚编译好支持raid,Reiserfs的内核复制到/boot分区。
    我命名为lfs-raid
    在/boot/grub/menu.lst中添加一行:
    title LFS-RAID-Reiserfs
    kernel (hd0,7)/lfs-raid root=/dev/md0 vga=791
    这里的(hd0,7)是我的/boot分区位置

    Ok,reboot.顺利进入,大功告成!
    下一步准备在RAID基础上使用LVM管理分区,再试试Reiserfs v4.0 让分区管理更灵活,速度更快.

相关资源 :

《新Linux 2.4 内核中的软件RAID》
http://www-900.ibm.com/developerWorks/cn/linux/filesystem/raid1/index.shtml
详细的讲述了各种RAID模式的原理,如何在2.4内核中使用raidtools建立,管理软件RAID。
《Boot +Root +Raid +Lilo 》HowTo :
http://www.linuxjunkies.org/html/Boot+Root+Raid+LILO.html
如何使用Lilo引导Root的raid
《Root-on-LVM-on-RAID》 HowTo :
http://www.midhgard.it/docs/lvm/html/index.html
在RAID上建立LVM
《Software-RAID》HowTo:
http://unthought.net/Software-RAID.HOWTO/Software-RAID.HOWTO.html
软件RAID很详细的资料了。

妖狐藏马 发表于 2005-1-22 15:46:00

好,等会加精 :-D
页: [1]
查看完整版本: 软件raid(线性模式)+Reiserfs v3.6.19