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 절을 추가할 수 있습니다.