A: 截至 1997 年 9 月 18 日,是 “2.0.30 + pre-9 2.0.31 + Werner Fink 的交换补丁 + alpha RAID 补丁”。截至 1997 年 11 月,是 2.0.31 + ... !?
A: 确保/usr/include/linux
是指向/usr/src/linux/include/linux
的符号链接。确保新的文件raid5.c
等已被复制到其正确的位置。有时 patch 命令不会创建新文件。尝试在patch
上使用-f
标志。
A: raidtools-0.42 需要 linuxthreads-0.6,可从以下地址获取: ftp://ftp.inria.fr/INRIA/Projects/cristal/Xavier.Leroy 或者,使用 glibc v2.0。
mdrun -a /dev/md0: Invalid argument
A: 在首次使用前,使用mkraid
初始化 RAID 集。mkraid
通过擦除 RAID 分区来确保 RAID 阵列最初处于一致状态。此外,mkraid
将创建 RAID 超级块。
mdrun -a /dev/md0: Invalid argument
设置如下:cat /proc/mdstat
显示Personalities : read_ahead not set md0 : inactive sda1 sdb1 6313482 blocks md1 : inactive md2 : inactive md3 : inactive
mdrun -a
生成错误消息 /dev/md0: Invalid argument
A: 尝试lsmod
(或者,也可以使用cat /proc/modules
) 查看 RAID 模块是否已加载。如果未加载,您可以显式地使用modprobe raid1
或modprobe raid5
命令加载它们。或者,如果您正在使用自动加载器,并期望kerneld
加载它们但它没有加载,这可能是因为您的加载器缺少加载模块的信息。编辑/etc/conf.modules
并添加以下行alias md-personality-3 raid1 alias md-personality-4 raid5
mdadd -a
时,我收到错误:/dev/md0: No such file or directory
。实际上,似乎任何地方都没有 /dev/md0
。我现在该怎么办?A: 当您以 root 用户身份运行make install
时,raid-tools 包将创建这些设备。或者,您可以执行以下操作cd /dev ./MAKEDEV md
/dev/md0
上创建 RAID 阵列后,我尝试挂载它并收到以下错误: mount: wrong fs type, bad option, bad superblock on /dev/md0, or too many mounted file systems
。哪里出错了?A: 您需要在/dev/md0
上创建文件系统才能挂载它。使用mke2fs
。
在我的 Linux 2.0.30 系统上,当为 RAID-1 设备执行mkraid
时,在清除两个单独的分区期间,我在控制台上收到"Cannot allocate free page"
错误,并在系统日志中收到"Unable to handle kernel paging request at virtual address ..."
错误。此时,系统变得非常不可用,但似乎过一会儿会恢复。操作似乎已完成,没有其他错误,我正在成功使用我的 RAID-1 设备。但这些错误令人不安。有什么想法吗?
A: 这是 2.0.30 内核中一个众所周知的错误。它已在 2.0.31 内核中修复;或者,回退到 2.0.29。
mdrun
RAID-1、RAID-4 或 RAID-5 设备。如果我尝试 mdrun
一个 mdadd
过的设备,我会收到消息 ''invalid raid superblock magic
''。
A: 确保您已运行安装过程的 mkraid
部分。
/dev/md0
时,内核会吐出大量错误,例如 md0: device not running, giving up !
和 I/O error...
。我已成功将我的设备添加到虚拟设备。
A: 为了可用,设备必须正在运行。使用 mdrun -px /dev/md0
,其中 x 对于线性是 l,对于 RAID-0 是 0,对于 RAID-1 是 1,等等。
cat /proc/mdstat
显示设备的总大小,但 df
仅显示第一个物理设备的大小。
A: 您必须首次使用前 mkfs
您的新 md-dev,以便文件系统覆盖整个设备。
/etc/mdtab
,我已 mdadd
, mdrun
和 fsck
了我的两个 /dev/mdX
分区。在重启之前一切看起来都正常。一旦我重启,我在两个分区上都收到 fsck
错误:fsck.ext2: Attempt to read block from filesystem resulted in short read while trying too open /dev/md0
。为什么?!我该如何修复它?!A: 在启动过程中,必须先启动 RAID 分区,然后才能对其进行fsck
。这必须在其中一个启动脚本中完成。对于某些发行版,fsck
从/etc/rc.d/rc.S
调用,对于其他发行版,从/etc/rc.d/rc.sysinit
调用。将此文件更改为在执行fsck -A
*之前* 执行mdadd -ar
。更好的是,建议如果mdadd
返回错误,则运行ckraid
。 如何执行此操作在 “错误恢复” 部分的第 14 个问题中进行了更详细的讨论。
invalid raid superblock magic
。A: 此错误现已修复。(1997 年 9 月)确保您拥有最新的 RAID 代码。
Warning: could not write 8 blocks in inode table starting at 2097175
。A: 这似乎是mke2fs
的问题(1997 年 11 月)。临时的解决方法是获取 mke2fs 代码,并在第一个#ifdef HAVE_LLSEEK
之前将#undef HAVE_LLSEEK
添加到e2fsprogs-1.10/lib/ext2fs/llseek.c
,然后重新编译 mke2fs。
ckraid
当前无法读取 /etc/mdtab
A:/etc/mdtab
中使用的 RAID0/线性配置文件格式已过时,尽管它将在一段时间内继续受支持。当前最新的配置文件目前命名为/etc/raid1.conf
等。
raid1.o
) 没有自动加载;它们必须在 mdrun 之前手动 modprobe。如何修复此问题?A: 要自动加载模块,我们可以将以下内容添加到/etc/conf.modules
alias md-personality-3 raid1 alias md-personality-4 raid5
mdadd
了 13 个设备,现在我尝试 mdrun -p5 /dev/md0
并收到消息:/dev/md0: Invalid argument
A: 软件 RAID 的默认配置是 8 个真实设备。编辑linux/md.h
,将#define MAX_REAL=8
更改为更大的数字,然后重新构建内核。
md
工作。我怀疑这与磁盘标签有关。
A: Sun 磁盘标签位于分区的第一个 1K 中。对于 RAID-1,Sun 磁盘标签不是问题,因为 ext2fs
将跳过每个镜像上的标签。对于其他 RAID 级别(0、线性和 4/5),这似乎是一个问题;它尚未(1997 年 12 月)得到解决。