web-dev-qa-db-ja.com

パーティション化された外部ディスクドライブLVMに論理ボリュームを自動マウントする

問題

1つの論理ボリュームを備えた外付けHDDがあり、次のようにマウントできます。
udisksctl mount -b /dev/mapper/wd0hdd-wd0
/media/username/wdの下に新しいディレクトリが作成されます。これは、wdがディスクのラベルwd0が論理ボリュームの名前、usernameがユーザー名であるため、予想される動作です。

ただし、udisks2が標準のLinuxパーティション(lvm以外)で通常行うように、外付けHDDを接続すると、この論理ボリュームを(このコマンドを入力せずに)自動的にマウントできるようにしたいと思います。 [問題1]

さらに、/media/username/wdは755の権限を持つroot:rootに属していることに気付きました。これは、通常のユーザーとしてパーティションのルートにファイル/ディレクトリを作成できないため、問題があります。標準のLinuxパーティションの場合、作成されたディレクトリはusernameに属していますが、これは予期されている[問題2]

最後に、Nautilusは標準のLinuxパーティションでは通常のようにボリュームを左側のペインに表示せず、代わりにOther Locationsにあります。ただし、gnome-extension Place Status Indicatorは、新しいwdを他のドライブの下に正しくリストします。 [問題3]

期待される解決策

Udisks2に、特定の論理ボリュームがリムーバブルメディアとして自動マウントされると見なすように指示する方法を見つけます。

再現する

単一の論理パーティションで外部ドライブをセットアップします。

Sudo lvmdiskscan # Suppose sdc is the candidate
Sudo pvcreate /dev/sdc
Sudo vgcreate wd0hdd /dev/sdc1
Sudo lvcreate -l 100%FREE -n wd0 wd0hdd
Sudo mkfs.ext4 /dev/wd0hdd/wd0

[任意] Gnome-Diskを使用してディスクのラベルをwdに変更します

Ubuntuを再起動し、nautilusと/media/usernameで何が起こるかを確認します

  • 起動時にディスクが接続された
  • 起動完了後にプラグインされたディスク

診断

ここで何が役立つか教えてください。

問題を追跡するのに役立つ何かをログで見つけようとしましたが、journactlには何も表示されませんが、udisksctl monitorを使用してデバイスをマウントした直後に、udisksctl mount -b /dev/mapper/wd0hdd/wd0のおかげで問題のヒントが見つかるかもしれません

17:49:54.019: Added /org/freedesktop/UDisks2/jobs/2
 org.freedesktop.UDisks2.Job:
   Bytes:              0
   Cancelable:         true
   ExpectedEndTime:    0
   Objects:            ['/org/freedesktop/UDisks2/block_devices/dm_2d5']
   Operation:          filesystem-mount
   Progress:           0.0
   ProgressValid:      false
   Rate:               0
   StartTime:          1553186994019094
   StartedByUID:       0
17:49:54.095: /org/freedesktop/UDisks2/jobs/2: org.freedesktop.UDisks2.Job::Completed (true, '')
17:49:54.095: Removed /org/freedesktop/UDisks2/jobs/2
17:49:54.140: /org/freedesktop/UDisks2/block_devices/dm_2d5: org.freedesktop.UDisks2.Filesystem: Properties Changed
 MountPoints:          /media/mil/wd1
17:49:54.141: /org/freedesktop/UDisks2/block_devices/dm_2d5: org.freedesktop.UDisks2.Block: Properties Changed
 UserspaceMountOptions:        uhelper=udisks2
17:49:54.141: /org/freedesktop/UDisks2/block_devices/sdd: org.freedesktop.UDisks2.PartitionTable: Properties Changed
 Partitions:           ['/org/freedesktop/UDisks2/block_devices/sdd1']

これらのマウントオプションを変更できた場合、このUserspaceMountOptions: uhelper=udisks2が役立つかどうかはわかりません。


失敗した試行

HintAutoプロパティとudisks2

HintAutoは、udisks2のUDISKS_AUTOのおかげでオーバーライドできるプロパティです。物理パーティションがudisksctl info -b /dev/sdc1 | grep HintAuto-> HintAuto: trueであることがわかりました。ただし、論理デバイスudisksctl info -b /dev/mapper/wd0hdd-wd0 | grep HintAuto-> HintAuto: falseの場合、HintAutoはfalseです。

