“ext4lazyinit” 在新的 RAID5 阵列上运行了 6 天

“ext4lazyinit” 在新的 RAID5 阵列上运行了 6 天

我知道有很多“ext4lazyinit”主题。但它们都是关于 4-6TB HDD 的,而且发帖者说它最终在几个小时后就完成了。

在我这边,我有一个新创建的 RAID5 区域,有 5*14TB 磁盘(因此总大小为 51TB),并且“ext4lazyinit”自 ... 6 天以来一直在运行(= 自上次重启以来,但可能在那之前已经运行了几天)。当然,它不断在阵列上生成 I/O。任何地方都没有错误,所以除此之外,一切似乎都很好。

但是,为什么要花这么长时间?好吧,磁盘阵列很大,但是... 6天?!

起初我并没有意识到这种行为,所以我在某个时间点(创建 raid 阵列几天后)重新启动了系统 - “ext4lazyinit”似乎在那之后自动重新启动了,但重新启动是否可能损坏了某些东西?

ps -ef|grep lazy
root       583     2  0 Dec02 ?        00:04:37 [ext4lazyinit]

有什么方法可以监控这个过程的进度吗(类似于cat /proc/mdstat某些 mdadm 操作可用的方法)?(我无法在 dmesg、journalctl 或任何其他日志中找到任何内容)

需要注意的是(这也许可以解释为什么它这么慢?),I/O 的数量似乎随着时间的推移而保持不变,但相当低(所以也许该过程没有以全速 HDD 运行?)。有什么办法可以提高速度吗?

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.25    0.00    0.42    1.17    0.00   98.17

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
mmcblk0           0.00         0.00         0.00          0          0
sda               3.00         0.00         8.50          0         17
sdb               5.00       256.00       264.50        512        529
sdc               4.00       192.00       200.50        384        401
sdd               4.00        64.00        72.50        128        145
sde               3.00         0.00         8.50          0         17
md0               0.50         0.00       256.00          0        512

答案1

我遇到了同样的问题。24GB RAID5 阵列,我昨天启动了 mkfs.ext4。将这个信息留在这里,以便其他看到这个帖子的人能够找到我找到的信息。

最简单的方法是关闭惰性选项,运行 mkfs.ext4,然后等待很长时间,让其初始化所有内容。如果您想使用阵列,那么在旋转磁盘上效果不会很好,因为在惰性初始化完成之前会发生大量分散的 I/O,这绝对会降低读/写速度。

mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 /dev/md0

加速:使用此选项挂载:init_itable = 0(这是将块归零后等待时间的乘数(默认值为 10,这意味着在继续之前等待将最后一个块归零所用时间的 10 倍。0 = 立即执行,但它会占用更多的 I/O 带宽)。

上面评论中的链接(强制 ext4lazyinit 完成其工作?) 对于监控进度非常有用。当前写入与 fdisk 的总扇区。我已经运行了一天,现在已达到 54%,所以我想我快到了... lazy init 的运行速度大约为 10-12MB/s。

确保您没有在磁盘上执行任何其他操作,并且:

echo 1 > /proc/sys/vm/block_dump  # Turn on logging in /var/log/syslog
fdisk -l /dev/md0                 # Note total sectors.
echo 0 > /proc/sys/vm/block_dump  # Turn of logging.  Don't fill the log :)

将 syslog 中写入的扇区数除以 fdisk 中的总数。

希望这对遇到此问题的人有所帮助。现在我只需再等一天,直到完成,然后我就可以开始以不错的速度使用阵列了。(到那时,我仍然可以从中提取 30MB/s,所以这不是没有希望的)

相关内容