我们有 mesos 集群,我们在 aws 上运行 centos7c5
实例。内核版本是最新的4.16.1-1
。
在c5
实例类型中,卷使用nvme drivers
. nvme 卷似乎有上述行为这里在哪里if there is an io timeout on a volume, the volume mount becomes read only and no further writes can happen. So if there is heavy read-write operations on your device like on root drive then after the io timeout no further writes can happen so its dangerous.
在AWS中文档它提到要设置尽可能高的 io 超时,而且似乎是这样4294967295 sec
。
AWS 文档指定为default io timeout
,30sec
但它是 max ,255 sec
正如我们所知道的,我们应该将其设置为 max 。kernel prior to 4.15 version
4294967295 sec for kernel 4.15+.
latest 4.16.1 kernel
4294967295 sec
但是当我尝试将nvme_core.io_timeout
参数设置为最大值时,它没有得到反映。我试过这个
sh-4.2# modprobe nvme_core io_timeout=123457
sh-4.2# cat /sys/module/nvme_core/parameters/io_timeout
30
sh-4.2#
正确的设置方法是什么nvme_core.io_timeout
我尝试了很多其他方法,例如
- 将其设置在
/etc/default/grub
文件中 - 系统命令
- 覆盖
/sys/module/nvme_core/parameters/io_timeout
文件
但没有任何帮助。
答案1
根据我自己的实验,我们在构建 AMI 时这样做。
cp /etc/default/grub /tmp/grub cat >>/tmp/grub <<'EOF' GRUB_CMDLINE_LINUX="${GRUB_CMDLINE_LINUX} nvme_core.io_timeout=255" EOF sudo mv /tmp/grub /etc/default/grub sudo update-grub
然后从实例创建 AMI。当您从 AMI 启动新的 EC2 实例时,它会提供正确的设置。
显然,可以修改它来设置任何内核参数。