それでもmount / usrをバインドできますか?

それでもmount / usrをバインドできますか?

/usr私のルートボリュームはほとんどいっぱいだったので、他のボリュームからバインディングをマウントしたことがあります。しかし、Kubuntu 22.04.1 LTS、systemdバージョン249.11では、今は不可能であることがわかりました。

これは私が前にしたことです/etc/fstab

LABEL=bigvol    /bigvol         auto defaults,noatime,nodiratime,barrier=1,ro  0 2
/bigvol/d-sys/2023-02/usr  /usr auto bind,ro       0 0

つまり、使用すると0 2起動/bigvol時にボリュームがマウントされ、使用すると後でボリュームは0 0マウント/usrされません。

10年以上このように動作してきましたが、systemdlinux-image-5.15.0-60のバージョン249.11+では始まりました。製本/usr/rootルートボリュームが一時的にasではなくasとしてマウントされていても、他のボリュームの前にこのボリュームをマウントします/

修正する:

だから推薦を受けました。

/bigvol/d-sys/2023-02/usr /usr auto bind,ro,x-systemd.requires-mounts-for=/bigvol 0 0

それいいえ働く、やめて同じルートボリュームが/rootasではなくasとして一時マウントされたときに配置されます/

しかし、フレディの答えはあまり説得力があり、他のことを試しました。まったく同じ構文を使用して別のものをマウントしました(この/usrバインドマウントをコメントアウトしましたが、別のバインドマウントディレクトリを追加しました/var/cache/apt/archives)。そしてそれは動作します!

そう見える

  1. systemd/usrボリュームが特殊でマウントされる必要があることを認識します。今後他のもの。
  2. しかし、私のボリュームは表示されません。/usrマウントしなければならないバインドマウントだけです。後ろに他のもの。
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.1 LTS
Release:        22.04
Codename:       jammy

$ apt-cache policy linux-image-5.15.0-60-generic
linux-image-5.15.0-60-generic:
  Installed: 5.15.0-60.66
  Candidate: 5.15.0-60.66
  Version table:
 *** 5.15.0-60.66 500
        500 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages
        500 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
        100 /var/lib/dpkg/status

$ apt-cache policy systemd
systemd:
  Installed: 249.11-0ubuntu3.6
  Candidate: 249.11-0ubuntu3.6
  Version table:
 *** 249.11-0ubuntu3.6 500
        500 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
        100 /var/lib/dpkg/status
     249.11-0ubuntu3 500
        500 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages

答え1

x-systemd.requires-mounts-for=/bigvol後でマウントするには、バインドマウントにマウントオプションを追加できます/bigvol

~からsystemd.mount — マウントデバイスの設定:

x-systemd.requires-mounts-for=

RequiresMountsFor=作成したマウントデバイスと他のマウントデバイスとの間の依存関係を設定します。パラメーターは絶対パスでなければなりません。このオプションは複数回指定できます。詳細については、RequiresMountsFor= systemd.unit(5)を参照してください。

~からsystemd.unit — デバイスの構成:

RequiresMountsFor=

スペースで区切られた絶対パスのリスト。指定されたパスにアクセスするために必要な、インストールされているすべてのデバイスの種類Requires=と依存関係を自動的に追加します。After=

noauto とマークされたマウントポイントは を通じて自動的にマウントされませんが、 local-fs.targetこのオプションの目的に応じて尊重され続けます。つまり、このデバイスからドラッグします。

LABEL=bigvol               /bigvol  auto defaults,noatime,nodiratime,barrier=1,ro       0 2
/bigvol/d-sys/2023-02/usr  /usr     auto bind,ro,x-systemd.requires-mounts-for=/bigvol  0 0

答え2

これは/Ubuntu 20.04システムからのものです。

:/$ ls -la | grep -- '->'
lrwxrwxrwx   1 root root    7 Sep 28  2020 bin -> usr/bin
lrwxrwxrwx   1 root root    7 Sep 28  2020 lib -> usr/lib
lrwxrwxrwx   1 root root    9 Sep 28  2020 lib32 -> usr/lib32
lrwxrwxrwx   1 root root    9 Sep 28  2020 lib64 -> usr/lib64
lrwxrwxrwx   1 root root   10 Sep 28  2020 libx32 -> usr/libx32
lrwxrwxrwx   1 root root    8 Sep 28  2020 sbin -> usr/sbin

Ubuntu 22.04が似ていると仮定すると、ルート/usrパーティションから削除しようとすると、カーネルが最初に起動したときにno /bin、no /lib、no /lib32/lib64no、およびnoを使用できることを意味します。/libx32/sbin

pid 1があることを考えると、これはルートパーティションにすべてを開始する/sbin/initプロセスがないことを意味します。init

当然動作しません。

大きなルートパーティションが必要ないと仮定する時代は終わったようです。

関連情報