介绍
本文分步介绍了在Linux平台上设置Linux软件RAID 1的过程。尽管此软件RAID 1配置已在Debian(Ubuntu)上完成,但是如果您正在运行其他Linux发行版,如RedHat,Fedora,Suse,PCLinux0S等,它也可以为您提供指导。对于RAID-1设置,我们需要两个或多个磁盘。 RAID1模式为两个或多个磁盘之间的所有数据创建精确的镜像。
系统信息
- 操作系统:Debian Etch(在/dev /sda上的基本安装)
- 内核:Linux raid 2.6.18-5-686#1 SMP Fri Jun 1 00:47:00 UTC 2007 i686 GNU /Linux
- 硬盘:/dev /sda-> 4GB,/dev /sdb-> 5GB
计划
我们从运行Linux系统Debian Etch以及以下分区方案和硬盘驱动器(sda,sdb)开始:
软件安装
debian上的raid 1仅需要1个软件包(+先决条件)。该软件包是mdadm。只需使用apt-get工具将mdadm软件包安装到您的系统中即可。可能会要求您回答几个问题。
apt-get install mdadm
配置内核模块
在启动时加载模块
不,我们需要确保RAID内核模块在引导时已加载。要完成此任务,我们需要编辑/etc /modules文件并添加几行。打开您喜欢的文本编辑器,或仅使用echo命令附加行。
echo raid1 >> /etc/modules
echo md >> /etc/modules
将模块加载到内核
在这个阶段,如果我们要使用RAID模块,我们有两个选择。第一个是重新启动系统,另一个选择是使用modprobe或insmode将模块加载到内核。我发现第二种选择更容易:
modprobe raid1
注意:如果尚未如上图所示加载md模块,请使用modprobe加载它:
modprobe md
有两种方法可以确认我们的raid模块已加载到内核中:
lsmod | grep raid1
要么
cat /proc/mdstat
您应该具有类似下图所示的输出:
为RAID准备sdb
在此阶段,我们需要准备第二个硬盘驱动器sdb以充当RAID 1阵列。首先,我们需要从sda =>复制一个分区表。 sdb1。对于此任务,我们需要使用sfdisk命令。如果您喜欢这样做,也可以手动完成此步骤。确保磁盘sdb上没有任何数据,因为此sfdisk命令将永久删除它们!此命令会将分区表从/dev /sda复制到/dev /sdb。
sfdisk -d /dev/sda | sfdisk /dev/sdb
第二个硬盘驱动器sdb几乎准备就绪。我们要做的就是将以下分区的分区ID更改为sdb1,sdb5,sdb6,sdb8和sdb9(Linux raid autodetect)。同样,在此任务中,sfdisk命令非常方便:注意:我们对镜像交换sdb7分区(交换分区)不感兴趣。
for partition in 1 5 6 8 9; do sfdisk --change-id /dev/sdb $partition fd; done
设置RAID 1阵列
创建RAID 1阵列
现在该创建RAID 1阵列了。我们首先仅从/dev /sdb创建RAID 1阵列。准备就绪后,我们也将第一个硬盘驱动器/dev /sda包含到该阵列中。
for partition in 1 5 6 8 9; do mdadm --create /dev/md$partition --level=1 \
--raid-disks=2 missing /dev/sdb$partition; done
在RAID 1阵列上创建文件系统
现在,我们可以在新的RAID 1阵列上创建文件系统:
for partition in 1 5 6 8 9; do mkfs.ext3 /dev/md$partition; done
编辑mdadm.conf文件
请复制您的/etc/mdadm/mdadm.conf文件,因为我们将在本教程的后期使用。让我们编辑mdadm.conf文件。请确保使用附加”>>”,以避免意外覆盖mdadm.conf文件。
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
编辑/etc /fstab
仅仅因为我们要使系统在每次重新引导后都挂载新的RAID 1阵列,所以我们需要编辑/etc /fstab文件。旧的/etc /fstab
# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
/dev/sda1 / ext3 defaults,errors=remount-ro 0 1
/dev/sda9 /home ext3 defaults 0 2
/dev/sda8 /tmp ext3 defaults 0 2
/dev/sda5 /usr ext3 defaults 0 2
/dev/sda6 /var ext3 defaults 0 2
/dev/sda7 none swap sw 0 0
/dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0
新的/etc /fstab
# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
/dev/md1 / ext3 defaults,errors=remount-ro 0 1
/dev/md9 /home ext3 defaults 0 2
/dev/md8 /tmp ext3 defaults 0 2
/dev/md5 /usr ext3 defaults 0 2
/dev/md6 /var ext3 defaults 0 2
/dev/sda7 none swap sw 0 0
/dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0
配置GRUB引导管理器
首先,我们复制/boot/grub/menu.lst。
cp /boot/grub/menu.lst /boot/grub/menu.lst_orig
让我们使用sed命令来完成这项工作:
sed 's/sda1/md1/' < /boot/grub/menu.lst_orig > /boot/grub/menu.lst
更新GRUB:
update-grub
从sda =>复制数据;数据库
以单模式重启:
init 1
将数据从每个分区复制到新的RAID 1阵列。对于此操作,我们使用rsync命令将克隆两个分区。如果您的系统上未安装rsync,请发出命令:
apt-get install rsync
“/”复制根分区:
mount /dev/md1 /media; rsync -aqxP / /media; umount /media
复制/usr /分区:
mount /dev/md5 /media; rsync -aqxP /usr/* /media; umount /media
复制/var分区:
mount /dev/md6 /media; rsync -aqxP /var/* /media; umount /media
复制/tmp /分区:
注意:如果愿意,您可以省略/tmp!
mount /dev/md8 /media; rsync -aqxP /tmp/* /media; umount /media
复制/home分区:
mount /dev/md9 /media; rsync -aqxP /home/* /media; umount /media
设置启动管理器
grub
进入GRUB后,输入以下内容linux命令s:
device (hd0) /dev/sdb
root (hd0,0)
setup (hd0)
quit
重启
我们准备重新启动系统。为了确认我们正在从RAID 1阵列运行一个系统(我猜我们自从系统启动以来就处于理想状态),我们可以使用mount命令检查已安装的设备:
mount
将第一个硬盘驱动器(sda)添加到RAID 1阵列
使用sfdisk更改分区ID
与使用/dev /sdb一样,我们需要首先更改分区ID:
for partition in 1 5 6 8 9; do sfdisk --change-id /dev/sda $partition fd; done
将具有mdadm的分区添加到RAID 1阵列
for partition in 1 5 6 8 9; do mdadm --add /dev/md$partition /dev/sda$partition; done
由于我们已将新设备添加到RAID 1阵列,因此系统开始重新同步每个/dev /md *。您可以使用watch命令查看此过程:
watch cat /proc/mdstat
编辑/etc/mdadm/mdadm.conf
现在我们需要再次编辑/etc/mdadm/mdadm.conf文件,为此,我们可以将该文件的备份副本用作模板。
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig1
cp /etc/mdadm/mdadm.conf_orig /etc/mdadm/mdadm.conf
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
完
- 现在一切就绪。您可能需要重新引导系统并确认您已成功设置Linux软件RAID 1。
- 要确认raid 1正在运行,请使用cat /proc /mdstat命令
cat /proc/mdstat
- 由于我们已经使用/dev /sda7作为交换,所以现在有了未使用的分区/dev /sdb7。