앞서 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)
--------------------------------------------------------------