我刚刚开始将 AWS EC2 T2 实例迁移到 T3 实例。我想创建检测磁盘大小调整的 udev 规则。
我制定了新规则
SUBSYSTEM=="block", ACTION=="change", ENV{RESIZE}=="1", RUN+="/usr/bin/logger -t udev-subsystem-nvme %k - serial:$attr{serial} - resize:%E{RESIZE} - id_serial:%E{ID_SERIAL} - devname:%E{DEVNAME}"`
在/etc/udev/rules.d/99-disk.rules
命中udevadm control --reload-rules && udevadm trigger
和观察的变化udevadm monitor
和/var/log/syslog
这在 T2 实例中有效,但在 T3 实例中无效。因此我尝试了许多不同的选项,请参阅
SUBSYSTEM=="nvme",RUN+="/usr/bin/logger -t udev-subsystem-nvme %k - serial:$attr{serial} - resize:%E{RESIZE} - id_serial:%E{ID_SERIAL} - devname:%E{DEVNAME}"
SUBSYSTEM=="block",RUN+="/usr/bin/logger -t udev-subsystem-block %k - serial:$attr{serial} - resize:%E{RESIZE} - id_serial:%E{ID_SERIAL} - devname:%E{DEVNAME}"
KERNEL=="nvme*",RUN+="/usr/bin/logger -t udev-kernel0 %k - serial:$attr{serial} - resize:%E{RESIZE} - id_serial:%E{ID_SERIAL} - devname:%E{DEVNAME}"
KERNEL=="nvme[0-9]*n[0-9]*",RUN+="/usr/bin/logger -t udev-kernel1 %k - serial:$attr{serial} - resize:%E{RESIZE} - id_serial:%E{ID_SERIAL} - devname:%E{DEVNAME}"
但它们都不起作用。我可以检测到新磁盘连接的事件,但无法检测到磁盘大小调整。
已尝试使用最新版本Ubuntu 18.04 AMI和最新的 Amazon AMI。
将非常感谢您的任何建议,因为我开始有点绝望了(:
答案1
这是经过验证的内核错误/功能。我向 AWS 支持人员咨询了这个问题,他们能够在最新的 Ubuntu、RedHat、Amazon Linux 1 和 Amazon Linux 2 上复制这个问题。
这个 udev 规则应该可以工作 - 它能检测新设备,但不能检测设备变化。
KERNEL=="nvme[0-9]*n[0-9]*", ENV{DEVTYPE}=="disk", ATTRS{model}=="Amazon Elastic Block Store",RUN+="<some_action>"