cifs, nfs 공유폴더를 리눅스 클라이언트가 다중의 계정을 통해 cifs 프로토콜로 autofs 방식의 마운트하는 방법이다.
추가적으로 autofs의 indirect map과 direct map 방식의 mount 설정에 대해 설명한다.
- 테스트 시스템 : Windows 2012R2, RHEL 6.3 x86_64 * 2EA
목차
0. cifs 공유설정 및 마운트
구성 조건 :
조건1) 윈도우 서버의 공유폴더를 다수의 리눅스 시스템에서 cifs로 마운트 할 수 있어야 한다.
조건2) 각 리눅스 시스템의 멀티 유저가 같은 공유폴더를 각각의 마운트포인트에 마운트하여 사용할 수 있어야 한다.
- 윈도우 서버에서
1) d:\share 폴더 생성
2) share 폴더에 마우스 오른쪽 버튼 클릭 - 속성 - 공유 - 고급 공유 - 선택한폴더 공유 체크 - 권한 - 추가 - 고급 - 지금 찾기 - Administrator 선택 - 확인 - Administrator의 사용권한에 모든 권한 체크 - 확인
- 리눅스에서 그룹을 아래와 같이 생성
[root@RHEL63-1 ~]# grep mapoo /etc/group mapoo:x:501:
- 테스트 유저 1, 2를 아래와 같이 생성
[root@RHEL63-1 ~]# grep mapoo /etc/passwd mapoo1:x:501:501::/home/mapoo1:/sbin/nologin mapoo2:x:502:501::/home/mapoo2:/sbin/nologin
- 서로 다른 유저로(같은그룹에속한) 각각의 마운트 포인트 디렉토리에 마운트
[root@RHEL63-1 ~]# mount.cifs //192.168.0.159/share /cifs1 -o user=administrator,password='1234',uid=501,gid=501,dir_mode=0770,file_mode=0660 [root@RHEL63-1 ~]# mount.cifs //192.168.0.159/share /cifs2 -o user=administrator,password='1234',uid=502,gid=501,dir_mode=0770,file_mode=0660 [root@RHEL63-1 ~]# df -kh | egrep 'cifs|share' //192.168.0.159/share 2.3T 1.5T 817G 65% /cifs1 //192.168.0.159/share 2.3T 1.5T 817G 65% /cifs2
- /cifs1 하위에 test-folder1 폴더 생성
[root@RHEL63-1 ~]# mkdir /cifs1/test-folder1
- /cifs2 하위에 test-folder2 폴더 생성
[root@RHEL63-1 ~]# mkdir /cifs2/test-folder2
- /cifs1에서 생성된 폴더 확인
[root@RHEL63-1 ~]# ls -la /cifs1/ total 4 drwxrwx--- 1 mapoo1 mapoo 0 Sep 29 16:30 . dr-xr-xr-x. 32 root root 4096 Sep 29 16:20 .. drwxrwx--- 0 mapoo1 mapoo 0 Sep 29 16:30 test-folder1 --> mapoo1 소유로 확인 drwxrwx--- 0 mapoo1 mapoo 0 Sep 29 16:30 test-folder2 --> mapoo1 소유로 확인
- /cifs2에서 생성된 폴더 확인
[root@RHEL63-1 ~]# ls -la /cifs2/ total 4 drwxrwx--- 1 mapoo2 mapoo 0 Sep 29 16:30 . dr-xr-xr-x. 32 root root 4096 Sep 29 16:20 .. drwxrwx--- 0 mapoo2 mapoo 0 Sep 29 16:30 test-folder1 --> mapoo2 소유로 확인 drwxrwx--- 0 mapoo2 mapoo 0 Sep 29 16:30 test-folder2 --> mapoo2 소유로 확인
* mapoo라는 그룹에 mapoo1, mapoo2가 속해있고 cifs 마운트시 dir 및 file mode를 0770, 0660으로 설정하였으므로 서로 공유가 가능하다.
- autofs 적용
기존의 수동으로 연결된 mount point 마운트 해제
[root@RHEL63-1 ~]# umount /cifs*
1. autofs indirect map 방식으로 마운트
구성 조건 :
조건 1) 위 cifs 공유 폴더 마운트를 autofs를 사용하여 마운트 구현한다.
조건 2) mapoo1, mapoo2 리눅스 계정으로 로그인 시 각각 다른 윈도우의 공유 폴더에 접근할 수 있어야 한다. 해당 공유 폴더는 mapoo1, 2 계정의 홈 디렉토리이다.
조건 3) 리눅스 계정을 로그아웃하면 일정 시간 이후 자동으로 umount 되도록 구성한다.
- mapoo1, 2 계종의 홈 디렉토리는 아래와 같음.
[root@RHEL63-1 ~]# cat /etc/passwd | grep mapoo mapoo1:x:501:501::/cifs1/test-folder1:/bin/bash mapoo2:x:502:501::/cifs2/test-folder2:/bin/bash
- 윈도우 공유볼륨에는 아래와 같은 디렉토리 존재
[root@RHEL63-1 ~]# ls -la /cifs1 total 4 drwxrwx--- 1 mapoo1 mapoo 0 Sep 29 16:30 . dr-xr-xr-x. 32 root root 4096 Sep 29 16:20 .. drwxrwx--- 0 mapoo1 mapoo 0 Sep 29 17:09 test-folder1 drwxrwx--- 0 mapoo1 mapoo 0 Sep 29 17:24 test-folder2
- autofs.master 설정
[root@RHEL63-1 ~]# cat /etc/auto.master /cifs1 /etc/auto.guests1 --timeout=60 --ghost /cifs2 /etc/auto.guests2 --timeout=60 --ghost
/cifs1 , /cifs2 : 마운트포인트 디렉토리이다. 이 디렉토리는 존재하지 않아도 되며, 존재하지 않을 경우 autofs 데몬 시작 시 자동으로 생성되고 데몬 정지시 사라진다.
--timeout=60 : 60초 동안 자동 마운트된 파일시스템을 사용하지 않으면 autofs가 umount를 한다.
--ghost : 실제 마운트가 되어 있지 않았더라도 디렉터리 내용을 확인할 수 있도록 허용
- autofs.guests1과 autofs.guests2 설정
[root@RHEL63-1 ~]# cat /etc/auto.guests{1,2} * -fstype=cifs,rw,dir_mode=0770,file_mode=0660,uid=501,gid=501,credentials=/etc/credit1.txt ://192.168.0.159/share/& * -fstype=cifs,rw,dir_mode=0770,file_mode=0660,uid=502,gid=501,credentials=/etc/credit2.txt ://192.168.0.159/share/&
aufofs.guest1 aufofs.guest2 에서 아래와 같이 설정을 해도 된다.
* -fstype=cifs,rw,dir_mode=0770,file_mode=0660,uid=501,gid=501,credentials=/etc/credit1.txt ://192.168.0.159/share/test-folder1
* -fstype=cifs,rw,dir_mode=0770,file_mode=0660,uid=502,gid=501,credentials=/etc/credit2.txt ://192.168.0.159/share/test-folder2
'&' 는 어떤 디렉토리든 상관없이 접근하여 디렉토리가 있으면 마운트 한다. 즉, /etc/passwd에 명시된 계정의 홈 디렉토리를 알아서 마운트 하게 됨.
- 윈도우즈 공유폴더 접근 계정 설정
[root@RHEL63-1 ~]# vim /etc/credit1.txt username=administrator password=1234 [root@RHEL63-1 ~]# vim /etc/credit2.txt username=administrator password=1234
- autofs 데몬 시작
[root@RHEL63-1 ~]# /etc/init.d/autofs restart
- mapoo1 계정으로 로그인
[root@RHEL63-1 ~]# su - mapoo1
- 마운트 확인
-bash-4.1$ df -kh | egrep 'share|cifs' //192.168.0.159/share/test-folder1 2.3T 1.5T 817G 65% /cifs1/test-folder1
[root@RHEL63-1 ~]# exit
- mapoo2 계정으로 로그인
[root@RHEL63-1 ~]# su - mapoo2
- 마운트 확인
-bash-4.1$ df -kh | egrep 'share|cifs' //192.168.0.159/share/test-folder1 2.3T 1.5T 817G 65% /cifs1/test-folder1 //192.168.0.159/share/test-folder2 2.3T 1.5T 817G 65% /cifs2/test-folder2
- 각 볼륨 권한 확인
[root@RHEL63-1 ~]# ls -la /cifs* /cifs1: total 4 drwxr-xr-x 3 root root 0 Sep 29 17:35 . dr-xr-xr-x. 32 root root 4096 Sep 29 16:20 .. drwxrwx--- 1 mapoo1 mapoo 0 Sep 29 17:09 test-folder1 /cifs2: total 4 drwxr-xr-x 3 root root 0 Sep 29 17:36 . dr-xr-xr-x. 32 root root 4096 Sep 29 16:20 .. drwxrwx--- 1 mapoo2 mapoo 0 Sep 29 17:24 test-folder2
- 만약 아래와 같이 *가 아닌 test1과 같이 특정하게 설정을 하면 마운트포인트(cifs) 아래의 포인트가 test1 으로 마운트가 된다.
[root@RHEL63-1 ~]# cat /etc/auto.guests1 test1 -fstype=cifs,rw,dir_mode=0770,file_mode=0660,uid=501,gid=501,credentials=/etc/credit1.txt ://192.168.0.159/share/&
-bash-4.1$ df -kh | egrep 'share|test' //192.168.0.159/share/test-folder1 2.3T 1.5T 817G 65% /cifs/test1 -bash-4.1$ ls -la /cifs/test1 total 1 drwxrwx--- 1 root root 0 Oct 4 21:40 . drwxr-xr-x 3 root root 0 Oct 4 21:48 .. -rw-rw---- 0 root root 12 Oct 4 21:40 .bash_history
2. autofs direct map 방식으로 마운트
서버의 공유 디렉토리와 클라이언트의 마운트 포인트가 일치되게 설정하는 방법이다.
(indirect map 방식으로는 서버의 공유디렉토리와 클라이언트의 마운트포인트를 일치시킬 수 없다.)
(mount.cifs 와 같은 마운트 명령을 통해 수동으로 마운트 하는 경우는 direct map 방식으로 일치시킬 수 있다.)
공유서버는 2대이며 아래와 같다.
서버 1 :
OS : Windows 2012R2
IP : 192.168.0.159
Share Dir : d:\share
- 공유폴더 설정은 이 문서 윗 부분에서 설명한 것과 동일하다.
서버 2 :
OS : RHEL 6.3 x86_64
IP : 192.168.0.176
Share Dir : /nfs-share
- 서버 2에서 아래와 같이 nfs 공유 설정을 한다.
[root@RHEL63-2 ~]# mkdir /nfs-share [root@RHEL63-2 ~]# vim /etc/exports /nfs-share 192.168.0.0/24(rw,all_squash,anonuid=501,anongid=501) [root@RHEL63-2 ~]# cat /etc/passwd | grep mapoo mapoo:x:501:501::/nfs-share:/bin/bash [root@RHEL63-2 ~]# cat /etc/group | grep mapoo mapoo:x:501:
- 서버 2에서 nfs 서버 데몬을 기동한다.
[root@RHEL63-2 ~]# exportfs -a [root@RHEL63-2 ~]# exportfs -v /nfs-share 192.168.0.0/24(rw,wdelay,root_squash,all_squash,no_subtree_check,anonuid=501,anongid=501) [root@RHEL63-2 ~]# /etc/init.d/nfs start Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS mountd: [ OK ] Stopping RPC idmapd: [ OK ] Starting RPC idmapd: [ OK ] Starting NFS daemon: [ OK ]
- 리눅스 클라이언트에서 아래와 같이 진행을 한다.
마운트포인트인 /share와 /nfs-share 디렉토리는 만들지 않았으며 autofs 데몬이 실행되기 전까지는 해당 디렉토리가 보이지 않는다.
[root@RHEL63-1 ~]# /etc/init.d/autofs status automount is stopped [root@RHEL63-1 ~]# ll / | grep share
- auto.master 설정
[root@RHEL63-1 ~]# vim /etc/auto.master /- /etc/auto.direct --timeout=60 --ghost
- auto.direct 설정
[root@RHEL63-1 ~]# vim /etc/auto.direct /share -fstype=cifs,rw,dir_mode=0770,file_mode=0660,uid=501,gid=501,credentials=/etc/credit1.txt ://192.168.0.159/share /nfs-share -rw,soft,uid=502,gid=502 192.168.0.176:/nfs-share
- 계정 설정
[root@RHEL63-1 ~]# cat /etc/passwd | grep mapoo mapoo1:x:501:501::/share/test-folder1:/bin/bash mapoo2:x:502:501::/nfs-share:/bin/bash
- nfs 관련 데몬이 기동중인지 확인
[root@RHEL63-1 ~]# /etc/init.d/nfslock status rpc.statd (pid 1699) is running... [root@RHEL63-1 ~]# /etc/init.d/rpcbind status rpcbind (pid 1663) is running...
- autofs 데몬 구동
[root@RHEL63-1 ~]# /etc/init.d/autofs start Starting automount: [ OK ] [root@RHEL63-1 ~]# ll / | grep share drwxr-xr-x 2 root root 0 Oct 5 10:41 nfs-share drwxr-xr-x 2 root root 0 Oct 5 10:41 share [root@RHEL63-1 ~]# df -h | grep share
-> autofs 데몬이 구동되자 마운트포인트 디렉토리가 생성되었다. 하지만 아직 마운트 상태는 아니다. 마운트포인트 내의 어떠한 디렉토리나 파일을 접근하면 자동으로 마운트가 된다.
- 공유 디렉토리를 접근해 본다.
[root@RHEL63-1 ~]# su - mapoo1 -bash-4.1$ df -h | grep share //192.168.0.159/share 2.3T 1.5T 802G 66% /share --> home 디렉토리가 /share로 설정된 mapoo1 계정으로 su를 하자 /share가 자동으로 마운트 되었다. -bash-4.1$ su - mapoo2 Password: -bash-4.1$ df -h | grep share //192.168.0.159/share 2.3T 1.5T 802G 66% /share 192.168.0.176:/nfs-share 28G 6.8G 19G 27% /nfs-share --> home 디렉토리가 /nfs-share로 설정된 mapoo2 계정으로 su를 하자 /nfs-share가 자동으로 마운트 되었다. -bash-4.1$ ll /share total 0 drwxrwx--- 1 mapoo1 mapoo 0 Oct 4 22:18 test-folder1 drwxrwx--- 1 mapoo1 mapoo 0 Sep 29 17:24 test-folder2 -bash-4.1$ ll /nfs-share total 0 -rw-r--r-- 1 nobody mapoo 0 Oct 5 10:22 mapoo-test
이상이다.
맵퍼에 대해서도 알려주세요 -떙중
mapper와 로우 디바이스에 대해서도 좀 알려주세요
-떙중올림
마푸님 , 멀티패스와 mapper, 로우 디바이스에 관해서 좀 알려주세요 - 떙중올림.