AWS EC2 NVMe disk resize udev rule

1

I just started migration of AWS EC2 T2 to T3 instances. I want to create udev rule which detects disk resize.

I created new rule

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}"` 

in /etc/udev/rules.d/99-disk.rules hit udevadm control --reload-rules && udevadm trigger and watched changes in udevadm monitor and /var/log/syslog

That worked in T2 instance, but does not work in T3 instance. So I tried many different options, see

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}"

but none of them works. I can detect event of new disk attached, but can't detect disk resize.

It was tried with latest Ubuntu 18.04 AMI and latest Amazon AMI.

Will be very grateful for any advice, because I am starting to be little desperate (:

Maros Mitucha

Posted 2019-04-15T14:24:39.633

Reputation: 31

Are T2 instances using SCSI or NVMe storage? – user1686 – 2019-04-15T14:27:13.313

On T2 instances EBS volumes are not exposed as NVMe block devices, so I guess SCSI can be. You can see it as /dev/xvd[a-f] On T3 you see EBS volumes as /dev/nvme[0-26]n1 – Maros Mitucha – 2019-04-15T16:19:59.597

Answers

2

It is a verified kernel bug/feature. I consulted this with AWS support, they were able to replicate this on latest Ubuntu, RedHat, Amazon Linux 1 and Amazon Linux 2.

This udev rule should work - it detects new device, but it does not detect device change.

KERNEL=="nvme[0-9]*n[0-9]*", ENV{DEVTYPE}=="disk", ATTRS{model}=="Amazon Elastic Block Store",RUN+="<some_action>"

Maros Mitucha

Posted 2019-04-15T14:24:39.633

Reputation: 31