最近硬盘坏的比较, 决定新电脑先做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 设定步骤
- 安装mdadm、initramfs-tools
- 同步sda、sdb 磁盘分区
- 建立RAID Array(md0, md1…)
- 格式化md0, md1 …
- Mount 文件系统(md0, md1…)
- 将sda 资料cp 到sdb (md0, md1…)
- 使用sdb 开机
- 将sda 加入md0, md1.. 并同步.
- 取消由sdb 开机的选项
- 测试
硬盘信息
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
- $ apt-get install mdadm initramfs-tools
- $ reboot
同步SDA、SDB 硬盘分割
- $ cat /proc/mdstat # 看目前有哪些分区是建置RAID 环境的
- $ sfdisk -d /dev/sda | sfdisk /dev/sdb # 将sda 的硬盘分割表复制给sdb
- $ fdisk -l # sda, sdb 就都长一样了
修改SDB 的文件系统格式
- $ fdisk /dev/sdb # 修改fdisk file system type
t 1 # 1 ... n (这边是1 ~ 6, 分别跑6次, 失败的不要理它)(有几个就分别输入几次) fd # file system type = Linux raid autodetect w
- $ 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
- $ mdadm –zero-superblock /dev/sdb1 # 有错误也不用管它
- $ mdadm –zero-superblock /dev/sdb2
- $ mdadm –zero-superblock /dev/sdb3
- $ mdadm –zero-superblock /dev/sdb4
- $ mdadm –zero-superblock /dev/sdb5
- $ mdadm –zero-superblock /dev/sdb6
建立RAID ARRAY(MD0, MD1…)
- $ 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
- $ mdadm –create /dev/md3 –level=1 –raid-disks=2 missing /dev/sdb5
- $ mdadm –create /dev/md4 –level=1 –raid-disks=2 missing /dev/sdb6
- # 参数说明
- # missing: 忽略, /dev/sda 上面有系统, 若不使用missing, 则原有的系统会被重建, 造成系统损毁.
- # –create: 建立RAID 的选项
- # –raid-devices=N: 使用几个主分区(partition) 作为磁盘阵列的配置
- # –level=[015]: 设定这组磁盘阵列的等级, 支持很多, 不过建议只要用0, 1, 5 即可
- # –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 …
- $ mkfs.ext3 /dev/md0
- $ mkfs.ext3 /dev/md1
- $ mkfs.ext3 /dev/md2
- $ mkfs.ext3 /dev/md3
- $ mkswap /dev/md4
备份MDADM.CONF
- $ cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
- $ mdadm –examine –scan >> /etc/mdadm/mdadm.conf # 将目前RAID 资料写入conf 档
MOUNT 文件系统(MD0, MD1…)
- $ mkdir /mnt/md0 /mnt/md1 /mnt/md2 /mnt/md3
- $ mount /dev/md0 /mnt/md0
- $ mount /dev/md1 /mnt/md1
- $ mount /dev/md2 /mnt/md2
- $ mount /dev/md3 /mnt/md3
- $ 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 开机
- $ vi /boot/grub/menu.lst # 于default 0 后面加入一行fallback 1, 如下述:
default 0 fallback 1
- $ 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
- $ update-initramfs -u # 重新建立initrd.img
- $ grub # 设定Grub 使用sdb 开机
- root (hd0,0)
- setup (hd0)
- root (hd1,0)
- setup (hd1)
- $ quit
将SDA 文件CP 到SDB (MD0, MD1…)
- $ cp -dpRx / /mnt/md2
- $ cd /boot; cp -dpRx . /mnt/md3
- $ cd /home; cp -dpRx . /mnt/md1
- $ cd /var; cp -dpRx . /mnt/md2
- $ reboot
将SDA 加入MD0, MD1.. 并同步.
- $ 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
- $ cat /proc/mdstat # 应该会看到跟md0, md1 … md4
- $ fdisk /dev/sda # 修改sda 文件系统格式
t 1 # 1 ... n (这边是1 ~ 6, 分别跑6次, 失败的不要理它)(有几个就分别输入几次) fd # file system type = Linux raid autodetect w
- $ 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 ..
- $ mdadm –add /dev/md0 /dev/sda1
- $ mdadm –add /dev/md1 /dev/sda2
- $ mdadm –add /dev/md2 /dev/sda3
- $ mdadm –add /dev/md3 /dev/sda5
- $ mdadm –add /dev/md4 /dev/sda6
加入完成后, 会自动开始同步
- $ 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]
- $ watch cat /proc/mdstat # 使用watch 监控是否sync 完毕
设定MDADM.CONF
- 此要等上个步骤sync 完毕后做.
- $ cp /etc/mdadm/mdadm.conf_orig /etc/mdadm/mdadm.conf
- $ mdadm –examine –scan >> /etc/mdadm/mdadm.conf
取消预设sdb 开机的选项并增加RAID 开机选项
- $ 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
- $ update-initramfs -u
- $ reboot
测试
移除sdb
- $ mdadm –manage /dev/md0 –fail /dev/sdb1
- $ mdadm –manage /dev/md1 –fail /dev/sdb2
- $ mdadm –manage /dev/md2 –fail /dev/sdb3
- $ mdadm –manage /dev/md3 –fail /dev/sdb5
- $ mdadm –manage /dev/md4 –fail /dev/sdb6
- $ mdadm –manage /dev/md0 –remove /dev/sdb1
- $ mdadm –manage /dev/md1 –remove /dev/sdb2
- $ mdadm –manage /dev/md2 –remove /dev/sdb3
- $ mdadm –manage /dev/md3 –remove /dev/sdb5
- $ mdadm –manage /dev/md4 –remove /dev/sdb6
- $ shutdown -h now # 将硬盘拔除重开, 然后换上新硬盘
将新的sdb 同步RAID 1
- $ cat /proc/mdstat # 会看到只有一颗硬盘的状况.
- $ sfdisk -d /dev/sda | sfdisk /dev/sdb # 或sfdisk -d /dev/sda | sfdisk –force /dev/sdb
- $ mdadm –zero-superblock /dev/sdb1
- $ mdadm –zero-superblock /dev/sdb2
- $ mdadm –zero-superblock /dev/sdb3
- $ mdadm –zero-superblock /dev/sdb4
- $ mdadm –zero-superblock /dev/sdb5
- $ mdadm –zero-superblock /dev/sdb6
- # 增加并同步
- $ mdadm -a /dev/md0 /dev/sdb1
- $ mdadm -a /dev/md1 /dev/sdb2
- $ mdadm -a /dev/md2 /dev/sdb3
- $ mdadm -a /dev/md3 /dev/sdb5
- $ mdadm -a /dev/md4 /dev/sdb6
- $ cat /proc/mdstat # 就会看到开始同步了.
同步完成后更新Grub 开机
- $ grub
- root (hd0,0)
- setup (hd0)
- root (hd1,0)
- setup (hd1)
- $ quit
完整移除MDADM (RAID)
设定完成后, 新系统安装也都会把之前的设定带进去, 反而造成之后设定的麻烦, 所以要清空, 就拿片Ubuntu 开机光盘, 然后fdisk /dev/sda, fdisk /dev/sdb, 把所有的分区全部删掉, 这样子之后安装就不会有RAID 的设定出现啰~
升级Kernel 后, 未更新/boot/grub 的开机光碟急救
升级完KERNEL 若没有修改/BOOT/GRUB/MENU.LST, 使用UBUNTU 光盘急救修复.
- mount -t ext3 /dev/sda1 /media/ # ext3 这些就看自己用哪个格式, raid 的系统ubuntu 开机光盘无法辨认.(cat /etc/fstab)
- 去找/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

关注公众号『窗外天空』
获取更多建站运营运维新知!互联网创业、前沿技术......
最新评论
水淀粉vdfv
有其他下载方式么,网站上的点击下载后没有任何反应,或者直接发给我一下?83835079@qq.com
你好,我的型号ELECOM WRC-X3200GST3,ARMv8 Processor rev 4构架,CPU mediatek/mt7622,找了很久没有找到
我的也是这样。一直无法确认ARCH架构,或是不支持。一直没办法用。不知道怎么办了
您好,现在安装上了,可是ssr plus+配置好节点也没用,一直都是未运行,节点是有效的; 另外那个passwall2一找开就提示"无法确认ARCH架构,或是不支持", 麻烦大佬帮忙看下是什么问题,谢谢!