Em quanto tempo o Linux notará que um disco foi desconectado? E isso pode ser mais rápido?

0

Descobri que, se eu desanexar um disco do meu servidor Linux (CentOS 7), o arquivo /dev/sd* relacionado desaparecerá automaticamente cerca de 10 segundos depois.

Eu estou querendo saber como o Linux sabe que um disco foi desanexado? Existe algo como um varredor de todos os dispositivos?

E é possível tornar isso mais rápido?

    
por T.Tony 01.08.2018 / 15:36

1 resposta

2

O atraso provavelmente é causado por udisk2 & udev.

Pesquisa

$ ps -eaf|grep [u]disk
root     17041     1  0 09:48 ?        00:00:00 /usr/libexec/udisks2/udisksd

Pode consultá-lo para dispositivos de armazenamento da seguinte forma:

$ udisksctl status
MODEL                     REVISION  SERIAL               DEVICE
--------------------------------------------------------------------------
VBOX HARDDISK             1.0       VBc5aaf476-f419b1f1  sda

Se você observar o processo udisk2 :

$ lsof -p $(pidof udisksd) | tail
udisksd 17041 root    3u     unix 0xffff88003a49d400      0t0     611852 socket
udisksd 17041 root    4u  a_inode                0,9        0       4852 [eventfd]
udisksd 17041 root    5u  a_inode                0,9        0       4852 [eventfd]
udisksd 17041 root    6u     unix 0xffff88003a49c000      0t0     611853 socket
udisksd 17041 root    7u  a_inode                0,9        0       4852 [eventfd]
udisksd 17041 root    8r      REG                0,3        0     611907 /proc/17041/mountinfo
udisksd 17041 root    9r      REG                0,3        0 4026532019 /proc/swaps
udisksd 17041 root   10r  a_inode                0,9        0       4852 inotify
udisksd 17041 root   11u  netlink                         0t0     611910 KOBJECT_UEVENT
udisksd 17041 root   12u  a_inode                0,9        0       4852 [eventfd]

Não há muito o que fazer, o que me chama a atenção é inotify . Sempre que vejo isso, penso imediatamente em udev.

Procurando regras do udev

$ find /etc/udev/rules.d/ /usr/lib/udev/rules.d  | grep sto
/usr/lib/udev/rules.d/90-alsa-restore.rules
/usr/lib/udev/rules.d/60-persistent-storage.rules
/usr/lib/udev/rules.d/60-persistent-storage-tape.rules

o segundo arquivo parece interessante, dê uma olhada no interior. Esta linha parece a causa:

$ cat /usr/lib/udev/rules.d/60-persistent-storage.rules
...
# enable in-kernel media-presence polling
ACTION=="add", SUBSYSTEM=="module", KERNEL=="block", ATTR{parameters/events_dfl_poll_msecs}=="0", ATTR{parameters/events_dfl_poll_msecs}="2000"

ATTR{parameters/events_dfl_poll_msecs}=="0", ATTR{parameters/events_dfl_poll_msecs}="2000"

Referências

por 01.08.2018 / 17:06