当前位置: 首页>>技术教程>>正文


Linux Software Raid 1安装

, ,

介绍

本文分步介绍了在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)开始:

raid paritions scheme

raid 1 setup guide

软件安装

debian上的raid 1仅需要1个软件包(+先决条件)。该软件包是mdadm。只需使用apt-get工具将mdadm软件包安装到您的系统中即可。可能会要求您回答几个问题。

apt-get install mdadm 

配置内核模块

在启动时加载模块

不,我们需要确保RAID内核模块在引导时已加载。要完成此任务,我们需要编辑/etc /modules文件并添加几行。打开您喜欢的文本编辑器,或仅使用echo命令附加行。

echo raid1 >> /etc/modules
echo md >> /etc/modules

load raid kernel modules at boot time

将模块加载到内核

在这个阶段,如果我们要使用RAID模块,我们有两个选择。第一个是重新启动系统,另一个选择是使用modprobe或insmode将模块加载到内核。我发现第二种选择更容易:

modprobe raid1 

load raid kernel modules

注意:如果尚未如上图所示加载md模块,请使用modprobe加载它:

modprobe md 

有两种方法可以确认我们的raid模块已加载到内核中:

lsmod | grep raid1

要么

cat /proc/mdstat 

您应该具有类似下图所示的输出:

load raid kernel modules output from a command line

为RAID准备sdb

在此阶段,我们需要准备第二个硬盘驱动器sdb以充当RAID 1阵列。首先,我们需要从sda =>复制一个分区表。 sdb1。对于此任务,我们需要使用sfdisk命令。如果您喜欢这样做,也可以手动完成此步骤。确保磁盘sdb上没有任何数据,因为此sfdisk命令将永久删除它们!此命令会将分区表从/dev /sda复制到/dev /sdb。

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

copy a partition table

第二个硬盘驱动器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 

change partition ID

设置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

Create RAID 1 Arrays

在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

Edit mdadm.conf file

编辑/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 

edit grub to boot raid devices

更新GRUB:

update-grub 

GRUB - save changes

从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

setup grub with boot manager

重启

我们准备重新启动系统。为了确认我们正在从RAID 1阵列运行一个系统(我猜我们自从系统启动以来就处于理想状态),我们可以使用mount命令检查已安装的设备:

mount 

reboot with RAID 1 arrays

将第一个硬盘驱动器(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 

Change Partition Id with sfdisk

将具有mdadm的分区添加到RAID 1阵列

for partition in 1 5 6 8 9; do mdadm --add /dev/md$partition /dev/sda$partition; done 

Add partitions with mdadm to RAID 1 array

由于我们已将新设备添加到RAID 1阵列,因此系统开始重新同步每个/dev /md *。您可以使用watch命令查看此过程:

watch cat /proc/mdstat 

RAID 1 array resync

编辑/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

Edit /etc/mdadm/mdadm.conf

  • 现在一切就绪。您可能需要重新引导系统并确认您已成功设置Linux软件RAID 1。
  • 要确认raid 1正在运行,请使用cat /proc /mdstat命令
cat /proc/mdstat 
  • 由于我们已经使用/dev /sda7作为交换,所以现在有了未使用的分区/dev /sdb7。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/11146.html,未经允许,请勿转载。