AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 509501
Accepted
Hongli Lai
Hongli Lai
Asked: 2013-05-22 01:39:18 +0800 CST2013-05-22 01:39:18 +0800 CST 2013-05-22 01:39:18 +0800 CST

如何获得有关 mdadm RAID 问题的通知?

  • 772

我正在运行 Ubuntu 12.04 LTS。昨天我在我的邮箱里发现一条消息说我的服务器被关闭了。我继续重新启动系统,但几分钟后它没有出现,而且我没有硬件 KVM 系统来查看内核向终端打印的内容。所以我将系统重新启动到 Linux 救援映像,我发现软件 RAID 1 阵列不同步。救援系统也开始重建RAID阵列。

到目前为止,没有证据表明任何磁盘存在硬件错误。到目前为止,SMART 状态看起来不错。

我从未收到 mdadm 的电子邮件通知,即使在 /etc/mdadm/mdadm.conf 中打开了电子邮件通知。

该服务器还配置为将所有系统日志消息转发到日志主机,因此我检查了我的日志主机。相关部分是:

5 月 20 日 15:38:40 内核:[ 1.869825] md0:检测到容量从 0 变为 536858624
5 月 20 日 15:38:40 内核:[ 1.870687] md0:未知分区表
5 月 20 日 15:38:40 内核:[ 1.877412] md: bind
5 月 20 日 15:38:40 内核:[ 1.878337] md/raid1:md1: 不干净——开始后台重建
5 月 20 日 15:38:40 内核:[ 1.878376] md/raid1:md1:2 个镜像中有 2 个处于活动状态
5 月 20 日 15:38:40 内核:[ 1.878418] md1:检测到从 0 到 3000052808704 的容量变化
5 月 20 日 15:38:40 内核:[ 1.878575] md:RAID 阵列 md1 的重新同步
[剪]
5 月 20 日 15:52:33 内核:内核日志记录 (proc) 已停止。
5 月 20 日 15:52:33 rsyslogd:[origin software="rsyslogd" swVersion="5.8.6" x-pid="845" x-info="http://www.rsyslog.com"] 退出信号 15 .

如您所见,系统(正常系统,而非救援系统)已经在系统启动期间检测到 RAID 阵列出现问题。然后,不久之后,某些东西(不是我)停止了系统。

所以我的问题是:

  1. 什么会导致磁盘突然变得不同步?
  2. 为什么我没有收到电子邮件通知?
  3. 为什么在停止系统之前错误没有正确记录到系统日志中?会不会是系统试图记录到 syslog,但在停止 syslog 守护进程后才这样做?如果是这样,我该怎么做才能防止这种情况发生?
  4. 我该怎么做才能查明发生了什么?或者,如果我现在无法查明发生了什么,我该如何改进日志记录和通知,以便下次我可以进行更好的事后分析?

我的问题不是关于正确的备份实践。我已经知道 RAID 不是备份等。我的问题只是关于通知和诊断。

linux
  • 2 2 个回答
  • 6761 Views

2 个回答

  • Voted
  1. Zoredache
    2013-05-22T08:41:23+08:002013-05-22T08:41:23+08:00

    什么会导致磁盘突然变得不同步?

    驱动器故障、控制器故障、其他一些硬件故障。一些晦涩的软件问题。

    为什么我没有收到电子邮件通知?

    Ubuntu 有一个 cronjob /etc/cron.d/mdadm,每天 00:57 检查一次 RAID 卷。如果你的系统那时没有问题,或者那时它已经失败了,那么就没有办法发送消息。

    为什么在停止系统之前错误没有正确记录到系统日志中?

    好吧,如果驱动器出现故障,尝试写入它们并没有真正意义,因为任何进一步的写入都可能破坏剩下的任何东西。不知道您失败的确切性质,可能是您的卷或文件系统变为只读。默认情况下,Ubuntu 设置为在根卷上出现错误时切换到只读文件系统。

    我怎样才能改进日志记录和通知,以便下次我可以做更好的事后分析?

    设置记录到远程系统日志主机。这样存储失败并不意味着什么都不能记录。

    • 2
  2. Best Answer
    Avery Payne
    2015-02-12T13:59:47+08:002015-02-12T13:59:47+08:00

    什么会导致磁盘突然变得不同步?

    它可能是驱动器盘片和内存中数据之间的路径中的任何硬件或软件故障。这可能意味着但不限于:驱动器头、驱动器控制器、电缆上的连接头、电缆本身(内部断线)、电缆插入驱动器上的端口、主板或子卡上的端口,主板或子卡上的控制器芯片,甚至软件故障(某处)。

    真实故事:我曾经有一个不稳定的 RAID 镜像,无缘无故掉落一个驱动器。驱动器检查正常,盘片干净(重复 SMART passes 没有任何结果),并且一切正常 - 直到它一次又一次地剥落。我更换了 3 美元的 SATA 电缆,问题立即消失了。这个故事的寓意:有很多地方都可能出错,如果你不检查数据路径中的每个组件,你就不能总是假设“一切都很好”。

    为什么我没有收到电子邮件通知?

    仅当 (a) 主动监控阵列,或 (b) 询问阵列时,才会发出电子邮件通知。

    我的建议是:您需要让 mdadm 作为一个进程主动监视驱动器阵列。这可以通过类似于(但不完全一样)的方式来完成:

    mdadm --monitor --scan --syslog
    

    您需要根据您的特定安装调整以上行。

    为什么在停止系统之前错误没有正确记录到系统日志中?会不会是系统试图记录到 syslog,但在停止 syslog 守护进程后才这样做?如果是这样,我该怎么做才能防止这种情况发生?

    可能有多种问题导致日志记录被删除。

    首先,系统日志的一般工作方式是一个完整的问题;虽然多年来一直致力于使其稳健可靠,但在某些极端情况下,数据可能无法写入磁盘。这是一个众所周知的设计问题,并且通过监督式服务管理(也称为守护程序工具及其同类)积极解决了这一问题。解决方案是完全绕过 syslog 并将输出写入一个始终具有打开文件描述符的记录器,因此不会丢失任何内容,并且记录器会尽快将输出转储到磁盘;虽然它不是 100% 有效的解决方案,但它确实显着提高了在内核崩溃或关闭之前将事件写入驱动器的几率。

    其次,内核有可能完全崩溃,或者发生了一些其他事件,迫使机器陷入困境。即使是有故障的硬件也可能导致问题——我曾看到 PSU 功率不足的机器会导致 Windows 8 自发关机。更换 PSU 可以永久解决关机问题。显然,内核所做的任何事情都无法防止一台刚刚决定“我受够了”并蹒跚着重新启动的机器。

    我该怎么做才能查明发生了什么?或者,如果我现在无法查明发生了什么,我该如何改进日志记录和通知,以便下次我可以进行更好的事后分析?

    有几种方法:

    • 将日志记录放在单独的分区上。虽然这不能保证您将获得完整的日志,但它确实有助于隔离文件系统问题,例如磁盘已满无法写入、导致重新挂载为只读的损坏等。它确实有助于解决这些问题具体案例。

    • 查看远程记录重要系统信息。同样,这不是保证,但如果最后一个数据包可以在重启发生之前“走出门外”,并且该数据包包含重启发生原因的关键线索,这将有所帮助。

    • 对于特定的关键服务,考虑用其他东西替换系统日志的输出,例如监督式日志记录,其中专用记录器拦截输出并尽快将其写入磁盘。这增加了输出到存储的可靠性。通过一些工作,它可以与其他服务管理安排并存。

    • 2

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve