web-dev-qa-db-ja.com

プラグイン時または再起動後にudevに特定のUSBディスクをマウントさせるにはどうすればよいですか?

Fedora 15にアップグレードしたばかりです。ここ数年、バックアップに Bacula を使用しましたが、正常に動作します。しかし今、私は問題にぶつかりました。おそらく、Baculaがrootとしてではなくユーザーbaculaとして実行されているためです。

私のバックアップメディアは2つのUSBディスクドライブです(1つをオフサイトに置き、月に1回程度交換します)。ただし、Fedoraは、モード700のUIDが所有するマウントポイントを使用してUSBドライブを自動マウントします。これは、おそらくログインしており、これがほとんどのUSBストレージにとって正しいことであるためです。ただし、この場合、Baculaがアクセスできないためではありません。

イベントのシーケンスを正しく理解していれば、udevは/ dev/sdbおよび/ dev/sdb1デバイスノードを作成し、これらはudisk(Gnomeコンポーネント)によって自動マウントされます。マウントパラメータが何であるかを決定するのはudiskです。

「BACKUP *」というラベルの付いたディスクを、bacula:bacula、モード700が所有するマウントポイントでマウントする必要があります。/etc/udev/rules.dにカスタムudevルールファイルが必要だと思います。 udev(7)ページと " devルールの記述 "を読みました。これが私がこれまでに思いついたもので、「10-backup-disk.rules」というファイルにあります。 udev OKによって解析されていますが、機能していません。ディスクはまだ私が所有していることになります。誰かが私が間違っていることを教えてもらえますか?

ありがとう。

KERNEL!="sd[a-z][0-9]", GOTO="backup-disk_auto_mount_end"
ENV{ID_FS_LABEL}!="BACKUP*", GOTO="backup-disk_auto_mount_end"

# Import FS infos
IMPORT{program}="/sbin/blkid -o udev -p %N"

# Get disk label
ENV{dir_name}="%E{ID_FS_LABEL}"

# Global mount options
ACTION=="add", ENV{mount_options}="relatime,rw"
# Filesystem-specific mount options
ACTION=="add", ENV{mount_options}="$env{mount_options}"

# Mount the device
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}"

# Clean up after removal
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"

# Exit
LABEL="backup-disk_auto_mount_end"
2
Paul Johnson

udevについては何も知りませんが、Fedora 15を使用しているので、systemdを使用して同じことをはるかに簡単に実行できます。

BACKUP_ONEというラベルの付いたUSBドライブがあると仮定して、次のファイルを作成します。

/etc/systemd/system/mnt-backup1.mount

[Mount]
What=/dev/disk/by-label/BACKUP_ONE
Where=/mnt/backup1
Options=uid=bacula,gid=bacula,mode=0700

ファイル名は.mountで終わり、マウントポイント(ユニットファイルのWhere=行)と一致する名前を持ち、スラッシュ(/)がダッシュ(-)。詳細については、 man systemd.unit を参照してください。

さらに、/etc/systemd/system/mnt-backup1.automountを作成することにより、Baculaが実際にバックアップを実行するまで(またはドライブにアクセスしようとするまで)ドライブがマウントされないようにすることができます。

[Automount]
Where=/mnt/backup1
[Install]
WantedBy=remote-fs.target

他のドライブについてもこれを繰り返し、systemctl enable mnt-backup1.automountsystemctl daemon-reloadを実行して、systemdに変更を通知します。 (混乱しないように、この時点でプラグが抜かれていることを確認します。)

udisksは、systemd構成に従い、定義したオプションでマウントします。

6
Patches