7. 在现有 Linux 系统上安装

本节介绍如何在运行的 Linux 机器上的非操作系统磁盘上安装 Linux 原生 ATA RAID。非操作系统磁盘是指不包含任何 Linux 操作系统分区的磁盘,例如/, /usr, /var, /boot。 换句话说,我们有一台运行正常的 Linux 机器,带有两个空闲磁盘,我们想在这两个磁盘上设置 ATA RAID 镜像 (raid 1)。当我们将重要数据保存在这样的镜像设备上时,我们的数据将受到保护。当然,像任何其他 RAID 1 一样,我们在读取数据时会体验到更快的读取速度,而在修改或向镜像设备添加新数据时,写入速度会略有下降。因此,如果数据磁盘的读取频率高于写入频率,则建议将 RAID 1 用于数据磁盘。托管很少更改的网站的 Web 服务器就是一个很好的例子,其中 Web 内容很少被修改,但用户访问频率很高。

如果您的 RAID 芯片来自 Promise Technology,以下是在非操作系统磁盘上安装 ATA RAID 的步骤

7.1. Append Line

为了理解涉及 Promise FastTrack RAID 的各种任务,例如升级或故障排除,我们引入一个名词:Append Line

所有的ide您在 LILO 传递的选项启动提示符,当组合成一个字符串时,构成 Append Line。所有的ide在双引号中的选项,在append=关键字之后,在/etc/lilo.conf也构成 Append Line

例如,如果您输入

linux-new ide2=0x0001,0x0009,9 ide3=0x2000,0x2009,10 ide4=none nousb expert root=/dev/hda3

启动启动 Linux 计算机时的提示符,那么 Append Line 是字符串

ide2=0x0001,0x0009,9 ide3=0x2000,0x2009,10 ide4=none.

类似地,如果您的/etc/lilo.conf具有以下部分,您的 Append Line

ide2=0x9400,0x9002 ide3=0x8800,0x8402.

image=/boot/vmlinuz-2.4.9-10
	label=linuxold
	read-only
	root=/dev/hde9
	append="nousb ide2=0x9400,0x9002 ide3=0x8800,0x8402"
	initrd="initrd.img"

当我们在启动带有 RAID 的 Linux 机器时遇到问题时,我们可能需要使用适当的 Append Line。因此,确定并写下 Append Line 非常重要。这将帮助您稍后解决问题,或顺利升级内核,或添加/删除额外的硬盘。

7.2. 确定 Append Line

为了确定正确的 Append Line,我们首先应该知道我们所有的ide设备是如何连接的。IDE 设备可以是硬盘、ATAPI CDROM 等。一旦我们确定了 Append Line,我们可以将其附加到启动选项(在启动时),或者我们可以选择将其作为字符串值分配给/etc/lilo.conf。除非您喜欢记住复杂的启动选项并在每次启动时都输入它们,否则您应该选择第二种方法,即将其插入到/etc/lilo.conf。您可以通过插入append="在此处输入您的 Append Line",保存文件,然后通过运行命令 /sbin/lilo 激活新的/etc/lilo.conf通过运行命令 /sbin/lilo

为了更好地理解,假设您的ide设备如下

上面两个空闲磁盘 (hdehdg) 是我们想要设置为 RAID 1 以创建/dev/ataraid/d0raid 设备。请注意,我们没有hdfhdh因为这就是我们在 Promise 芯片上使用 IDE/RAID 端口的方式。将两个硬盘连接到同一个 Promise 控制器 IDE 端口不是一个好主意。在上面的例子中,我们在 Promise Technology 卡上使用了 Primary Master 和 Secondary Master 连接。