Autodev LVM logical volume with udev rule and udisks2 で説明されているudevルールのおかげで、論理ボリュームのHintAutoの値を上書きできましたが、udisks2がまだ自動マウントされないため、問題は解決しませんパーティション。

不十分な解決策

直接編集するかgnome-disk-utilityを使用して/etc/fstabを使用します。起動時に自動マウントするという問題は解決しますが、ディスクを後者に接続した場合は解決しません。また、問題2も問題3も解決しません(x-gvfs-showで解決できると思いますが、解決しません)。私が知る限り、/etc/fstabは静的ドライブ用であり、udisks2はあらゆる種類のリムーバブルドライブ用です。したがって、 udisks2ソリューション。

ディスクが接続されたときにデーモンが検出したすばらしいシェルスクリプトを使用します。たぶん、他に選択の余地はないが、上記の3つの問題すべてを解決するスクリプトが見つからなかった場合は、フムです。また、私はまだudisks2で作業ができると信じています。

すべての論理ボリュームを自動マウントするようにudisks2に指示します。私の論理ボリュームの一部が他のLinuxシステムであるため、それは望ましくありません。とにかく、それを行う方法は見つかりませんでした。


動機

人々は尋ねることができます:
-なぜ単一の標準パーティションではなく、ディスク全体に単一のLVMパーティションがあるのですか? KISS!
-はい、そうです!ただし、ここで達成しようとしているのは、最終的に達成したいことの単純なシナリオにすぎません。 EFIモードでマルチブートする小さなESPパーティションをインストールした別のディスクと、2つの異なるLinuxとメディアデータ用の3番目の巨大な論理ボリュームを持つ2つの論理ボリュームを含む別のLVM物理ボリュームがあります。ほとんどの場合、このディスクはパソコンに接続されているだけなので、メディアデータストレージパーティションはバックアップと音楽にのみ使用しますが、コンピューターなしで他の場所に行ってディスクを持ってくるだけなので、自分のLinux、emacs、音楽プレーヤーを好きなように構成して快適な環境で作業を開始するこのコンテキストでは、LVMはこのセットアップで暗号化のサイズ変更と管理を簡単に行うのに非常に役立ちます。

4
Émilien

最後に、多くの人が試行した後、論理ボリュームを自動マウントするために私が見つけた最善かつ唯一の有効なソリューションは、SystemDを使用することです。 <path-to-mount-folder>.mountの下に<path-to-mount-folder>.automountおよび/etc/systemd/system/ファイルを作成します

media-username-wd.mount

[Unit]
Description=Western Digital external drive mount in media

[Mount]
What=/dev/wdhdd0/wd0
Where=/media/username/wd
Type=ext4
Options=defaults

[Install]
WantedBy=multi-user.target

media-username-wd.automount

[Unit]
Description=Western Digital external drive automount in media

[Automount]
Where=/media/username/wd

[Install]
WantedBy=multi-user.target

これらの新しいサービスをインストールする

systemctl daemon-reload
systemctl disable media-mil-wd.mount
systemctl enable media-mil-wd.automount

サービス.mountは無効になっており、.automountのみが意図的に有効になっています。前者はfstabの精神で起動時にパーティションをマウントするために使用され、後者は検出時にパーティションを自動マウントするために使用されます(外部ドライブが接続されています)。作成されたすべての.mountファイルには.automountファイルの存在が必要ですが、サービスを有効にする必要はありません。

ステータスを確認する

systemctl start media-mil-wd.automount
systemctl status media-mil-wd.automount

TomášTomečekさんの計り知れない投稿 Automount with SystemD に感謝します。これは、私がそれをもっと早く発見した場合に限り、udevのマニュアルを読む時間を節約できたでしょう。

最後に、この解決策は今や私の主な問題である[Problem1]と[Problem2]であるNiceを解決するのに十分です。しかし、それは[Problem3]を解決しませんが、私は今のところそれに耐えることができます。

Nautilusへの完全な統合である[Problem3]をより簡単に、または解決することができる場合は特に、私はまだ提案を受け入れています。

3
Émilien