새로 추가된 디스크를 분할하고 이에 대한 시스템 장치 파일을 생성하여 마운트해야 하는 udev 규칙에 의해 트리거되는 스크립트가 있습니다. 그러나 설치 부분이 제대로 작동하지 않고 다음과 같은 오류가 발생하면서 실패합니다. A dependency job for mnt-volume1.mount failed. See 'journalctl -xe' for details.
install 명령을 사용하여 설치하려고 해도 오류가 발생하지 않지만 스크립트 외부에서 확인하면 파티션이 마운트되지 않습니다. systemd 시작을 수동으로 실행하면 문제 없이 모든 것이 잘 작동합니다.
udev에 의해 트리거되는 스크립트는 다음과 같습니다:
#!/bin/bash -x
LOGFILE=/tmp/set-bash.log
exec > >(tee -a $LOGFILE)
exec 2>&1
device=$1
dev=${device##*/}
FS=''
[ ${dev:0:2} = "sd" ] && FS='xfs'
[ ${dev:0:2} = "vd" ] && FS='ext4'
[ -z "${FS}" ] && { echo "No FS specified!"; exit ; }
[ -e "${device}1" ] || {
echo ';' | sfdisk ${device}
counter=0
while true
do
[ "${counter}" = "60" ] && { echo "Timeout reached, exiting..."; exit; }
[ -e "${device}1" ] && {
/usr/sbin/mkfs.${FS} ${device}1
break
}
counter=$(( counter++))
sleep 1
done
}
for i in {1..9999}
do
if [[ ! -e "/mnt/volume${i}" ]]
then
declare -g DIRECTORY="volume${i}"
mkdir -p /mnt/$DIRECTORY
break
fi
done
cat << EOF > /etc/systemd/system/mnt-${DIRECTORY}.mount
[Unit]
Description=mounting /mnt/${DIRECTORY}
[Mount]
What=${device}1
Where=/mnt/${DIRECTORY}
Type=${FS}
Options=defaults
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable mnt-${DIRECTORY}.mount
systemctl start mnt-${DIRECTORY}.mount
설치 부분에 대한 스크립트 출력은 다음과 같습니다.
+ systemctl daemon-reload
+ systemctl enable mnt-vpsie33.mount
Created symlink /etc/systemd/system/multi-user.target.wants/mnt-vpsie33.mount → /etc/systemd/system/mnt-vpsie33.mount.
+ systemctl start mnt-vpsie33.mount
A dependency job for mnt-vpsie33.mount failed. See 'journalctl -xe' for details.
이를 수행할 수 있는 방법이 있습니까?