systemd.mount
コンピュータを再起動したり、デバイスをリロードしたりせずにデバイスがドライブの状態を検出できるようにする方法はありますか?そうでなければ、これを達成する他の方法はありますか?
自動でやりたいです。mount a drive when it is inserted
自動的にunmount it when it is disconnected
。
私の現在のsystemd.mount
設定:
[Unit]
Description=var-test.mount
[Mount]
What=LABEL=TEST_LABEL
Where=/var/test
Type=ext4
Options=defaults,noatime
[Install]
WantedBy=multi-user.target
これをしたいのは、ドライブが切断されてもマウント解除されないためです。そのため、たとえば/dev/sda1
マウントされたままになりますが、アクセスできません。ドライブを接続すると、新しいパーティションが作成されます。たとえば、/dev/sdb1
すでに使用されているため、同じマウントポイントにマウントすることはできません。
systemd.mount
ドライブを取り外す前にデバイスを停止してドライブを再接続した後、デバイスを起動してこの問題を回避することができました。しかし、これは自動化したいステップです。
編集する:下のリンクされた記事から良い答えを得たようです。私が調べてみましょうudev rules
。おそらく
systemd.mount
。udev rule
https://unix.stackexchange.com/a/44509/540247
答え1
udevルールを使用すると私に適しています。私はインストールデバイスを実行するためにudevルールを作成しました。したがって、デバイスが接続されるたびにインストールされます(下記のudevルールで指定されているデバイスプロパティ)。デバイスの接続が切断されるたびに削除されます。
次のようになります。
# Mount when disk is inserted
KERNEL=="sd[a-z][0-9]", KERNELS=="ata[12]", SUBSYSTEM=="block", ENV{ID_FS_TYPE}=="ext4", ENV{ID_FS_LABEL}=="TEST_LABEL", ACTION=="add", RUN+="/bin/systemctl restart var-test.mount"
# Unmount device when removed (Edit: don't do this)
KERNEL=="sd[a-z][0-9]", KERNELS=="ata[12]", SUBSYSTEM=="block", ENV{ID_FS_TYPE}=="ext4", ENV{ID_FS_LABEL}=="TEST_LABEL", ACTION=="remove", RUN+="/bin/systemctl restart var-test.mount"
編集する:以下の@roaimaが投稿したように、接続が切断された後にデバイスをアンマウントすることはお勧めできません。ただし、上記の回避策は、デバイスが接続されている間デバイスを取り付けるためにまだ機能します。