systemd 에서 fstab 을 파싱하고 마운트하는 곳은 어디일까?
local-fs.target 동작
그냥 결론적으로 말하면, local-fs.target
에서 동작을 시킨다.
위의 공식매뉴얼을 살펴보면 다음과같이 나온다. (by 구글 번역)
local-fs.target : systemd-fstab-generator(3) 이 대상 장치의 로컬 마운트 포인트를 참조하는 모든 마운트 장치에 Type의 종속성을 자동으로 추가합니다.또한 Auto Mount 옵션이 설정된
/etc/fstab
에 나열된 마운트에 대해이 대상 장치에 대한 유형의 종속성을 추가합니다.
동작관련하여 요약하면 다음과같다.
local-fs.target
서비스? 에서systemd-fstab-generator(3)
를 통해서 fstab 을 파싱한다.- fstab 의 내용대로,
/run/systemd/generator
에xxx.mount
와 같은 임시 서비스를 만든다. /run/systemd/generator
의 내용대로 파일시스템을 마운트 한다.
systemd 에 의해 마운트 관리되는 마운트 포인트들
systemd 에 의해서 mount 관리 되는 목록은 다음의 명령어를 사용한다.
systemctl -t mount
fstab 말고, 마운트 하도록 동작 하는방법은?
fstab 의 내용대로, 생성된 /run/systemd/generator
하위 폴더의 내용을 약간 수정하여 xxx.mount
서비스로 만들어서 직접 서비스를 enable 해준다.
고급 동작이 필요하면 다음의 링크를 참고하기바란다. - 참고링크 : https://www.golinuxcloud.com/mount-filesystem-without-fstab-systemd-rhel-8/ - 참고링크 : https://www.golinuxcloud.com/mount-filesystem-in-certain-order-systemd/
예제) 마운트하기 서비스
[Unit]
Description=Test Directory (/tmp_dir)
DefaultDependencies=no
Conflicts=umount.target
Before=local-fs.target umount.target
After=swap.target
[Mount]
What=/dev/disk/by-uuid/cea0757d-6329-4bf8-abbf-03f9c313b07f
Where=/tmp_dir
Type=ext4
Options=defaults
[Install]
WantedBy=multi-user.target
예제) 마운트 순서 맞추기
만약, 마운트간 order 를 맞추고 싶으면 다음과같이 RequiresMountsFor
, requires-mounts-for=/first_part
지시자를 이용해도된다.
# This file is part of systemd.
[Unit]
Description=Test Directory (/second_part)
DefaultDependencies=no
Conflicts=umount.target
Before=local-fs.target umount.target
RequiresMountsFor=/first_part
[Mount]
What=/dev/disk/by-uuid/3f46ad95-0d39-4f56-975d-2e61fc26230b
Where=/second_part
Type=ext4
Options=defaults,x-systemd.requires-mounts-for=/first_part
[Install]
WantedBy=multi-user.target
마운트 이후에 동작시키기
마운트 이후에 동작해야할 서비스가이 있다면 다음과 같이 After=local-fs.target
를 사용한다.
[Unit]
Description=kksworks sample service
After=local-fs.target
Before=shutdown.target reboot.target halt.target
[Service]
Type=oneshot
ExecStart=/usr/bin/kksworks-test.sh start
RemainAfterExit=true
ExecStop=/usr/bin/kksworks-test.sh stop
StandardOutput=journal
TimeoutSec=10
TimeoutStopSec=2
[Install]
WantedBy=basic.target
- fstab 이후에 나온데로 파일시스템이 마운트 된 이후에 서비스를 실행하게된다.