Linuxがディスクが切断されたことに気づくのにどのくらいかかりますか?そしてもっと速いかもしれませんか?

Linuxがディスクが切断されたことに気づくのにどのくらいかかりますか?そしてもっと速いかもしれませんか?

Linuxサーバー(CentOS 7)からディスクを取り外すと、関連ファイル/dev/sd*が約10秒後に自動的に消えることがわかりました。

Linuxがディスクが切り離されたことをどのように知ることができるかを知りたいです。すべてのデバイスを継続的に検査するスイーパーのようなものはありますか?

より速くすることは可能ですか?

ベストアンサー1

udisk2&udevが遅延を引き起こす可能性があります。

研究

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

ストレージデバイスは次のように照会できます。

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

プロセスを見てみましょう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]

そこにはあまり言うことがないのに、それが私の目をひきつけたinotify。これを見るたびに、udevが思い出しています。

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

2番目のファイルが面白いようです。内部を見てください。この行は理由と同じです。

$ 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{パラメータ/events_dfl_poll_msecs}=="0", ATTR{パラメータ/events_dfl_poll_msecs}="2000"

引用する

おすすめ記事