欢迎光临
我们一直在努力

RAID1 Linux 配置实操

最近硬盘坏的比较, 决定新电脑先做Raid 1 后再上, 至少可以降低一些资料的损失风险.

 

主要参考此篇文章: How To Set Up Software RAID1 On A Running System (Incl. GRUB Configuration) (Debian Etch) – 此篇非常完整, 直接参考此篇即可安装完成

只要照这篇文章做, 就可以完成, 所以在这边只简单纪录步骤, 详细的可回原文去看.

  • 注1: Raid 1 需准备两块硬盘. (sda, sdb)
  • 注2: 此篇文章的操作, 建议都直接转换成root 来执行.

RAID 1 设定步骤

  1. 安装mdadm、initramfs-tools
  2. 同步sda、sdb 磁盘分区
  3. 建立RAID Array(md0, md1…)
  4. 格式化md0, md1 …
  5. Mount 文件系统(md0, md1…)
  6. 将sda 资料cp 到sdb (md0, md1…)
  7. 使用sdb 开机
  8. 将sda 加入md0, md1.. 并同步.
  9. 取消由sdb 开机的选项
  10. 测试

硬盘信息

1T 的硬盘(sda), 做下述的分割: (1T 的sdb 完全不动)

$ fdisk -l /dev/sda

/dev/sda1  *          1         24     192748+ 83 Linux
/dev/sda2             25       7319   58597087+ 83 Linux
/dev/sda3           7320      12182   39062047+ 83 Linux
/dev/sda4          12183     121601  878908117+  5 Extended
/dev/sda5          12183     121479  877928121  83 Linux
/dev/sda6         121480     121601     979933+ 82 Linux swap / Solaris

$ df -h

/dev/sda5            825G 730M 782G  1% /
/dev/sda1            183M  23M 151M 13% /boot
/dev/sda2             56G 180M  53G  1% /home
/dev/sda3             37G 508M  35G  2% /var

安装MDADM、INITRAMFS-TOOLS

  1. $ apt-get install mdadm initramfs-tools
  2. $ reboot

同步SDA、SDB 硬盘分割

  1. $ cat /proc/mdstat # 看目前有哪些分区是建置RAID 环境的
  2. $ sfdisk -d /dev/sda | sfdisk /dev/sdb # 将sda 的硬盘分割表复制给sdb
  3. $ fdisk -l # sda, sdb 就都长一样了

修改SDB 的文件系统格式

  1. $ fdisk /dev/sdb # 修改fdisk file system type
    t
    1 # 1 ... n (这边是1 ~ 6, 分别跑6次, 失败的不要理它)(有几个就分别输入几次)
    fd # file system type = Linux raid autodetect
    w
  2. $ fdisk -l /dev/sdb
    /dev/sdb1  *          1         24     192748+ fd Linux raid autodetect
    /dev/sdb2             25       7319   58597087+ fd Linux raid autodetect
    /dev/sdb3           7320      12182   39062047+ fd Linux raid autodetect
    /dev/sdb4          12183     121601  878908117+  5 Extended
    /dev/sdb5          12183     121479  877928121  fd Linux raid autodetect
    /dev/sdb6         121480     121601     979933+ fd Linux raid autodetect

清除RAID 的SUPERBLOCK

  1. $ mdadm –zero-superblock /dev/sdb1 # 有错误也不用管它
  2. $ mdadm –zero-superblock /dev/sdb2
  3. $ mdadm –zero-superblock /dev/sdb3
  4. $ mdadm –zero-superblock /dev/sdb4
  5. $ mdadm –zero-superblock /dev/sdb5
  6. $ mdadm –zero-superblock /dev/sdb6

建立RAID ARRAY(MD0, MD1…)

  1. $ mdadm –create /dev/md0 –level=1 –raid-disks=2 missing /dev/sdb1
  2. $ mdadm –create /dev/md1 –level=1 –raid-disks=2 missing /dev/sdb2
  3. $ mdadm –create /dev/md2 –level=1 –raid-disks=2 missing /dev/sdb3
  4. $ mdadm –create /dev/md3 –level=1 –raid-disks=2 missing /dev/sdb5
  5. $ mdadm –create /dev/md4 –level=1 –raid-disks=2 missing /dev/sdb6
  6. # 参数说明
  7. # missing: 忽略, /dev/sda 上面有系统, 若不使用missing, 则原有的系统会被重建, 造成系统损毁.
  8. # –create: 建立RAID 的选项
  9. # –raid-devices=N: 使用几个主分区(partition) 作为磁盘阵列的配置
  10. # –level=[015]: 设定这组磁盘阵列的等级, 支持很多, 不过建议只要用0, 1, 5 即可
  11. # –detail: 后面接的磁盘阵列配置的详细信息
  • $ cat /proc/mdstat
    md4 : active raid1 sda6[0] sdb6[1]
    979840 blocks [2/1] [_U]
    
    md3 : active raid1 sda5[2] sdb5[1]
    877928000 blocks [2/1] [_U]
    
    md2 : active raid1 sda3[0] sdb3[1]
    39061952 blocks [2/1] [_U]
    
    md1 : active raid1 sda2[0] sdb2[1]
    58596992 blocks [2/1] [_U]
    
    md0 : active raid1 sda1[0] sdb1[1]
    192640 blocks [2/1] [_U]

