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"