/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년 넘게 이런 식으로 작동해 왔지만 systemd
linux-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
그것은아니요일하다, 그만둬동일한루트 볼륨이 /root
as 대신 as로 임시 마운트될 때 배치됩니다 /
.
그러나 Freddy의 대답은 너무 설득력이 있어서 다른 것을 시도했습니다. 정확히 동일한 구문을 사용하여 다른 것을 마운트했습니다(이 /usr
바인드 마운트를 주석 처리했지만 다른 바인드 마운트 디렉토리를 추가했습니다 /var/cache/apt/archives
). 그리고 그것은 작동합니다!
그렇게 보인다
systemd
/usr
볼륨이 특수하고 마운트되어야 함을 인식합니다 .앞으로다른 것.- 하지만 내 볼륨이 표시되지 않습니다.
/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
.
x-systemd.requires-mounts-for=
RequiresMountsFor=
생성된 마운트 장치와 다른 마운트 장치 간의 종속성을 구성합니다 . 매개변수는 절대 경로여야 합니다. 이 옵션은 여러 번 지정할 수 있습니다. 자세한 내용은RequiresMountsFor=
systemd.unit(5)을 참조하세요.
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
, /lib64
no 및 no 를 사용할 수 있음을 의미합니다./libx32
/sbin
pid 1이 이라는 점을 감안할 때 이는 루트 파티션에 모든 것을 시작할 /sbin/init
프로세스가 없음을 의미합니다 .init
당연히 작동하지 않습니다.
큰 루트 파티션이 필요하지 않다고 가정하는 시대는 끝난 것 같습니다.