格式化MD0, MD1 …

  1. $ mkfs.ext3 /dev/md0
  2. $ mkfs.ext3 /dev/md1
  3. $ mkfs.ext3 /dev/md2
  4. $ mkfs.ext3 /dev/md3
  5. $ mkswap /dev/md4

备份MDADM.CONF

  1. $ cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
  2. $ mdadm –examine –scan >> /etc/mdadm/mdadm.conf # 将目前RAID 资料写入conf 档

MOUNT 文件系统(MD0, MD1…)

  1. $ mkdir /mnt/md0 /mnt/md1 /mnt/md2 /mnt/md3
  2. $ mount /dev/md0 /mnt/md0
  3. $ mount /dev/md1 /mnt/md1
  4. $ mount /dev/md2 /mnt/md2
  5. $ mount /dev/md3 /mnt/md3
  6. $ vi /etc/fstab # 将/dev/sdb1 修改成/dev/md0, 如下述:
    /dev/md3       /              ext3   errors=remount-ro 0      1
    /dev/md0       /boot          ext3   defaults       0      2
    /dev/md1       /home          ext3   defaults       0      2
    /dev/md2       /var           ext3   defaults       0      2
    /dev/md4       none           swap   sw             0      0

使用SDB 开机

  1. $ vi /boot/grub/menu.lst # 于default 0 后面加入一行fallback 1, 如下述:
    default        0
    fallback       1
  2. $ vi /boot/grub/menu.lst # 增加RAID 开机选项, 将原本/dev/sda5(根目录), 改成对应的/dev/md3
    title          Debian GNU/Linux, kernel 2.6.26-2-amd64 RAID
    root           (hd0,0)
    kernel         /vmlinuz-2.6.26-2-amd64 root=/dev/md3 ro quiet
    initrd         /initrd.img-2.6.26-2-amd64
  3. $ update-initramfs -u # 重新建立initrd.img
  4. $ grub # 设定Grub 使用sdb 开机
    1. root (hd0,0)
    2. setup (hd0)
    3. root (hd1,0)
    4. setup (hd1)
  5. $ quit

将SDA 文件CP 到SDB (MD0, MD1…)

  1. $ cp -dpRx / /mnt/md2
  2. $ cd /boot; cp -dpRx . /mnt/md3
  3. $ cd /home; cp -dpRx . /mnt/md1
  4. $ cd /var; cp -dpRx . /mnt/md2
  5. $ reboot

将SDA 加入MD0, MD1.. 并同步.

  1. $ df -h # 确定重开机后, 由md0, md1… 开机.
    /dev/md3             825G 730M 782G  1% /
    /dev/md0             183M  24M 150M 14% /boot
    /dev/md1              56G 180M  53G  1% /home
    /dev/md2              37G 508M  35G  2% /var
  2. $ cat /proc/mdstat # 应该会看到跟md0, md1 … md4
  3. $ fdisk /dev/sda # 修改sda 文件系统格式
    t
    1 # 1 ... n (这边是1 ~ 6, 分别跑6次, 失败的不要理它)(有几个就分别输入几次)
    fd # file system type = Linux raid autodetect
    w
  4. $ fdisk -l /dev/sdb
    /dev/sda1  *          1         24     192748+ fd Linux raid autodetect
    /dev/sda2             25       7319   58597087+ fd Linux raid autodetect
    /dev/sda3           7320      12182   39062047+ fd Linux raid autodetect
    /dev/sda4          12183     121601  878908117+  5 Extended
    /dev/sda5          12183     121479  877928121  fd Linux raid autodetect
    /dev/sda6         121480     121601     979933+ fd Linux raid autodetect

将SDA 加入MD0, MD1 ..

  1. $ mdadm –add /dev/md0 /dev/sda1
  2. $ mdadm –add /dev/md1 /dev/sda2
  3. $ mdadm –add /dev/md2 /dev/sda3
  4. $ mdadm –add /dev/md3 /dev/sda5
  5. $ mdadm –add /dev/md4 /dev/sda6

加入完成后, 会自动开始同步

  1. $ cat /proc/mdstat
    md4 : active raid1 sda6[0] sdb6[1]
    979840 blocks [2/2] [UU]
    
    md3 : active raid1 sda5[2] sdb5[1]
    877928000 blocks [2/1] [_U]
    [======>..............] recovery = 33.9% (298143360/877928000) finish=150.9min speed=64022K/sec
    
    md2 : active raid1 sda3[0] sdb3[1]
    39061952 blocks [2/2] [UU]
    
    md1 : active raid1 sda2[0] sdb2[1]
    58596992 blocks [2/2] [UU]
    
    md0 : active raid1 sda1[0] sdb1[1]
    192640 blocks [2/2] [UU]
  2. $ watch cat /proc/mdstat # 使用watch 监控是否sync 完毕

