시스템 세계에서 시작 시 바인드 마운트를 올바르게 설정하는 방법은 무엇입니까?

시스템 세계에서 시작 시 바인드 마운트를 올바르게 설정하는 방법은 무엇입니까?

systemd, 영리하게 설치 항목을 병렬화하려고 합니다 /etc/fstab. 불행히도 이로 인해 바인드 마운트가 무작위로 엉망이 됩니다.

내 것을 살펴보고 fstab정리했습니다.

$ grep -Ev 'ntfs|swap|#' /etc/fstab
UUID=3cbb59fd-ff2c-47ed-955f-e4945b5c95b6   /           ext4        rw,relatime,data=ordered    0 1
UUID=2d7b3de8-782b-4981-9db6-a4b9a6d45cac   /home/muru/devel    ext4        rw,relatime,data=ordered    0 2
UUID=38d31418-ed63-49e8-b11b-df90da4833e2   /home/muru/var  btrfs       rw,relatime,space_cache 0 0
UUID=77307ad0-35e1-439b-8fe2-07a7bb5376b2   /mnt        ext4        rw,relatime,data=ordered    0 2
/home/muru /home/muru/devel/debian/jessie/home/muru none bind 0 0
/home/muru /home/muru/devel/debian/jessie-test/home/muru none bind 0 0
/home/muru/devel /home/muru/devel/debian/jessie/home/muru/devel none bind 0 0
/home/muru/devel /home/muru/devel/debian/jessie-test/home/muru/devel none bind 0 0

내 실제 마운트:

$ mount | grep ^/dev/ | grep -Ev 'fuseblk|run'
/dev/sdb1 on / type ext4 (rw,relatime,data=ordered)
/dev/sda1 on /mnt type ext4 (rw,relatime,data=ordered)
/dev/sda7 on /home/muru/devel type ext4 (rw,relatime,data=ordered)
/dev/sdb1 on /home/muru/devel/debian/jessie/home/muru type ext4 (rw,relatime,data=ordered)
/dev/sdb1 on /home/muru/devel/debian/jessie-test/home/muru type ext4 (rw,relatime,data=ordered)
/dev/sda7 on /home/muru/devel/debian/jessie-test/home/muru/devel type ext4 (rw,relatime,data=ordered)
/dev/sda7 on /home/muru/devel type ext4 (rw,relatime,data=ordered)
/dev/sda7 on /home/muru/devel/debian/jessie/home/muru/devel type ext4 (rw,relatime,data=ordered)
/dev/sda7 on /home/muru/devel/debian/jessie/home/muru/devel type ext4 (rw,relatime,data=ordered)
/dev/sda7 on /home/muru/devel/debian/jessie-test/home/muru/devel type ext4 (rw,relatime,data=ordered)
/dev/sda7 on /home/muru/devel type ext4 (rw,relatime,data=ordered)
/dev/sda7 on /home/muru/devel type ext4 (rw,relatime,data=ordered)
/dev/sdb8 on /home/muru/var type btrfs (rw,relatime,space_cache)
/dev/sdb8 on /home/muru/devel/debian/jessie/home/muru/var type btrfs (rw,relatime,space_cache)
/dev/sdb8 on /home/muru/devel/debian/jessie-test/home/muru/var type btrfs (rw,relatime,space_cache)

보시다시피, 그것은것 같다설치가 성공적으로 완료된 것 같습니다. 그러나 효과는 다음과 같습니다.

$ ls -l /home/muru/devel/debian/jessie/home/
total 4.0K
drwxr-xr-x 2 root root 4.0K Jun 20 20:36 muru/
$ ls -l /home/muru/devel/debian/jessie/home/muru/
total 0

나는 이것이 설치 순서가 무작위로 이루어졌기 때문이라고 생각합니다. 이 경우 주문을 어떻게 보장할 수 있나요? 외에 다른 것을 사용해야 합니까 fstab? 그렇지 않은 경우 원인은 무엇입니까?

저는 아치 리눅스를 사용하고 있습니다.

$ systemctl --version
systemd 221
+PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID -ELFUTILS +KMOD +IDN

답변1

Arnott의 솔루션은 저에게 효과적이었지만 작은 버그가 있었습니다. fstab의 바인드 마운트는 다음과 같아야 합니다("bind"와 "none"을 바꿉니다). fstab 매뉴얼을 참조하세요.

# /etc/fstab
/home/var /var none x-systemd.requires=/home,x-systemd.automount,bind 0 0

시스템 설치 참조는 다음과 같습니다.https://www.freedesktop.org/software/systemd/man/systemd.mount.html

답변2

1년여가 지난 지금 systemd(229) 버전이 ubuntu 16.04와 함께 출시되었으며 fstab은 이와 같은 종속성 설치를 지원합니다.

그래서 그것은 간단합니다.

# /etc/fstab
/home/var /var bind x-systemd.requires=/home,x-systemd.automount,none 0 0

이 기사에서 아이디어를 얻었습니다 https://copyninja.info/blog/systemd_automount_entry.html

1/22/2021위의 줄은 정확하지 않은 것 같습니다(맞습니까?). 나는 이것을 아래에서 사용해 왔으며 작동합니다. 이 경우 대체 드라이브에 /opt를 마운트합니다. auto댓글에서 제안한 대로 사용 하지 않았습니다.

/mnt/data/opt   /opt    x-systemd.requires=/mnt/data,x-systemd.automount,none   bind    0   0

답변3

다음 번들 설치에 대한 단위 파일을 생성할 수도 있습니다.

[Mount]
What=/home/muru
Where=/where/ever/you/want/to
Type=none
Options=bind

[Install]
WantedBy=multi-user.target

여기서의 비결은 명령줄에서 이 작업을 수행하는 방법과 유사하게 "Type"을 로 지정하고 none"Options"를 로 지정하는 것입니다.bind

종속성별 자동 정렬이 실패하는 경우 Wants/requires 절을 추가할 수 있습니다.

관련 정보