** 여기있는 방법, 완벽하진 않다. 좀 더 공부가 필요하다..
** 본문 전 삼천포.
‘서버’와 ‘클라이언트’.
그냥 쓸 수 밖에 없는 이런 용어들. 한국어로 번역을 한다고 해봐야, 어차피 한자를 써야 하고, 아니라면 순우리말로 갈음하기는 더더욱 어색하고.. (어째 위쪽 냄새도 나고..) 그리하여, 그냥 외래어를 쓰고는 있는데..
이런 현상은 일본도 마찬가지다. 아니, 일본이 그리 쓰고 있으니 우리도 그냥 그렇게 쓰고 있다고 볼 수도 있지 않을까?
외국어를 그대로 받아들이는데 어려움이 있는 중국어에선 당연히 이걸 자신들이 쓰는 문자로 바꿔쓰고 있었다.
서버는 服务器(服務器(복무기)), 클라이언트는 客户端(客戶端(객호단))이다. 별 뜻은 없고, 그냥 번역했을 뿐이다. 한국에서도 우리말 용어를 만들었다면.. 아마도 국제화 시대에 역행이니, 외국인과 소통에 문제니.. 하는 얘기도 나오지 않았을까. 그러면서도 Untact 는 또 괜찮다고 하는데, 거 참~
또 쓸데없는 얘기.
24/7 켜져있지 않은 NFS 서버를 연결할 때, 생각할 수 있는 문제는 두가지다.
- 꺼져있는 서버에 연결하려 할 때. 즉, mount 문제.
- 이미 연결되어 있는 서버가 꺼져버렸을 때. 이건 unmount 문제다.
mount 문제(꺼져있는 서버에 연결 시도)
예를 들어 아래와 같은 상황을 보자. /nfs/Video 에 nfs 서버가 연결돼 있고, 이걸 autofs 가 관장하고 있다.
$ time ls /nfs/Video ls: cannot access '/nfs/Video': No such file or directory ls --time-style=long-iso -v --group-directories-first /nfs/Music-Ones 0.00s user 0.00s system 0% cpu cpu 2:12.58 total
/nfs/Video 에 접근하려 했더니, 무려 2분 12초 후에나 그 결과가 나왔다. 이건 터미널에서 내린 명령이니, 다른 프로그램으로 다른 작업을 충분히 할 수 있지만, 만약 GUI 파일 관리자(돌핀에서만 시험해봤으나, 노틸러스등도 비슷하지 않을까?)라면, 2분이 넘는 시간동안 꼼짝없이 얼어붙어버리는 상황을 감내해야만 한다.
(지금 시험했을 때 2분 정도가 나왔는데, 보통은 3분 내외가 걸렸었다.)
이게 이렇게 오래 걸리는 이유는, 그렇게 설정을 해놨기 때문이다. 이 부분을 관장하는 항목은 autofs.conf
의 mount_wait
인데, 기본값이 -1 로 돼 있고, 이 의미는 계속 기다리라는 뜻이 된다.
mount_wait – time to wait for a response from mount(8).
Setting this timeout can cause problems when mount would otherwise wait for a server that is temporarily unavailable, such as when it’s restarting. The default setting (-1) of waiting for mount usually results in a wait of around 3 minutes.
따라서, 이 값을 10 으로 주면, 10초만 기다렸다가 오류를 발생시킨다. 넷웍에 문제가 있어서 일정 시간 기다려야 하는 상황이라면 모를까, 어차피 꺼져있는 서버에 계속 재시도를 해서 시간만 보낼 이유가 없지 않은가. 10초면 충분할 듯 하다.
정리!
autofs.conf, mount_wait 은 10 으로.
# autofs.conf mount_wait = 10
마운트 문제는 간단한데, 이미 mount 된 상황에서 서버가 꺼졌을 때, 즉, 강제 unmount 는 조금 더 복잡하다.
umount 문제 : mount 후 끊어진 NFS 서버 연결시도 시..
이건 또 어떤 상황?
autofs 가 작동할 시점에선 NFS 서버가 살아있었지만, unmount 되기 전에 서버와 연결이 끊어진 경우!
이럴 때도 GUI 파일 관리자에서 마운트 됐던 디렉토리를 건드리게 되면, 한참을 기다려야 하는 상황에 처하게 된다. 이럴 때는 거의 3분 이상이 걸렸던 듯 하다. (이건 실험해보기 짜증나서 해보진 않았다.)
따라서..
autofs 로 NFS 연결한 후, mount 명령으로 해당 디렉토리를 살펴봤다.
nfs-srv:/storage/for_nfs/Music on /nfs/Music type nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,soft,proto=tcp,timeo=600,retrans=2,...) nfs-srv:/storage/for_nfs/Video on /nfs/Video type nfs4 ( rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,softerr,softreval,proto=tcp,timeo=600,retrans=2,...)
두 디렉토리에 사용된 선택사항이 다른데, 이건 auto.master.d
디렉토리내 설정파일에서 지정해줄 수 있다.
다른 점은 한가지, soft 냐, softerr 이냐에 있다.
Video -softerr nfs-srv:/storage/for_nfs/Video Music -soft nfs-srv:/storage/for_nfs/Music
이전에는 여기에 intr 을 줬었는데, 이건 구식(커널 2.x)이라고 한다. 따라서 지금은 쓸 이유가 없다.
새롭게 등장한 softerr 은 무엇일까? 이 내용은 man page(man nfs) 에도 나오지 않는다.softreval
은 볼 수 있는데, 이걸 시험하다가 softerr 을 알게 됐다.
버그인지, 내가 잘못했는지는 모르겠지만, autofs 에 nfs 를 마운트할 때, softreval
을 넣으면 제대로 작동하질 않는다. 넣어줘도, 설정은 안된다.
아래는 softreval 을 명시한 설정에서 비롯된 mount 결과이지만, soft 만 보일 뿐, softreval 은 보이지 않는다.
$ mount ... nfs-srv:/storage/myList on /nfs/Lists type nfs4 (ro,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,soft,proto=tcp,timeo=600,retrans=2,....)
왜 이런건진 모르겠다. (실험한 환경은 ArchLinux, 2022 1월 최신판)
그러다가.. softerr 이 언급된 글을 우연히 찾게 되었다. 그리고 거기엔 이런 내용이 있었다.
the softreval mount option is also automatically enabled if the “softerr” mount option is active.
빙고!
이것으로 모든게 해결됐다. (softerr 은 커널 5.6 부터 사용할 수 있다고 하는데, 적어도 내가 쓰는 기기(Client)들엔 모두 그보다 훨씬 상위 커널이 탑재돼 있다.)
마운트 옵션을 줄 때 softerr
을 넣어주면, 연결이 끊어진 상황에서도 3분여를 기다리지 않고, 수십초 내에서 파일 매니저 관리권을 회수할 수 있다.(표현이 뭐 이리..)
다만, ‘수십초’라고 했지만, 이 숫자가 어디에서 기인했는지는 아직 모르겠다. 위에 언급한 mount_wait
값과 관련이 있는 듯도 하고.. 또는, umount_wait
과 연관이 있는지도 모르겠다.
아무튼, softerr 을 주면 오래 기다리지 않아도 된다는 사실.
또는, 위 방법보다, 명시하여 umount 를 해줄 수도 있다. 이때는 -f(force), -l(lazy) 등을 줘야 한다.
sudo umount -fl /mount_point
그러나, 이런 개인서버가 아니라면, softerr 등은 권장하지 않는 모양이다. soft 가 아닌 hard 가 기본값이다.