zoukankan      html  css  js  c++  java
  • 在已运行的CentOS 5.3上建立Linux Software Raid 1

    本来想自己写一个的,不过看到网上有达人已经写了,就无耻的转载了。

    我用红字标注自己的备注。

    还要补充几个mdadm的命令,万一有什么闪失的话,备用

    1. 从raid中移出一个分区

    mdadm –manage /dev/md1 –remove /dev/sda1

    2. 停用一个md设备

    mdadm –stop /dev/md1

    原文见:  http://hi.baidu.com/enjoyunix/blog/item/4f152e3d820dfc0abba167ca.html

        FT越来越爱用软Raid,因为实在廉价性能与硬Raid差别不大。而且最重要的功能是监控磁盘的状况。呵呵~~
    这篇文章介绍如何在运营中的CentOS 5.3系统上安装上软Raid。 马上开始:

    看看我们的磁盘结构

    • /dev/sda1/boot partition, ext3;
    • /dev/sda2: swap;
    • /dev/sda3/ partition, ext3

    分区的结构和我的完全一样。

    我想把以上的磁盘转换为 md0、md1、md2

    • /dev/md0 (made up of /dev/sda1 and /dev/sdb1): /boot partition, ext3;
    • /dev/md1 (made up of /dev/sda2 and /dev/sdb2): swap;
    • /dev/md2 (made up of /dev/sda3 and /dev/sdb3): / partition, ext3

    # df -h
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/sda3             9.1G  1.1G  7.6G  12% /
    /dev/sda1             190M   12M  169M   7% /boot
    tmpfs                 252M     0  252M   0% /dev/shm

    # fdisk -l

    Disk /dev/sda: 10.7 GB, 10737418240 bytes
    255 heads, 63 sectors/track, 1305 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot      Start         End      Blocks   Id  System
    /dev/sda1   *           1          25      200781   83  Linux
    /dev/sda2              26          90      522112+  82  Linux swap / Solaris
    /dev/sda3              91        1305     9759487+  83  Linux

    Disk /dev/sdb: 10.7 GB, 10737418240 bytes
    255 heads, 63 sectors/track, 1305 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

    Disk /dev/sdb doesn’t contain a valid partition table

    安装需要用到的软件

    #yum install mkinitrd mdadm

    把模组到核心挂载

    #modprobe linear
    #modprobe multipath
    #modprobe raid0
    #modprobe raid1
    #modprobe raid5
    #modprobe raid6
    #modprobe raid10

    前期的功夫都准备好了!现在正式开始

    1. 把磁盘挂上,分区。

    #sfdisk -d /dev/sda | sfdisk /dev/sdb

    把/dev/sda 的分区附到 /dev/sdb上

    第一次看到sfdisk,记一下

    # sfdisk -d /dev/sda | sfdisk /dev/sdb
    Checking that no-one is using this disk right now …
    OK

    Disk /dev/sdb: 1305 cylinders, 255 heads, 63 sectors/track

    sfdisk: ERROR: sector 0 does not have an msdos signature
    /dev/sdb: unrecognized partition table type
    Old situation:
    No partitions found
    New situation:
    Units = sectors of 512 bytes, counting from 0

    Device Boot    Start       End   #sectors  Id  System
    /dev/sdb1   *        63    401624     401562  83  Linux
    /dev/sdb2        401625   1445849    1044225  82  Linux swap / Solaris
    /dev/sdb3       1445850  20964824   19518975  83  Linux
    /dev/sdb4             0         -          0   0  Empty
    Successfully wrote the new partition table

    Re-reading the partition table …

    If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
    to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
    (See fdisk(8).)

    然后把/dev/sdb 3个分区改变id 为 fd [raid 设备]

    #fdisk /dev/sdb

    按t 然后 1 然后 fd
    按t 然后 2 然后 fd
    按t 然后 fd
    最后w

    为安全起见,把/dev/sdb 上的raid设备初次化

    #mdadm –zero-superblock /dev/sdb1
    #mdadm –zero-superblock /dev/sdb2
    #mdadm –zero-superblock /dev/sdb3

    raid设备初始化这步我是省略了。
    2 建立software Raid 1

    #mdadm –create /dev/md0 –level=1 –raid-disks=2 missing /dev/sdb1
    #mdadm –create /dev/md1 –level=1 –raid-disks=2 missing /dev/sdb2
    #mdadm –create /dev/md2 –level=1 –raid-disks=2 missing /dev/sdb3

    格式化

    #mkfs.ext3 /dev/md0
    #mkswap /dev/md1
    #mkfs.ext3 /dev/md2

    写入/etc/mdadm.conf
    #mdadm –examine –scan > /etc/mdadm.conf

    建立临时目录

    #mkdir /mnt/md0
    #mkdir /mnt/md2

    挂载

    #mount /dev/md0 /mnt/md0
    #mount /dev/md2 /mnt/md2

    修改 /etc/fstab

    #vim /etc/fstab

    /dev/md2                 /                       ext3    defaults        1 1
    /dev/md0             /boot                   ext3    defaults        1 2
    tmpfs                   /dev/shm                tmpfs   defaults        0 0
    devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
    sysfs                   /sys                    sysfs   defaults        0 0
    proc                    /proc                   proc    defaults        0 0
    /dev/md1         swap                    swap    defaults        0 0
    开机时自动把 / 分区 挂载到 /dev/md2
    
    开机时自动把 /boot 分区 挂载到 /dev/md0
    其实这里改/etc/fstab是为了下一步mkinitrd时,以及为了以后升级kernel时,可以把root=/dev/md2写入grub.conf
    修改/etc/mtab
    
    #vim /etc/mtab
    
    /dev/md2 / ext3 rw 0 0
    proc /proc proc rw 0 0
    sysfs /sys sysfs rw 0 0
    devpts /dev/pts devpts rw,gid=5,mode=620 0 0
    /dev/md0 /boot ext3 rw 0 0
    tmpfs /dev/shm tmpfs rw 0 0
    none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
    sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0
    为毛要改/etc/mtab?不懂,照做!
    开机时自动把 / 分区 挂载到 /dev/md2
    
    开机时自动把 /boot 分区 挂载到 /dev/md0
    修改/boot/grub/menu.lst
    
    [...]
    #加入#title CentOS (2.6.18-128.el5)
    #加入#        root (hd1,0)
    #加入#        kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/md2
    #加入#        initrd /initrd-2.6.18-128.el5.img
    
    #原来#title CentOS (2.6.18-128.el5)
    #原来#        root (hd0,0)
    #原来#        kernel /vmlinuz-2.6.18-128.el5 ro root=LABEL=/
    #原来#        initrd /initrd-2.6.18-128.el5.img
    告诉grub开启服务器时root的位置.
    
    调整ramdisk 现在的分区状况
    
    #mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img_orig
    
    #mkinitrd /boot/initrd-`uname -r`.img `uname -r`
    复制数据
    
    #cp -dpRx / /mnt/md2
    
    #cp -dpRx /boot/ /mnt/md0
    为毛要cp,不能直接在最后做mirroring吗?
    cp的这个参数有什么讲究吗?
    3. 告诉GRUB boot sector 位置
    
    #grub
    
    root (hd0,0)
    setup (hd0)
    
    root (hd1,0)
    setup (hd1)
    
    完成:重启动
    #reboot
    4.把/dev/sda 加入到software Raid 1 中
    
    #fdisk /dev/sda
    
    按t 然后 1 然后 fd
    按t 然后 2 然后 fd
    按t 然后 fd
    最后w
    加入到Software Raid 1
    
    #mdadm --add /dev/md0 /dev/sda1
    #mdadm --add /dev/md1 /dev/sda2
    #mdadm --add /dev/md2 /dev/sda3
    查看重建Software Raid 1的情况
    
    # cat /proc/mdstat
    
    Personalities : [raid1]
    md0 : active raid1 sda1[0] sdb1[1]
          200704 blocks [2/2] [UU]
    md1 : active raid1 sda2[0] sdb2[1]
          522048 blocks [2/2] [UU]
    md2 : active raid1 sda3[2] sdb3[1]
          9759360 blocks [2/1] [_U]
          [====>................]  recovery = 22.8% (2232576/9759360) finish=2.4min speed=50816K/sec
    unused devices: <none>
    同步完成后把Software Raid 1 状态写入/etc/mdadm.conf
    
    #mdadm --examine --scan > /etc/mdadm.conf
    5.更好地修改/boot/grub/menu.list
    
    title CentOS (2.6.18-128.el5)
            root (hd1,0)
            kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/md2
            initrd /initrd-2.6.18-128.el5.img
    
    title CentOS (2.6.18-128.el5)
            root (hd0,0)
            kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/md2
            initrd /initrd-2.6.18-128.el5.img
    
    告诉GRUB两块磁盘都可以随时启动.
  • 相关阅读:
    POJ 1860 Currency Exchange【bellman_ford判断是否有正环——基础入门】
    POJ 3259 Wormholes【bellman_ford判断负环——基础入门题】
    hdu 4617 Weapon【异面直线距离——基础三维几何】
    POJ 3026 Borg Maze【BFS+最小生成树】
    POJ 1789 Truck History【最小生成树简单应用】
    POJ 2485 Highways【最小生成树最大权——简单模板】
    hdu 4627 The Unsolvable Problem【hdu2013多校3签到】
    POJ 1039 Pipe【经典线段与直线相交】
    POJ 1408 Fishnet【枚举+线段相交+叉积求面积】
    Rectangles
  • 原文地址:https://www.cnblogs.com/buffer/p/2116903.html
Copyright © 2011-2022 走看看