제가 사무실에 있을 때 유선 이더넷 연결(도킹 스테이션을 통해)에 연결되어 있으면 노트북에 NFS 공유를 마운트해야 합니다. 이 경우 NFS 공유를 자동으로 마운트 및 마운트 해제하는 안정적인 방법이 있습니까?
저는 아치 리눅스를 사용하고 있습니다. 여기에 설명된 NetworkManager 스케줄러 방법을 사용해 보았습니다.NFS - ArchWiki
이 방법을 사용하면 사무실 외부의 WiFi 액세스 포인트에 연결하려고 할 때 시스템이 정지(중지, 응답하지 않음)됩니다.
내 모든 NFS 마운트는 다음 옵션을 사용합니다.
nfsserver:/path/one/ /path/one nfs _netdev,defaults,noatime,nodiratime,soft,retrans=6,timeo=20,retry=0,rsize=32768,wsize=32768,proto=tcp 0 0
위 링크에서 사용한 전체 지침은 여기에 붙여넣었습니다.
NetworkManager-dispatcher.service를 활성화하고 시작합니다.
다음 스크립트는 연결된 네트워크 연결을 비활성화하기 전에 NFS 공유를 안전하게 마운트 해제하기 위해 pre-down 및 vpn-pre-down 이벤트를 수신합니다.
참고: 이 스크립트는 noauto 옵션을 사용한 설치를 무시합니다.
이 스크립트를 /etc/NetworkManager/dispatcher.d/30-nfs.sh에 넣습니다.
#!/bin/bash
# Find the connection UUID with "nmcli con show" in terminal.
# All NetworkManager connection types are supported: wireless, VPN, wired...
WANTED_CON_UUID="CHANGE-ME-NOW-9c7eff15-010a-4b1c-a786-9b4efa218ba9"
if [[ "$CONNECTION_UUID" == "$WANTED_CON_UUID" ]]; then
# Script parameter $1: NetworkManager connection name, not used
# Script parameter $2: dispatched event
case "$2" in
"up")
mount -a -t nfs4,nfs
;;
"pre-down");&
"vpn-pre-down")
umount -l -a -t nfs4,nfs >/dev/null
;;
esac
fi
chmod를 사용하여 스크립트를 실행 가능하게 만들고 /etc/NetworkManager/dispatcher.d/pre-down에 심볼릭 링크를 생성하여 다운 전 이벤트를 캡처합니다.
# ln -s /etc/NetworkManager/dispatcher.d/30-nfs.sh /etc/NetworkManager/dispatcher.d/pre-down.d/30-nfs.sh
이 스크립트가 실제로 작동하려면 사전 다운 이벤트에 대한 사례 설명을 다음과 같이 수정해야 했습니다.
"pre-down"|"down")
이 변경 이전에는 가동 중지 시간 전 이벤트에 대한 응답으로 스크립트 작업이 실행되지 않았습니다. 변경 후 스크립트는 이벤트에 적절하게 응답합니다. 그런데 말씀드린 대로 사무실 외부에서 WiFi 액세스 포인트에 연결하려고 할 때마다 노트북이 작동이 중지됩니다.
로그에서 이와 관련된 내용을 찾을 수 없습니다. 하지만 NFS 마운트를 사용할 수 없을 때 문제가 발생한다고 추측할 만큼 NFS에 대한 경험이 충분합니다. 그리고 위의 방법을 사용하기 시작한 이후부터 문제가 나타나기 시작했습니다. 이전에는 SSHFS를 통해 수동으로 연결했는데 정지 문제가 없었습니다.
또한 다음을 간략하게 시도했습니다.
[해결됨] NFS 공유가 닫혀서 시작이 오래 지연됨/네트워크, 서버 및 보호/Arch Linux 포럼
하지만 이 방법은 너무 촌스럽고 낡아 보여서 금방 포기했습니다. 이는 일반적인 요구사항인 것으로 보이므로 신뢰할 수 있는 알려진 솔루션이 있기를 바랍니다. 그러나 찾을 수 없는 것 같습니다.