如果您不知道各种ide设备是如何连接在您的计算机中的,请查看/proc/devices/proc/ide/*。您还可以仔细查看启动日志文件,/var/log/bootlog(或者在您的 Linux 系统启动后立即输入 dmesg | more)来查找您的ide设备。现在输入 less /proc/pci 并找到关于 Promise Technology 的适当信息。在 less /proc/pci 的输出中,您可以在某处看到关于您的 Promise 芯片的信息,类似于

 Bus  0, device  17, function  0:
    Unknown mass storage controller: Promise Technology Unknown device (rev 2).
      Vendor id=105a. Device id=d30.
      Medium devsel.  IRQ 10.  Master Capable.  Latency=32.  
      I/O at 0x9400 [0x9401].
      I/O at 0x9000 [0x9001].
      I/O at 0x8800 [0x8801].
      I/O at 0x8400 [0x8401].
      I/O at 0x8000 [0x8001].
      Non-prefetchable 32 bit memory at 0xd5800000 [0xd5800000].

从此输出中,我们了解到我们的 Promise Technology 卡对两者都使用 IRQ 10ide端口 (ide2ide3)。只要您的内核支持 PCI IRQ 共享,使用相同的 IRQ 完全没问题。默认情况下,我们的 Linux 内核配置为支持 PCI IRQ 共享。从上面的输出中,我们还了解到我们的 Promise Technology 卡使用各种 IO 地址。为了在启动时正确识别 Promise Technology 磁盘,我们只需要 IRQ 号和方括号 [] 外的前四个 IO 地址号。将此信息写在纸上。在这种情况下,从上面的输出

IRQ1 = 10
IRQ2 = 10
IO1 = 0x9400
IO2 = 0x9000
IO3 = 0x8800
IO4 = 0x8400

现在,我们必须评估以下内容以获得正确的 Append Line。然后在启动时指定此 Append Line,或者在 lilo 配置文件中指定它。

ideX=IO1,IO2+0x0002,IRQ1 ideY=IO3,IO4+0x0002,IRQ2
where ideX and ideY are the two IDE ports of Promise card our free disks are using.

在我们的示例中,上面的 Append Line 将变为

ide2=0x9400,0x9002,10 ide3=0x8800,0x8402,10

例如,如果我们想启动内核版本 2.4.18,标记为linux根据/etc/lilo.conf,那么我们通过以下两种方法之一指定我们的 Append Line

  1. 在启动时
    boot: linux ide2=0x9400,0x9002,10 ide3=0x8800,0x8402,10
    如果您选择此方法,您应该在内核标签后手动输入 Append Linelinux每次您启动 Linux 机器时。

  2. /etc/lilo.conf
    image=/boot/vmlinuz-2.2.18
    	label=linux
    	read-only
    	root=/dev/hda1
    	append="ide2=0x9400,0x9002,10 ide3=0x8800,0x8402,10"
    如果您选择此方法,您必须运行一次 lilo 以通过输入 /sbin/lilo 来激活更改。并且您不必在启动时输入任何额外的内容。

7.3. 设置 RAID 1

如果您想使用 Promise Technology 专有驱动程序 (ft.o) 设置 RAID 1,您可以下载 Promise 驱动程序 (ft.o) 到/lib/modules/kernel-version并通过输入 modprobe -k ft 加载模块。然后您应该能够访问您的新 raid 设备,如/dev/sdc或类似的东西。但是如果它不起作用,那么确定您的 Append Line 并将其添加到/etc/lilo.conf。如果您在现有 Linux 系统上设置 RAID,并且正在使用 Promise Technologyft驱动程序或 Linux 原生ataraid驱动程序,那么强烈建议在/etc/lilo.conf中使用 Append Line。一旦您使用新的/etc/lilo.conf包含 Append Lineft.o来自 Promise Technology 或ataraid.o,Linux 原生 RAID 模块)来启用 RAID,除非您的内核具有内置的 ataraid 支持,在这种情况下您不必加载 ataraid 模块。

由于推荐使用 Linux 原生 RAID,让我们详细讨论一下。要在现有 Linux 机器上设置 Linux 原生 RAID,请将 Append Line 插入到/etc/lilo.conf如上所述。现在,通过输入 /sbin/lilo 激活更改。然后重启您的计算机。在您的计算机重启后,如果您的内核没有内置 ataraid 支持,或者ataraid.o模块由于某种原因加载失败,则手动加载 ataraid 模块。如果您使用静态 ataraid 支持(ataraid 不是模块)编译了内核,那么您可以立即开始格式化和使用您的镜像磁盘/dev/ataraid/d0

但是,如果您将 ataraid 编译为单独的模块,则输入 lsmod 并查看 ataraid 是否已列出。如果未列出,请通过输入 modprobe -k ataraid 手动加载它。如果您没有看到任何错误,那么您可以开始使用您的镜像磁盘/dev/ataraid/d0

您可以使用的事实/dev/ataraid/d0意味着您已成功完成任务。请不要访问/dev/hde, /dev/hdg或它们的任何分区,尽管 Linux 会允许您这样做。一旦您从两个磁盘创建了一个镜像设备,您应该始终访问镜像设备,而不是直接访问磁盘。