md_raid10 挂起 - 可能的原因?

md_raid10 挂起 - 可能的原因?

我一直在研究这种行为的可能原因:

INFO: task md1_raid10:240 blocked for more than 120 seconds.
[123491.284102]       Not tainted 4.18.20 #1
[123491.284105] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[123491.284109] md1_raid10      D    0   240      2 0x80000000
[123491.284116] Call Trace:
[123491.284132]  ? __schedule+0x421/0x8c0
[123491.284138]  ? preempt_count_add+0x67/0xb0
[123491.284144]  schedule+0x3c/0x90
[123491.284162]  md_super_wait+0x69/0xa0 [md_mod]
[123491.284173]  ? remove_wait_queue+0x60/0x60
[123491.284184]  md_update_sb.part.61+0x4ad/0x900 [md_mod]
[123491.284197]  md_check_recovery+0x310/0x530 [md_mod]
[123491.284205]  raid10d+0x64/0x15a0 [raid10]
[123491.284211]  ? __schedule+0x429/0x8c0
[123491.284216]  ? schedule+0x46/0x90
[123491.284220]  ? schedule_timeout+0x1f7/0x370
[123491.284224]  ? preempt_count_add+0x67/0xb0
[123491.284229]  ? _raw_spin_lock_irqsave+0x25/0x50
[123491.284232]  ? preempt_count_add+0x67/0xb0
[123491.284243]  ? md_thread+0x120/0x160 [md_mod]
[123491.284252]  md_thread+0x120/0x160 [md_mod]
[123491.284258]  ? remove_wait_queue+0x60/0x60
[123491.284263]  kthread+0xf8/0x130
[123491.284272]  ? md_rdev_init+0xc0/0xc0 [md_mod]
[123491.284277]  ? kthread_create_worker_on_cpu+0x70/0x70
[123491.284281]  ret_from_fork+0x22/0x40

我所发现的所有内容,包括 stackexchange 都指向重系统负载下的一些恶劣服务器条件。就我而言,它发生在一个以 Raid1+0 配置托管 4HHS 的系统中,这是全新的,实际上该系统昨天才设置完毕,几乎不包含任何数据。通过 SMB 客户端列出主目录(仅包含 10 个文件)时发生挂起。

该系统上的磁盘使用 dm_crypt 加密。未使用 LVM。

root@stasiek1:/home/lacki# cat /proc/mdstat
Personalities : [raid10] [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] 
md1 : active raid10 sdd3[3] sdb3[1] sda3[0] sdc3[2]
      7225882624 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
      bitmap: 1/54 pages [4KB], 65536KB chunk

md0 : active raid10 sdd2[3] sda2[0] sdc2[2] sdb2[1]
      585674752 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
      bitmap: 3/5 pages [12KB], 65536KB chunk

unused devices: <none>


root@stasiek1:/home/lacki# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sat Dec 29 22:59:44 2018
     Raid Level : raid10
     Array Size : 585674752 (558.54 GiB 599.73 GB)
  Used Dev Size : 292837376 (279.27 GiB 299.87 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Tue Jan 29 22:14:24 2019
          State : clean 
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

           Name : stasiek1:0  (local to host stasiek1)
           UUID : d12a1437:ab040229:dbc0f4bf:796a97dd
         Events : 768

    Number   Major   Minor   RaidDevice State
       0       8        2        0      active sync set-A   /dev/sda2
       1       8       18        1      active sync set-B   /dev/sdb2
       2       8       34        2      active sync set-A   /dev/sdc2
       3       8       50        3      active sync set-B   /dev/sdd2


root@stasiek1:/home/lacki# mdadm --detail /dev/md1
/dev/md1:
        Version : 1.2
  Creation Time : Sat Dec 29 23:00:13 2018
     Raid Level : raid10
     Array Size : 7225882624 (6891.14 GiB 7399.30 GB)
  Used Dev Size : 3612941312 (3445.57 GiB 3699.65 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Tue Jan 29 22:13:37 2019
          State : clean 
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

           Name : stasiek1:1  (local to host stasiek1)
           UUID : bdf36256:191923e1:01254e05:8bc447c9
         Events : 7357

    Number   Major   Minor   RaidDevice State
       0       8        3        0      active sync set-A   /dev/sda3
       1       8       19        1      active sync set-B   /dev/sdb3
       2       8       35        2      active sync set-A   /dev/sdc3
       3       8       51        3      active sync set-B   /dev/sdd3

系统:内核:4.18。 Debian 拉伸

答案1

评论多于答案,但评论太长。

这可能是一个内核错误。不幸的是,像这样的内核问题相当常见,最近的一个例子是MD:修复由障碍引起的raid10挂起问题

如果您不是内核开发人员并且不想深入研究,那么您对内核错误无能为力:-)

  • 看看其他人是否对该内核版本有同样的问题,并且可能已经找到了解决方法比如禁用 blk_mq
  • 尝试最新的内核[或者较旧的内核,以防错误是最近添加的,那么也许帮助把问题一分为二
  • 检查邮件列表中的补丁并尝试这些
  • 检查您的发行版的论坛和错误跟踪器
  • 报告给linux-raid 邮件列表您自己,以便可以调查并正确解决问题

然后这只是一个希望/运气的问题 - 还有一个问题是这个问题是否影响很多人,或者出于某种奇怪的原因,只影响你。

如果只有你一个人,那么即使它看起来像是一个内核错误,在新硬件上进行全新安装可能仍然可以“修复”它。许多错误都是通过这种方式修复的,而没有正确确定根本原因(因为这样做需要特殊技能和时间......)。

相关内容