设定MDADM.CONF

  1. 此要等上个步骤sync 完毕后做.
  2. $ cp /etc/mdadm/mdadm.conf_orig /etc/mdadm/mdadm.conf
  3. $ mdadm –examine –scan >> /etc/mdadm/mdadm.conf

取消预设sdb 开机的选项并增加RAID 开机选项

  1. $ vi /boot/grub/menu.lst # 增加下述, 并将/dev/sda5 的开机选项都注解掉.
    title          Debian GNU/Linux, kernel 2.6.26-2-amd64 RAID (sda)
    root           (hd0,0)
    kernel         /vmlinuz-2.6.26-2-amd64 root=/dev/md3 ro quiet
    initrd         /initrd.img-2.6.26-2-amd64
    
    title          Debian GNU/Linux, kernel 2.6.26-2-amd64 RAID (sdb)
    root           (hd1,0)
    kernel         /vmlinuz-2.6.26-2-amd64 root=/dev/md3 ro quiet
    initrd         /initrd.img-2.6.26-2-amd64
  2. $ update-initramfs -u
  3. $ reboot

测试

移除sdb
  1. $ mdadm –manage /dev/md0 –fail /dev/sdb1
  2. $ mdadm –manage /dev/md1 –fail /dev/sdb2
  3. $ mdadm –manage /dev/md2 –fail /dev/sdb3
  4. $ mdadm –manage /dev/md3 –fail /dev/sdb5
  5. $ mdadm –manage /dev/md4 –fail /dev/sdb6
  6. $ mdadm –manage /dev/md0 –remove /dev/sdb1
  7. $ mdadm –manage /dev/md1 –remove /dev/sdb2
  8. $ mdadm –manage /dev/md2 –remove /dev/sdb3
  9. $ mdadm –manage /dev/md3 –remove /dev/sdb5
  10. $ mdadm –manage /dev/md4 –remove /dev/sdb6
  11. $ shutdown -h now # 将硬盘拔除重开, 然后换上新硬盘
将新的sdb 同步RAID 1
  1. $ cat /proc/mdstat # 会看到只有一颗硬盘的状况.
  2. $ sfdisk -d /dev/sda | sfdisk /dev/sdb # 或sfdisk -d /dev/sda | sfdisk –force /dev/sdb
  3. $ mdadm –zero-superblock /dev/sdb1
  4. $ mdadm –zero-superblock /dev/sdb2
  5. $ mdadm –zero-superblock /dev/sdb3
  6. $ mdadm –zero-superblock /dev/sdb4
  7. $ mdadm –zero-superblock /dev/sdb5
  8. $ mdadm –zero-superblock /dev/sdb6
  9. # 增加并同步
  10. $ mdadm -a /dev/md0 /dev/sdb1
  11. $ mdadm -a /dev/md1 /dev/sdb2
  12. $ mdadm -a /dev/md2 /dev/sdb3
  13. $ mdadm -a /dev/md3 /dev/sdb5
  14. $ mdadm -a /dev/md4 /dev/sdb6
  15. $ cat /proc/mdstat # 就会看到开始同步了.
同步完成后更新Grub 开机
  1. $ grub
    1. root (hd0,0)
    2. setup (hd0)
    3. root (hd1,0)
    4. setup (hd1)
  2. $ quit

完整移除MDADM (RAID)

设定完成后, 新系统安装也都会把之前的设定带进去, 反而造成之后设定的麻烦, 所以要清空, 就拿片Ubuntu 开机光盘, 然后fdisk /dev/sda, fdisk /dev/sdb, 把所有的分区全部删掉, 这样子之后安装就不会有RAID 的设定出现啰~

升级Kernel 后, 未更新/boot/grub 的开机光碟急救

升级完KERNEL 若没有修改/BOOT/GRUB/MENU.LST, 使用UBUNTU 光盘急救修复.

  1. mount -t ext3 /dev/sda1 /media/ # ext3 这些就看自己用哪个格式, raid 的系统ubuntu 开机光盘无法辨认.(cat /etc/fstab)
  2. 去找/media/grub/menu.lst~ 或之前的备份, 主要是把uuid 改成root(hd0,0), 再看看有没有什么是要修改的.

升级KERNEL 后, 未更新/BOOT/GRUB 的开机修改急救

若不使用开机光盘急救, 于开机选单按e, 之后将uuid 那行改成root(hd0,0) 即可, 其它再自行参照下面的修改.

title    Debian GNU/Linux, kernel 2.6.26-2-amd64 RAID (sda)
root     (hd0,0)
kernel   /vmlinuz-2.6.26-2-amd64 root=/dev/md3 ro quiet
initrd   /initrd.img-2.6.26-2-amd64
窗外天空
关注公众号『窗外天空』

获取更多建站运营运维新知!
互联网创业、前沿技术......

赞(0) 打赏
文章名称:《RAID1 Linux 配置实操》
文章链接:https://www.nixonli.com/52.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