[리눅스] smb 공유폴더 부팅 시 자동 마운트

Views: 43

 

 

세팅된데로 깔짝깔짝 컴퓨터를 쓰다보니 포스팅이 삼만년만입니다.

 

방금 해결한 삽질에 대해 간단히 기록 남깁니다.

 

0. 문제의 발단.

 

홈서버에 smb 공유폴더를 만들어서 필요할 때 연결해서 쓰다가 아예 fstab에 등록해서 부팅할 때 자동 마운트 되게 시도했습니다.

그리고 장시간의 삽질을 시작....

아치리눅스 환경이긴 하지만 아마 이번 내용은 리눅스면 다 거기서 거기일겁니다.

 

 

1. fstab 등록

 

sudo vim /etc/fstab

열린 내용 하단에 이런 형태로 넣어봅니다.

//아이피/공유폴더경로 /mnt/share cifs username=아이디,password=비밀번호,file_mode=0777,dir_mode=0777,_netdev 0 0

저장하고 나온 다음 재부팅.

여기서 됐으면 얼마나 좋을까요...ㅋ

 

 

2. 확인 및 필수는 아닌 보안 작업

 

재부팅해도 마운트가 안됐다면 fstab 내용을 다시 적용해주는

sudo mount -a

명령을 실행 해 봅니다.

...

이건 또 마운트 됩니다 ㅋ

그럼 fstab 구성은 문제가 없다는 거죠.

일단 비밀번호가 드러나는게 거슬리니 따로 파일을 하나 만들어줍시다.

sudo vim /etc/credential

내용은

username=아이디
password=비밀번호

이렇게만 넣고 저장!

sudo chmod 600 /etc/credential

로 root계정만 볼수 있도록 해 주시고

fstab 내용을

//아이피/공유폴더경로 /mnt/share cifs credentials=/etc/etc/credential,file_mode=0777,dir_mode=0777,_netdev 0 0

로 수정해 줍니다.

 

 

3. 문제해결 시작

 

원인 파악을 위해 dmesg 명령으로 부팅로그를 확인해봅시다.

[ 13.760676] CIFS: Attempting to mount //아이피/공유폴더경로
[ 13.760706] CIFS: VFS: Error connecting to socket. Aborting operation.
[ 13.761807] CIFS: VFS: cifs_mount failed w/return code = -101

아무래도 네트워크 활성이 되기전에 연결을 시도해서 실패하는 것으로 추측됩니다.

 

그럼 네트워크가 활성화 된 다음 연결하도록 해보면 되겠다는 생각에 구글구글 해 본 결과 systemd 서비스 유닛 파일을 만들면 된다고 하네요.

sudo vim /etc/systemd/system/mnt-share.mount

내용은 아래와 같이 작성했습니다.

[Unit]
Description=Mount Share at /mnt/share
Wants=network-online.target
After=network-online.target
RequiresMountsFor=/mnt/share

[Mount]
What=//아미피/공유폴더경로
Where=/mnt/share
Type=cifs
Options=credentials=/etc/credential,file_mode=0777,dir_mode=0777,_netdev

[Install]
WantedBy=multi-user.target

 

그리고 재부팅...

또 실패...

 

혹시 문제 원인이 다른건가 싶어 서비스 파일 만든 김에 저널 정보 확인해 봅니다.

journalctl -u mnt-share.mount

-- Boot 7b692bf0610e4d9994d46491cacfa2e1 --
11월 15 21:28:11 Libert systemd[1]: Mounting /mnt/share...
11월 15 21:28:11 Libert mount[595]: mount error(101): Network is unreachable
11월 15 21:28:11 Libert mount[595]: Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) and kernel log messages (dmes>
11월 15 21:28:11 Libert systemd[1]: mnt-share.mount: Mount process exited, code=exited, status=32/n/a
11월 15 21:28:11 Libert systemd[1]: mnt-share.mount: Failed with result 'exit-code'.
11월 15 21:28:11 Libert systemd[1]: Failed to mount /mnt/share.
11월 15 21:50:05 Libert systemd[1]: Unmounting Mount Share at /mnt/share...
11월 15 21:50:05 Libert systemd[1]: mnt-share.mount: Deactivated successfully.
11월 15 21:50:05 Libert systemd[1]: Unmounted Mount Share at /mnt/share.
11월 15 21:50:05 Libert systemd[1]: Mounting Mount Share at /mnt/share...
11월 15 21:50:05 Libert systemd[1]: Mounted Mount Share at /mnt/share.
11월 15 21:50:12 Libert systemd[1]: Unmounting Mount Share at /mnt/share...
11월 15 21:50:12 Libert systemd[1]: mnt-share.mount: Deactivated successfully.
11월 15 21:50:12 Libert systemd[1]: Unmounted Mount Share at /mnt/share.
-- Boot b3fa24856a914f3ab0aa642eecaa3ae9 --
11월 15 21:51:01 Libert systemd[1]: Mounting Mount Share at /mnt/share...
11월 15 21:51:01 Libert mount[600]: mount error(101): Network is unreachable
11월 15 21:51:01 Libert mount[600]: Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) and kernel log messages (dmes>
11월 15 21:51:01 Libert systemd[1]: mnt-share.mount: Mount process exited, code=exited, status=32/n/a
11월 15 21:51:01 Libert systemd[1]: mnt-share.mount: Failed with result 'exit-code'.
11월 15 21:51:02 Libert systemd[1]: Failed to mount Mount Share at /mnt/share.

 

Network is unreachable이 보이는걸 보니 문제 원인은 네트워크 활성화 타이밍이 맞는 것 같습니다.

다시 열심히 구글푸를 시전합니다.

 

 

4. 최종 해결

 

그리고 찾은 정보는 기존에 작성한

Wants=network-online.target
After=network-online.target

에서 기준으로 잡은 network-online.target이 실제 네트워크가 활성화된 상태가 아니라 활성화를 시작하는 단계라는 겁니다.

그래서 이 부분을

Wants=NetworkManager-wait-online.service
After=NetworkManager-wait-online.service

이렇게 수정해 줍니다.

sudo vim /etc/systemd/system/mnt-share.mount

[Unit]
Description=Mount Share at /mnt/share
Wants=NetworkManager-wait-online.service
After=NetworkManager-wait-online.service
RequiresMountsFor=/mnt/share

[Mount]
What=//아미피/공유폴더경로
Where=/mnt/share
Type=cifs
Options=credentials=/etc/credential,file_mode=0777,dir_mode=0777,_netdev

[Install]
WantedBy=multi-user.target

 

기대를 가지고 재부팅 결과 성공했습니다.

 

이제 네트워크 디스크가 자동 마운트 되네요.

구글링 도중 smb 버전문제라거나 sleep을 활용한 지연스크립트로 가라(?)치는 팁들도 있었지만 어찌어찌 정공법(?)같은 걸로 성공했습니다.

 

 

 

 

하시다가 어렵거나 진행이 잘 안되시면 댓으로 남겨주셔도 도움이 될지 모르겠지만 찾아본 정보로 도움 드릴수 있으면 드리겠습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다