Systemdマウントは失敗します。Where =設定がユニット名と一致しません


20

このコマンドを使用する場合:

mount -t xfs -o noatime,nodiratime,logbufs=8 -L d1 /srv/node/d1

すべて正常に動作します。しかし、マウントを介してsystemdマウントしようとすると失敗します。

/etc/systemd/system/mnt-d1.mount次の内容のファイルを作成しました:

[Unit]
Description = Disk 1

[Mount]
What = LABEL=d1
Where = /srv/node/d1
Type = xfs
Options = noatime,nodiratime,logbufs=8

[Install]
WantedBy = multi-user.target

その後、次のコマンドを実行します。

systemctl daemon-reload
systemctl start mnt-d1.mount

最後の1つは私に示した:

Failed to start mnt-d1.mount: Unit mnt-d1.mount failed to load: Invalid argument.  
See system logs and 'systemctl status mnt-d1.mount' for details.

systemctl status mnt-d1.mount 私に見せた:

May 16 18:13:52 object1 systemd[1]: Cannot add dependency job for unit mnt-d1.mount, ignoring: Unit mnt-d1.mount failed to ...ectory.
May 16 18:24:05 object1 systemd[1]: mnt-d1.mount's Where= setting doesn't match unit name. Refusing.

systemdマウントユニットを介してディスクをマウントするのを手伝ってください。


それでも...同じエラー動作しません
アレクサンドル・

この質問は再開されるべきです-私は同じ問題を抱えていました、そして、コメントで提示された解決策は私を助けました。コメントに答えて、賛成票を投じることができます。
グス

回答:


26

エラーメッセージは原因を説明します:

Where= setting doesn't match unit name. Refusing.

ただし、そのメッセージを理解するには、いくつかのマニュアルページを読む必要があります。マニュアルページ
ごと(私のものを強調):systemd.mount

Where=

マウントポイントのディレクトリの絶対パスを取得します。マウント時にマウントポイントが存在しない場合は、作成されます。 この文字列は、ユニットのファイル名に反映する必要があります。(上記を参照。)このオプションは必須です。

「上記を参照」の部分は次のとおりです。

マウントユニットは、それらが制御するマウントポイントディレクトリにちなんで命名する必要があります。例:マウントポイント/home/lennartはユニットファイルで設定する必要がありますhome-lennart.mount。ファイルシステムパスをユニット名に変換するために使用されるエスケープロジックの詳細については、を参照してください systemd.unit(5)

OK、systemd.unitマニュアルページには次のように記載されています:

systemd-escape(1) コマンドを使用して、適切にエスケープされたパスを生成できます。

それを行う方法を説明したsystemd-escapeマニュアルページを指します

パスのマウントユニットを生成するには:

$ systemd-escape -p --suffix=mount "/tmp//waldi/foobar/"
tmp-waldi-foobar.mount

だから、あなたの場合、に/srv/node/d1変換しますsrv-node-d1.mount


3
「パスエスケープ」システムは、非AZ名を扱う場合でも少し複雑になる可能性があることに注意することが重要です。パスでさえ、いくつかのダッシュはCスタイルに変換する必要があります\x2dマウントユニットファイルフィットので-単位のファイルを作成するために使用されるエスケープ、再度、スラッシュ文字をエスケープする(シェル/エディタによって異なります)も必要/some-path月を実行している必要がedit some\\x2dpath.mount
GUSS

私はここでなぜマウントできなかったかを理解しようとしたshare-name。名前を変更しshare_nameて問題を解決しました。
ブライアンZ

できれば二重に賛成票を投じます!
ジョンミー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.