앞서 samba 서버를 구축하는 전반적인 사항에 대해서 알아보았습니다.
이번에는 samba 서버 구축 이후에 자주 겪게되는 오류 사항에 대한 트러블 슈팅과,
파일 전송 시의 속도 튜닝에 대해 알아보도록 하겠습니다.
#################################################################
트러블 슈팅 (Trouble Shooting)
■ [Q1] Windows의 "네트워크"에 samba 서버 이름이 나오지 않습니다.
"작업그룹" 상의 이름을 확인해 봅니다.
Samba 서버에서 설정시, workgroup 항목의 값과 클라이언트(windows)의 작업그룹이 같은지 확인해 봅니다.
Samba 서버의 workgroup의 기본 값은 "WORKGROUP"으로 되어 있습니다. (별도로 변경하지 않았다면)
Windows의 경우, WinXP까지는 "MSHOME"으로 되어 있으며, Win7 이후로는 "WORKGROUP"이 기본 값으로 되어 있을 겁니다.
"작업그룹"이 다르더라도 호스트명 또는 IP로 직접 접속할 수 있습니다.
"탐색기" 상단에 아래와 같이 주소를 직접 입력하면 바로 접근할 수 있습니다.
\\192.168.0.** ← Samba 서버의 IP를 직접 입력
\\hostname ← Samba 서버의 호스트명을 직접 입력
■ [Q2] IP로 직접 접속했으나, 연결할 수 없다는 메시지가 나옵니다.
① 먼저 Samba 서버에 방화벽이 설정되어 있는지 확인해 보세요.
$ sudo iptables -L
[sudo] password for user: Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination |
※ 위와 같이 나온다면, 방화벽이 구동되지 않은 상태입니다.
방화벽이 구동 중이라면, 사용하고자 하는 samba 포트를 개방시켜 주어야 합니다. (방화벽 설정방법은 별도 확인)
우선 방화벽을 내린 뒤 다시 접속해보고, 방화벽 문제로 인한 접속오류인지 확인해 보세요.
$ sudo iptables -F
② 두번째로, 방화벽 문제도 아니라면, SELinux 동작 유무를 확인합니다.
$ sudo sestatus
SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version: 24 Policy from config file: targeted |
위와 같이 enforcing으로 나온다면, SELinux가 동작 중인 것이며,
SELinux 설정을 추가하여 Samba를 허용해 주어야 합니다. (SELinux 설정방법은 별도 확인)
우선 SELinux를 비활성화 시킨 뒤 다시 접속해보고, SELinux 문제인지 확인해 보세요.
$ sudo setenforce 0
$ sudo sestatus
SELinux status: enabled SELinuxfs mount: /selinux Current mode: permissive Mode from config file: enforcing Policy version: 24 Policy from config file: targeted |
③ 마지막으로 samba 데몬 서비스가 정상적으로 구동 중인지 확인해 봅니다.
$ sudo service smbd status
smbd start/running, process 652
$ sudo service nmbd status
nmbd start/running, process 1340
■ [Q3] Windows에서 ID/PW로 연결에 성공한 이후, 다른 ID로 접속하려 했더니 접속 인증 오류가 나옵니다.
클라이언트(windows)에서 연결을 한번 시도하였다면 해당 공유 세션이 계속 남아 있어, 이후 접속에도 동일한 접속을 시도하게 됩니다.
클라이언트(windows)에서 콘솔창을 띄운 후, 아래 명령으로 연결 유무를 확인합니다.
C:> net use
상태 로컬 원격 네크워크 ------------------------------------------------------------------------ OK \\주소 Microseft Windows 네트워크 |
위와 같은 형태로 현재 연결되어 있는 공유 세션을 보여줍니다.
연결을 끊고자 하는 항목을 찾아서 아래와 같은 명령으로 연결을 해제하고, 다시 samba 연결을 시도해 봅니다.
C:> net use \\주소 /d
■ [Q4] samba 서버에 접속 후, 디렉터리에 접근하려고 하니 권한이 없다는 메시지가 나옵니다.
① samba 서버에서 해당 디렉터리의 퍼미션을 확인해 봅니다.
읽기/쓰기 속성이 제대로 갖추어 졌는지 확인해보고, 그렇지 않다면 chmod 명령으로 권한을 지정합니다.
예: 소유자, 그룹, 기타 사용자 모두에게 읽기/쓰기/실행 권한을 주고자 한다면 아래와 같이 명령을 줍니다.
$ sudo chmod 777 디렉터리명
② samba 계정으로 등록되어 있는지 확인하고, 그렇지않다면 등록해 줍니다.
$ sudo smbpasswd -a username
#################################################################
전송 속도 튜닝 (Performance Tuning)
Windows to Windows
Windows to Linux
Windows PC 간의 전송 속도 보다, Windows to Linux 간의 전송 속도가 더 느리게 나온다면,
사용자의 로컬 네트워크 상에서 samba 서버가 최적의 성능을 발휘할 수 있도록 퍼포먼스 튜닝을 한번 고려해 볼 필요가 있습니다.
samba 설정 파일을 열어서 [global] 섹션의 적당한 위치에 아래 내용을 포함시켜 봅니다.
$ sudo vi /etc/samba/smb.conf
Read Raw = no Write Raw = no # socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=4096 SO_RCVBUF=4096 # socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192 # socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=16384 SO_RCVBUF=16384 # socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=32768 SO_RCVBUF=35768 # socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=65536 SO_RCVBUF=65536 socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=524288 SO_SNDBUF=524288 |
socket options 부분은 samba 서버의 사양에 따라 설정 결과가 다르게 나타날 수 있으므로 자신의 PC에 맞는 사양을 찾아야 합니다. TCP_NODELAY, IPTOS_LOWDELAY, IPTOS_THROUGHPUT, SO_KEEPALIVE 등의 옵션이 있으며, SO_SNDBUF 와 SO_RCVBUF 값을 2배씩 증가 시키면서 체크해보는 것도 방법입니다.
여러 socket options을 작성해둔 후, 하나만 주석을 풀어 samba 서비스를 재가동한 뒤, 파일 전송 속도를 체크해 봅니다.
--------------------------------------------------------------
# 개인 서버 구축 가이드 - 전체 목록
[개인 서버 구축 가이드] ① SSH 서버 (openssh-server)
[개인 서버 구축 가이드] ② FTP 서버 (vsftpd)
[개인 서버 구축 가이드] ③ 파일 공유 서버 (samba-초급)
[개인 서버 구축 가이드] ④ 파일 공유 서버 (samba-중급)
[개인 서버 구축 가이드] ⑤ 파일 공유 서버 (samba-고급)
[개인 서버 구축 가이드] ⑥ 파일 공유 서버 (nfs)
[개인 서버 구축 가이드] ⑦ 파일 공유 서버 (autofs)
[개인 서버 구축 가이드] ⑧ DB 서버 (mariadb)
--------------------------------------------------------------
samba 서버의 경우 특별히 공공단체, 학교, 교회, 절, 성당, 모스크 (즉 각종 종교단체), 봉사단체, 동아리...
여하튼 사람들이 모이는 곳에서 공공적인 곳에서 바로 적용하여 사용할 수 있는 가장 대표적인 서버 중의 하나라고 보입니다. 왕초보자님도 지금은 워낙 기능과 접근성 등이 좋아져서 바로 조금만 이해하고도 기존의 윈도우즈 PC들을 클라이언트로 삼아서 바로 설치, 적용 활용할 수 있다고 보입니다.
수 십년 전에는 꿈에도 못꿨는데, 지금은 GUI 환경으로 조금만 이해한다면 바로 적용하여 사용할 수 있을 정도로 발전했으니 정말 세상 좋아졌습니다.
물론 더욱 개선되어 말그대로 왕초보자 정도가 아니라 절대적인 초보자라도 할 수 있을 정도로 만들어야 겠지만 말입니다. 저는 개인적으로 서버도 절대적인 초보자, 왕초보자도 직관적으로 개념만 조금 이해하면 바로 적용하여 사용할 수 있도록 만들어야 한다고 생각하는 사람 중의 하나입니다. 충분히 가능합니다.
오픈 수세 리눅스를 사용하면 이 말이 무슨 말인데 충분히 공감이 갈 것입니다. 오픈 수세 리눅스의 Yast 같은 부분은 하모니카 리눅스에서도 포팅해서 적용해 주면 왕초보자님도 전문가 빰칠 정도로 쉽고 편하게 서버를 운영할 수 있을 것으로 보입니다.
이런 부분도 고민, 심각하게 해보시길.... 대중적인 배포판이라고 썰렁한 기능만 대중적인 소비적인 기능만 충실하지 말고, 서버와 같은 기능도 충실하되 말그대로 대중들도 쉽게 접근할 수 있도록 수준을 높일 필요가 있다고 보이네요.
legoboss님. 강의 감사합니다.