我设置了一台新服务器(这是我第一次安装此版本的 Linux)。我在一台旧机器上安装了一对 160 GB 的空白 SATA 硬盘(一个 Seagate 和一个 WDC,但 LBA 扇区数量完全相同),并开始在 RAID 1(软件镜像)配置中安装 Scientific Linux 7.0(更名为 RHEL)。
第一个问题是,我不知道如何让 SL / RHEL 安装程序 (Anaconda) 设置 RAID1 的两个驱动器。因此,我从 PartedMagic CD 启动,并使用它来进行分区。
我对两个驱动器进行了相同的分区。每个驱动器都有一个大分区,用于安装 RAID1+ext4 /
,一个小分区(当前未使用)用于安装 RAID1+ext3 /safe
,以及一个 3GB Linux Swap 分区。我曾经将fdisk
每个驱动器上的 RAID 分区类型更改为 FD,并mdadm
构建 RAID 阵列:
mdadm --create --verbose /dev/md0 --raid-devices=2 --level=1 /dev/sda1 /dev/sdb1
mdadm --create --verbose /dev/md1 --raid-devices=2 --level=1 /dev/sda2 /dev/sdb2
然后我关机,启动 SL DVD,并再次尝试安装。这次安装程序识别了 RAID1 阵列,分别将其格式化为 ext4 和 ext3,并顺利安装。
此时,一切似乎都正常。我将其关闭,然后重新启动,它启动正常。到目前为止一切顺利。
于是我测试了 RAID1 功能:我关闭了计算机,移除了其中一个驱动器,然后尝试启动它。我原本以为它会显示一些有关 RAID 阵列降级的错误消息,然后进入正常登录屏幕。但它没有起作用。相反,我得到的是:
Welcome to emergency mode! After logging in, type "journalctl -xb" to view
system logs, "systemctl reboot" to reboot, "systemctl default" to try again
to boot into default mode.
Give root password for maintenance
(or type Control-D to continue):
无论哪个驱动器丢失,都会发生同样的事情。
这可不行!镜像驱动器的目的是确保当其中一个驱动器发生故障时,服务器仍能继续运行。
Ctrl-D只是让我重复回到相同的“ Welcome to emergency mode
”屏幕。输入我的 root 密码然后“ ”也是如此systemctl default
。
于是我做了一个实验。在启动菜单中,我按下编辑e内核启动参数,将“ rhgb quiet
”改为“ bootdegraded=true
”,然后启动。没有成功。
这样我就能看见更多状态信息飞过,但当缺少一个驱动器时,它无法使机器正常启动。它仍然停在同一个“ Welcome to emergency mode
”屏幕上。以下是我在移除 Seagate 驱动器并保留 WDC 驱动器后看到的内容。最后几行如下所示(除了“....”表示我厌倦了输入的地方):
[ OK ] Started Activation of DM RAID sets.
[ OK ] Reached target Encrypted Volumes.
[ 14.855860] md: bind<sda2>
[ OK ] Found device WDC_WD1600BEVT-00A23T0.
Activating swap /dev/disk/by-uuid/add41844....
[ 15.190432] Adding 3144700k swap on /dev/sda3. Priority:-1 extents:1 across:3144700k FS
[ OK ] Activated swap /dev/disk/by-uuid/add41844....
[ TIME ] Timed out waiting for device dev-disk-by\x2duuid-a65962d\x2dbf07....
[DEPEND] Dependency failed for /safe.
[DEPEND] Dependency failed for Local File Systems.
[DEPEND] Dependency failed for Mark the need to relabel after reboot.
[DEPEND] Dependency failed for Relabel all file systems, if necessary.
[ 99.299068] systemd-journald[452]: Received request to flush runtime journal from PID 1
[ 99.3298059] type=1305 audit(1415512815.286:4): audit_pid=588 old=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:auditd_t:s0 res=1
Welcome to emergency mode! After logging in, type "journalctl -xb" to view
system logs, "systemctl reboot" to reboot, "systemctl default" to try again
to boot into default mode.
Give root password for maintenance
(or type Control-D to continue):
因此,看来在 RAID1 镜像驱动器上安装只会使驱动器故障导致服务器瘫痪的几率增加一倍(因为有两个驱动器而不是一个)。这并不是我希望通过镜像驱动器实现的目标。
有谁知道当硬盘驱动器出现故障时如何使其“正常”启动和运行(使用降级的 RAID1 阵列)?
另外两点说明:
我是 RHEL/SL/CentOS 7 的新手,因此在 SL 安装期间的“软件选择”屏幕上,我不得不做一些猜测。我选择了:“通用系统”+ FTP 服务器、文件和存储服务器、办公套件和生产力、虚拟化管理程序、虚拟化工具和开发工具
我看到一些看似无害的错误:
ATA
X: softreset failed (device not ready)
这 ”X“取决于安装了哪些驱动器。安装两个驱动器时遇到的错误比只安装一个驱动器时更多。
答案1
事实证明,问题不是出在主 RAID1 分区,而是出在其他分区。
首先,我不应该使用交换分区。这太愚蠢了。即使这有效,如果磁盘驱动器在交换分区内出现坏块,系统仍然可能容易出现故障。显然,最好在 RAID1 分区上使用交换文件;我不知道我在想什么。
但是,“额外的”ext3md1
分区也存在问题。我不知道为什么。
md1
一旦我从中删除对其他分区(两个交换分区和 ext3 分区)的引用/etc/fstab
,系统就可以使用一个驱动器正常启动,并以降级模式运行 RAID1 阵列,就像我希望的那样。
在我关闭并重新安装丢失的驱动器后,我再次启动了机器,它仍然只用一个驱动器运行。但我执行了“ mdadm --add
”来重新添加丢失的驱动器,它的状态变为“ spare rebuilding
”一段时间,然后变为“ active
”。
换句话说,它运行完美。