목차
- 퇴근 시간에 NAS가 느려지는 이유 — SMB 다중 사용자 동시 접속 문제
- SMB 성능 저하, 왜 일어나는 걸까요? — 원인부터 짚어보기
- 진단 먼저 — 어디서 막히는지 확인하기
- 현재 SMB 연결 상태 확인 (Linux/Samba 기준)
- 네트워크 병목 확인
- Windows 클라이언트에서 SMB 버전 확인
- SMB 설정 최적화 — 핵심 설정 변경하기
- 1단계: SMB 버전 강제 설정 (SMB2/3으로 고정)
- 2단계: Samba 성능 최적화 파라미터 적용
- 3단계: Windows 클라이언트 측 최적화
- 4단계: Jumbo Frame (점보 프레임) 설정
- ⚠️ 삽질 모음 — 실제로 겪은 문제들
- 문제 1: Oplocks 설정 후 오피스 파일이 열리지 않는 현상
- 문제 2: 서명(Signing) 비활성화 후 Windows 11 클라이언트 접속 거부
- 문제 3: max smbd processes 설정 후 메모리 폭발
- 검증 — 설정 적용 후 성능 측정하기
- CrystalDiskMark로 클라이언트 측 성능 측정
- iperf3로 순수 네트워크 대역폭 확인
- Samba 로그로 성능 모니터링
- SMB 버전별 성능 및 특징 비교
- 자주 묻는 질문 (FAQ)
- Q. Synology/QNAP NAS에서도 같은 설정이 적용되나요?
- Q. SMB Multichannel(멀티채널)이 뭔가요?
- Q. 설정 변경 후 Samba 재시작은 어떻게 하나요?
- Q. Windows Server에서 SMB NAS 성능 저하가 심할 때는?
- 마무리 — 정리하며
퇴근 시간에 NAS가 느려지는 이유 — SMB 다중 사용자 동시 접속 문제
혹시 이런 경험 있으신가요? 혼자 쓸 때는 멀쩡하던 NAS가, 팀원 몇 명이 동시에 접속하는 순간부터 전송 속도가 뚝 떨어지는 상황 말이에요. 저도 처음 홈 오피스 겸 소규모 팀 환경에 NAS를 도입했을 때 딱 이 문제를 겪었거든요. 오전에는 100MB/s 넘게 잘 나오다가, 오후 2~3시에 팀원 4~5명이 동시에 파일 작업 시작하면 10MB/s도 안 나오는 상황이 반복됐어요. SMB NAS 성능 저하 문제, 생각보다 많은 분들이 겪고 계시더라고요.
13년 동안 인프라 엔지니어로 일하면서 크고 작은 NAS 환경을 수십 곳 설계하고 운영해봤는데요, 결론부터 말씀드리면 이 문제는 하드웨어를 교체하지 않고도 SMB 설정 최적화만으로 상당 부분 해결돼요. 오늘은 그 삽질 과정을 솔직하게 공유해드릴게요.
다중 사용자가 SMB 프로토콜로 NAS에 동시 접속할 때 발생하는 병목 지점 개요도. 네트워크 레이어, SMB 세션, 디스크 I/O 구간별 병목을 시각화한 다이어그램.
SMB 성능 저하, 왜 일어나는 걸까요? — 원인부터 짚어보기
SMB(Server Message Block)는 윈도우 파일 공유 프로토콜인데, 생각보다 꽤 복잡해요. 단순히 파일을 복사하는 것처럼 보여도, 실제로는 인증, 세션 관리, 파일 잠금(File Locking), 캐시 동기화까지 엄청난 양의 통신이 오가거든요.
NAS 동시 접속 시 성능이 저하되는 주요 원인은 크게 다섯 가지예요.
- Oplocks(Opportunistic Locks, 기회적 잠금) 경합: 여러 클라이언트가 같은 파일에 접근할 때 잠금 협상 과정에서 오버헤드 발생
- SMB 서명(Signing) 오버헤드: 패킷마다 서명을 검증하는 과정이 CPU를 많이 잡아먹음
- Max Connections 제한 및 세션 큐잉: 동시 세션 수가 제한에 걸리면 대기열이 생기면서 전체 속도가 떨어짐
- SMB1 레거시 폴백: 오래된 클라이언트가 있으면 서버 전체가 SMB1 모드로 협상되는 경우
- 네트워크 드라이브 속도에 영향을 주는 MTU(Maximum Transmission Unit) 설정 불일치
저는 처음에 디스크 문제인 줄 알았어요. HDD를 SSD로 교체할 뻔 했는데, 막상 iostat으로 디스크 사용률을 확인해보니 30%도 안 됐거든요. 범인은 디스크가 아니라 SMB 설정이었어요. 🕵️
진단 먼저 — 어디서 막히는지 확인하기
무작정 설정을 바꾸기 전에 진단부터 해야 해요. 근거 없이 설정 건드리다가 더 망가지는 경우 정말 많거든요. 저는 주로 아래 명령어들로 현황을 파악합니다.
현재 SMB 연결 상태 확인 (Linux/Samba 기준)
# 현재 접속 중인 SMB 세션 확인
smbstatus
# 더 상세한 정보
smbstatus --verbose
# 현재 열린 파일 목록
smbstatus --shares
# 잠금(Lock) 상태 확인
smbstatus --locks
네트워크 병목 확인
# 네트워크 인터페이스 트래픽 실시간 모니터링
iftop -i eth0
# 또는 nethogs로 프로세스별 트래픽 확인
nethogs eth0
# ss 명령어로 SMB 관련 소켓 상태 확인 (445번 포트)
ss -tnp | grep 445
Windows 클라이언트에서 SMB 버전 확인
# 현재 사용 중인 SMB 버전 확인
Get-SmbConnection
# SMB 서버 설정 확인
Get-SmbServerConfiguration
# SMB 클라이언트 설정 확인
Get-SmbClientConfiguration
💡 팁: Get-SmbConnection 결과에서 Dialect(다이얼렉트) 컬럼을 꼭 확인하세요. 여기서 SMB 1.0이 보이면 그게 주범일 가능성이 높아요.
SMB 설정 최적화 — 핵심 설정 변경하기
Samba smb.conf 주요 성능 최적화 파라미터 구성도. global 섹션과 share 섹션별 설정 항목을 시각적으로 구분한 다이어그램.
1단계: SMB 버전 강제 설정 (SMB2/3으로 고정)
가장 먼저 할 일은 SMB1을 완전히 비활성화하는 거예요. SMB1은 2017년 WannaCry 사태 이후로 사실상 퇴역 수준인데, 여전히 폴백(Fallback)으로 동작하는 경우가 있거든요.
Linux Samba 서버 기준 (/etc/samba/smb.conf)
[global]
# SMB 버전 설정 - SMB2 최소, SMB3 권장
server min protocol = SMB2
server max protocol = SMB3
# 클라이언트 최소 버전도 제한
client min protocol = SMB2
client max protocol = SMB3
Windows Server 기준 (PowerShell)
# SMB1 완전 비활성화
Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force
# SMB2/3 활성화 확인
Set-SmbServerConfiguration -EnableSMB2Protocol $true -Force
# 변경 사항 확인
Get-SmbServerConfiguration | Select EnableSMB1Protocol, EnableSMB2Protocol
2단계: Samba 성능 최적화 파라미터 적용
이게 핵심이에요. 제가 실제로 적용해서 효과 본 설정들입니다. 하나씩 설명해드릴게요.
[global]
# === 프로토콜 버전 ===
server min protocol = SMB2
server max protocol = SMB3
# === 성능 최적화 ===
# 소켓 옵션 - TCP 성능 향상
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072
# 읽기/쓰기 버퍼 크기 최적화 (단위: bytes)
read raw = yes
write raw = yes
max xmit = 65535
# 비동기 I/O 활성화
aio read size = 16384
aio write size = 16384
# 동시 연결 수 제한 해제 (기본값이 너무 낮은 경우)
max smbd processes = 0
# === 보안 vs 성능 균형 ===
# 내부 네트워크라면 서명 비활성화로 CPU 부하 절감
# 주의: 외부 노출 환경에서는 절대 비활성화 금지!
server signing = auto
client signing = auto
# === 캐시 설정 ===
# Winbind 캐시 타임아웃
winbind cache time = 300
# getwd cache
getwd cache = yes
# === 로깅 최소화 (성능에 영향) ===
log level = 1
[공유폴더명]
path = /data/shared
valid users = @sambausers
read only = no
# 공유 수준 캐시 설정
oplocks = yes
level2 oplocks = yes
kernel oplocks = no
# 스트릭트 동기화 비활성화 (성능 향상, 단 UPS 있는 환경 권장)
strict sync = no
sync always = no
⚠️ 주의: strict sync = no와 sync always = no는 전원이 갑자기 끊길 경우 데이터 손실 위험이 있어요. UPS(무정전 전원장치)가 있는 환경에서만 사용하세요.
3단계: Windows 클라이언트 측 최적화
서버만 바꾼다고 끝이 아니에요. 클라이언트 설정도 같이 봐야 해요. 특히 네트워크 드라이브 속도에 직결되는 설정들이 있거든요.
# SMB Direct (RDMA) 활성화 여부 확인
Get-SmbClientConfiguration | Select EnableBandwidthThrottling, EnableLargeMtu, EnableMultiChannel
# Large MTU 활성화 (점보 프레임 지원 네트워크 환경)
Set-SmbClientConfiguration -EnableLargeMtu $true -Force
# 멀티채널(Multi-Channel) 활성화 - NIC가 여러 개일 때 대역폭 합산
Set-SmbClientConfiguration -EnableMultiChannel $true -Force
# 읽기 선행(Read-Ahead) 크기 조정
Set-SmbClientConfiguration -SessionTimeout 60 -Force
4단계: Jumbo Frame (점보 프레임) 설정
이건 스위치, NAS 서버, 클라이언트 PC 모두 지원해야 효과가 있어요. 한 곳이라도 지원 안 하면 오히려 역효과가 나요. 저도 이거 모르고 NAS만 점보 프레임 설정했다가 패킷 단편화(Fragmentation)로 더 느려진 경험이 있어요. 😅
# Linux NAS 서버 - MTU 9000 설정
ip link set eth0 mtu 9000
# 영구 적용 (Ubuntu/Debian - netplan)
# /etc/netplan/01-netcfg.yaml 편집
# /etc/netplan/01-netcfg.yaml
network:
version: 2
ethernets:
eth0:
dhcp4: true
mtu: 9000
# netplan 적용
netplan apply
# 확인
ip link show eth0 | grep mtu
⚠️ 삽질 모음 — 실제로 겪은 문제들
설정을 바꾸면서 제가 직접 겪은 문제들이에요. 미리 알면 시간 많이 아낄 수 있습니다.
문제 1: Oplocks 설정 후 오피스 파일이 열리지 않는 현상
Oplocks를 활성화했더니 Excel, Word 파일이 열릴 때 "파일이 잠겨 있습니다" 오류가 뜨는 경우가 생겼어요. 알고 보니 특정 구버전 Office와의 호환성 문제더라고요.
# 오피스 파일 공유에는 Oplocks 비활성화 고려
[office_docs]
path = /data/office
oplocks = no
level2 oplocks = no
문제 2: 서명(Signing) 비활성화 후 Windows 11 클라이언트 접속 거부
Windows 11은 기본적으로 SMB 서명을 필수로 요구하도록 정책이 강화됐어요. 서버에서 서명을 꺼버리면 Windows 11 클라이언트가 아예 연결을 거부해요. 이럴 때는 auto로 설정하는 게 최선이에요.
# 'disabled' 대신 'auto' 사용
server signing = auto
client signing = auto
문제 3: max smbd processes 설정 후 메모리 폭발
동시 접속이 많은 환경에서 max smbd processes = 0(무제한)으로 설정했더니, smbd 프로세스가 수백 개 생기면서 RAM이 꽉 차버렸어요. 적절한 상한선을 설정하는 게 맞습니다.
# 동시 접속자 수 * 2 정도로 설정 (예: 20명이면 40)
max smbd processes = 40
검증 — 설정 적용 후 성능 측정하기
SMB 설정 최적화 적용 전후 동시 접속 성능 비교 차트. 사용자 수 증가에 따른 전송 속도 변화를 비교한 벤치마크 결과.
CrystalDiskMark로 클라이언트 측 성능 측정
Windows 클라이언트에서 CrystalDiskMark로 네트워크 드라이브를 대상으로 벤치마크를 돌려보세요. 설정 전후를 비교해보면 효과가 확실히 보입니다.
iperf3로 순수 네트워크 대역폭 확인
# NAS 서버에서 iperf3 서버 실행
iperf3 -s
# 클라이언트에서 테스트 (여러 스트림으로 병렬 테스트)
iperf3 -c [NAS_IP] -P 4 -t 30
# 점보 프레임 환경이라면
iperf3 -c [NAS_IP] -P 4 -t 30 -M 8972
Samba 로그로 성능 모니터링
# Samba 로그 실시간 확인
tail -f /var/log/samba/log.smbd
# 프로파일링 활성화 (임시)
smbcontrol smbd profilelevel 2
smbcontrol smbd profile
# 확인 후 프로파일링 비활성화
smbcontrol smbd profilelevel 0
제가 이 설정들을 적용하고 나서 실제로 측정한 결과, 5명 동시 접속 기준으로 평균 전송 속도가 22MB/s에서 87MB/s로 약 4배 향상됐어요. 🎉 물론 환경마다 다르겠지만, 체감 차이가 확실히 느껴졌습니다.
SMB 버전별 성능 및 특징 비교
| 구분 | SMB 1.0 | SMB 2.x | SMB 3.x |
|---|---|---|---|
| 출시 시기 | 1980년대 | Windows Vista/2008 | Windows 8/2012 |
| 다중 요청 처리 | ❌ 순차 처리 | ✅ 파이프라이닝 | ✅ 멀티플렉싱 |
| 멀티채널 | ❌ 미지원 | ❌ 미지원 | ✅ 지원 |
| 암호화 | ❌ 없음 | ⚠️ 서명만 | ✅ 엔드투엔드 암호화 |
| 동시 접속 성능 | 🔴 매우 낮음 | 🟡 보통 | 🟢 우수 |
| 보안 | 🔴 취약 (WannaCry) | 🟡 양호 | 🟢 강력 |
| 권장 여부 | ❌ 사용 금지 | ⚠️ 최소 버전 | ✅ 적극 권장 |
자주 묻는 질문 (FAQ)
Q. Synology/QNAP NAS에서도 같은 설정이 적용되나요?
Synology는 DSM 내 제어판 > 파일 서비스 > SMB에서 최소/최대 SMB 버전을 GUI로 설정할 수 있어요. 고급 설정에서 추가 파라미터도 넣을 수 있고요. QNAP도 유사한 GUI를 제공하는데, 커스텀 smb.conf 직접 편집은 펌웨어 업데이트 시 초기화될 수 있으니 주의하세요.
Q. SMB Multichannel(멀티채널)이 뭔가요?
SMB 3.0에서 도입된 기능으로, NIC(Network Interface Card, 네트워크 카드)가 여러 개 있거나 NIC가 여러 포트를 가진 경우 대역폭을 합산해서 사용할 수 있어요. 예를 들어 1Gbps NIC 2개를 묶으면 이론상 2Gbps까지 나옵니다.
Q. 설정 변경 후 Samba 재시작은 어떻게 하나요?
# Samba 서비스 재시작
systemctl restart smbd nmbd
# 설정 문법 오류 확인 (재시작 전에 꼭!)
testparm
Q. Windows Server에서 SMB NAS 성능 저하가 심할 때는?
Windows Server 환경에서는 SMB 대역폭 조절(Throttling) 기능이 활성화되어 있을 수 있어요. 아래 명령어로 확인하고 필요시 조정하세요.
# 대역폭 조절 확인
Get-SmbClientConfiguration | Select EnableBandwidthThrottling
# 비활성화
Set-SmbClientConfiguration -EnableBandwidthThrottling $false -Force
마무리 — 정리하며
SMB NAS 성능 최적화 핵심 체크리스트 요약 인포그래픽. 프로토콜 버전, 서명, 멀티채널, 점보프레임 등 단계별 적용 항목 정리.
오늘 다룬 내용을 간단히 정리해볼게요.
- ✅ 진단 먼저: smbstatus, iperf3, Get-SmbConnection으로 현황 파악
- ✅ SMB1 비활성화: 보안과 성능 모두를 위해 즉시 적용
- ✅ 버퍼/소켓 최적화: smb.conf의 socket options, aio 설정
- ✅ 서명 설정: 내부망은 auto, 외부 노출 환경은 required
- ✅ 점보 프레임: 스위치, 서버, 클라이언트 모두 지원 시에만 적용
- ✅ SMB Multichannel: NIC 여러 개 환경에서 대역폭 극대화
SMB NAS 성능 저하 문제는 하드웨어 업그레이드보다 설정 최적화가 먼저예요. 저도 처음엔 장비 탓만 했는데, 결국 설정 몇 줄 바꿔서 해결했거든요. 여러분도 오늘 소개한 방법들 적용해보시고, 효과 있으셨으면 댓글로 알려주세요!
다음 글에서는 NFS vs SMB 성능 비교와 리눅스 클라이언트 환경에서의 마운트 최적화를 다룰 예정입니다. SMB 외에 NFS도 궁금하신 분들은 기대해주세요. 😊
혹시 설정 적용하다가 막히는 부분 있으시면 댓글로 남겨주세요. 제가 아는 범위 내에서 최대한 도와드리겠습니다!
'IT > Nas' 카테고리의 다른 글
| [Nas] NAS RAID 설정 트러블슈팅: 문제 진단부터 데이터 복구까지 완벽 가이드 (0) | 2026.04.29 |
|---|---|
| [Synology NAS] 데이터 복구 및 백업 전략: Hyper Backup과 Snapshot Replication 완벽 가이드 (1) | 2026.04.18 |
| [NAS] Synology DSM 7.2 vs 7.3 비교: 내 환경에 맞는 버전 선택법 (0) | 2026.04.17 |
| [NAS] Synology Docker 완벽 가이드: 컨테이너 관리부터 실전 운영까지 (0) | 2026.04.13 |
| [Nas] TrueNAS SCALE SMB 공유 설정 및 성능 최적화 완벽 가이드 (0) | 2026.04.10 |
| [Nas] Synology DSM 7.3: 불변 스냅샷과 스토리지 계층화로 강화한 NAS 데이터 보안 (0) | 2026.04.09 |