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

 

이상이다.

linux – cifs, nfs autofs 마운트
태그:     

linux – cifs, nfs autofs 마운트”에 대한 3개의 생각

  • 2017년 4월 7일 3:00 오후
    고유주소

    맵퍼에 대해서도 알려주세요 -떙중

    응답
  • 2017년 4월 7일 3:02 오후
    고유주소

    mapper와 로우 디바이스에 대해서도 좀 알려주세요
    -떙중올림

    응답
  • 2017년 4월 7일 3:14 오후
    고유주소

    마푸님 , 멀티패스와 mapper, 로우 디바이스에 관해서 좀 알려주세요 – 떙중올림.

    응답

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다