들어가기
리눅스 시스템을 운영하다 보면, 로컬 디스크만으로는 부족해지는 순간이 옵니다.
서버 수가 늘어나고, 사용자 계정이 많아지고, 데이터가 여러 시스템에 흩어지기 시작하면 네트워크 스토리지는 선택이 아니라 필수가 됩니다.
이번 글에서는 리눅스에서 SMB(CIFS) 기반의 스토리지를 사용하는 방법과, 이를 보다 운영 친화적으로 만들어주는 AutoFS를 함께 정리해봅니다.
단순히 “마운트하는 방법”이 아니라,
- 언제 수동 마운트가 적절한지
- 왜 AutoFS가 필요한지
- 실무에서 어떤 구조로 쓰이는지
를 중심으로 설명합니다.
SMB / CIFS란 무엇인가
SMB(Server Message Block)는 주로 Windows 환경에서 사용되던 파일 공유 프로토콜입니다.
리눅스에서는 오랫동안 Samba라는 구현체를 통해 SMB를 사용해왔고, 과거에는 CIFS라는 이름으로 더 자주 불렸습니다.
현재 기준으로는 다음처럼 이해하시면 됩니다.
- SMB : 프로토콜의 공식 명칭
- CIFS : SMB 1.x 계열을 지칭하던 옛 이름
- Samba : 리눅스/유닉스에서 SMB를 구현한 소프트웨어
리눅스에서 Windows 공유 폴더를 마운트한다는 말은,
결국 SMB(CIFS)를 통해 네트워크 파일시스템을 붙인다는 의미입니다.
SMB 클라이언트 환경 준비
먼저 클라이언트 시스템에 필요한 패키지가 설치되어 있는지 확인합니다.
bashrpm -qa | grep -e cifs -e samba
일반적으로 다음 두 패키지가 필요합니다.
bashdnf install cifs-utils
dnf install samba-client
- cifs-utils : 커널의 CIFS 파일시스템을 마운트하기 위한 도구
- samba-client : smbclient 등 사용자 공간 도구
네트워크 연결이 되는지도 먼저 확인합니다.
bashping -c 3 59.29.224.185
SMB 서버 확인 (smbclient)
마운트 전에, 해당 서버가 어떤 공유를 제공하는지 확인하는 것이 좋습니다.
bashsmbclient -L 59.29.224.185
이 명령은 다음을 확인하는 용도입니다.
- 서버가 살아 있는지
- 어떤 공유 이름이 존재하는지
- 인증이 필요한지
실무에서는 이 단계에서 대부분의 오타와 설정 오류를 잡습니다.
CIFS 수동 마운트
마운트 포인트를 하나 준비합니다.
bashmkdir /mnt/win
이제 CIFS 타입으로 직접 마운트합니다.
bashmount -t cifs -o user=hpe,vers=1.0 //59.29.224.185/windata /mnt/win
여기서 중요한 포인트는 다음입니다.
//서버IP/공유이름형식vers=옵션은 SMB 프로토콜 버전- 오래된 장비나 NAS는 1.0을 요구하는 경우가 있음
마운트가 되었다면 /mnt/win 아래에서 바로 파일 접근이 가능합니다.
자격 증명 파일 사용하기
명령줄에 사용자 이름과 비밀번호를 직접 쓰는 방식은 운영 환경에서 적절하지 않습니다.
이를 위해 credential 파일을 사용합니다.
bashvi /root/credential.cre
plainusername=hpe
password=비밀번호
권한은 반드시 제한합니다.
bashchmod 600 /root/credential.cre
이제 /etc/fstab에 등록합니다.
bash//59.29.224.185/windata /mnt/win cifs defaults,vers=1.0,credentials=/root/credential.cre 0 0
이 방식의 장점은 다음과 같습니다.
- 재부팅 시 자동 마운트 가능
- 비밀번호 노출 최소화
- 설정 관리 용이
AutoFS가 필요한 이유
/etc/fstab 기반의 마운트에는 한계가 있습니다.
- 서버가 일시적으로 내려가면 부팅이 멈출 수 있음
- 사용하지 않아도 항상 마운트 유지
- 네트워크 장애에 취약
이를 해결하기 위해 등장한 것이 AutoFS입니다.
AutoFS는 다음처럼 동작합니다.
- 디렉토리에 접근하는 순간 자동 마운트
- 일정 시간 사용하지 않으면 자동 언마운트
- 네트워크 스토리지에 매우 적합
AutoFS 기본 구조
AutoFS는 두 단계 설정 구조를 가집니다.
- 마스터 설정 : 어떤 경로를 AutoFS가 관리할지
- 맵 파일 : 실제 마운트 규칙
RHEL 8 이후에는 /etc/auto.master를 직접 수정하지 않고,
/etc/auto.master.d/ 아래에 파일을 추가하는 방식을 권장합니다.
확장자는 반드시 .autofs 로 끝나야 합니다.
bashdnf install autofs
ls /etc/auto.master
ls /etc/auto.master.d
다이렉트 맵 방식 (Direct Map)
다이렉트 맵은 절대 경로 하나를 특정 공유에 바로 연결하는 방식입니다.
마스터 설정
bashvi /etc/auto.master.d/good.autofs
plain/- /etc/morning
/- 는 다이렉트 맵을 의미합니다.
맵 파일
bashvi /etc/morning
plain/win -fstype=cifs,vers=1.0,credentials=/root/credential.cre ://59.29.224.185/windata
CIFS의 경우 경로 앞에 콜론(:) 을 반드시 붙입니다.
서비스를 시작합니다.
bashsystemctl start autofs
이제 /win 디렉토리에 접근하는 순간 자동으로 마운트됩니다.
인다이렉트 맵 방식 (Indirect Map)
인다이렉트 맵은 상위 디렉토리 아래에 여러 하위 마운트를 만드는 방식입니다.
사용자 홈 디렉토리 구성에 매우 자주 사용됩니다.
서버 측 (NFS 예시)
bashvi /etc/exports
/netusers *(rw,sync)
bashmkdir -p /netusers/{tom,susan,harry}
exportfs -var
클라이언트 측
bashvi /etc/auto.master.d/my.autofs
plain/users /etc/day
bashvi /etc/day
plain* 192.168.11.33:/netusers/&
* 와 & 를 사용하면,
사용자 수가 늘어나도 설정을 한 줄로 유지할 수 있습니다.
bashsystemctl restart autofs
이제 /users/tom, /users/susan 처럼 접근 시 자동으로 마운트됩니다.
네트워크 계정과 홈 디렉토리 문제
LDAP, IPA, AD 같은 중앙 계정 관리 시스템을 사용하면,
계정 정보는 공유되지만 로컬 홈 디렉토리는 자동으로 생성되지 않습니다.
홈 디렉토리가 없으면:
- 작업 공간이 없음
- 쉘 환경 구성 불가
- 실질적인 사용이 어려움
이 문제를 해결하는 가장 일반적인 방식이 바로:
- NFS로 홈 디렉토리 중앙화
- AutoFS로 사용자 접근 시 자동 마운트
입니다.
정리하며
이번 글에서는 다음 흐름을 정리했습니다.
- SMB(CIFS)를 이용한 네트워크 스토리지 사용
- 수동 마운트와 credential 관리
- AutoFS의 구조와 필요성
- 다이렉트 맵과 인다이렉트 맵
- 중앙 계정 환경에서의 홈 디렉토리 설계
네트워크 스토리지는 설정 자체보다,
운영 시 어떤 문제가 생기는지까지 고려하는 것이 더 중요합니다.
AutoFS는 그 고민을 상당 부분 덜어주는 도구입니다.