728x90
반응형

예를들어
대상 스토리지 IP가 192.168.1.10 이고
해당 경로가 ubuntu_share 폴더인데,
/mnt/nas라는 경로에 마운트 하고자 한다면,  

uidgid를 지정하여 마운트:

mount -t cifs //192.168.1.10/ubuntu_share /mnt/nas -o username=<smb_user>,password=<smb_pass>,uid=1000,gid=1000
  • <smb_user><smb_pass>는 SMB 공유에 접근하는 사용자 이름과 비밀번호로 대체한다.
    • 비밀번호에 특수문자가 들어갈 경우, 작은 따옴표 '' 로 감싸준다
  •  uid=1000,gid=1000 는 원하는 사용자의 값으로 바꾼다. 

 

결과확인:

ls -ld /mnt/nas 

 

/etc/fstab에 영구 적용

위 방법이 동작한다면, 부팅 시 자동으로 적용되도록 /etc/fstab을 수정:

  1. 파일 편집:
    nano /etc/fstab
  2. 아래 줄 추가:
    //192.168.1.10/share /mnt/nas cifs username=<smb_user>,password=<smb_pass>,uid=1000,gid=1000,rw 0 0
    • 보안을 위해 비밀번호를 평문으로 저장하지 않으려면, 자격 증명을 별도 파일에 저장:
      /etc/smb-credentials
      내용:
      username=<smb_user> password=<smb_pass>
      권한 설정:
      chmod 600 /etc/smb-credentials
      /etc/fstab 수정:
      //192.168.1.10/share /mnt/nas cifs credentials=/etc/smb-credentials,uid=1000,gid=1000,rw 0 0
  3. 마운트 테스트:
    mount -a

 

  • 마운트 옵션 확인:
    mount | grep /mnt/nas
    • uid=1000,gid=1000이 포함되어 있는지 확인
  • SMB 버전:
    • 오래된 SMB 버전(예: SMBv1)을 사용하는 경우 호환성 문제가 있을 수 있음. -o vers=3.0을 추가.
      mount -t cifs //192.168.1.10/share /mnt/nas -o username=<smb_user>,password=<smb_pass>,uid=1000,gid=1000,vers=3.0

 

최종확인:

ls -ld /mnt/nas 

 


아래와 같이 뜨면서 언마운트가 되는 경우 

root@server1:/mnt# umount -f /mnt/nas umount: /mnt/nas: target is busy.

 

umount -f /mnt/nas를 실행했는데 target is busy 오류가 발생한다는 것은 /mnt/nas 디렉토리가 현재 사용 중이어서 마운트를 해제할 수 없다는 뜻입니다. SMB 마운트를 강제로 해제하려면 사용 중인 프로세스를 종료하거나, 더 강력한 옵션을 사용해야 합니다. 아래에서 단계별로 해결 방법을 설명하겠습니다.


1. 왜 'target is busy'가 발생하는가?

  • /mnt/nas에 접근 중인 프로세스가 있거나, 열린 파일/디렉토리가 존재합니다.
  • 예: 셸에서 cd /mnt/nas로 이동한 상태이거나, 프로그램이 해당 경로의 파일을 사용 중일 수 있습니다.

2. 해결 방법

(1) 사용 중인 프로세스 확인

lsof 또는 fuser를 사용해 /mnt/nas를 사용 중인 프로세스를 찾아봅니다.

  • lsof 사용:
    lsof /mnt/nas
    • 출력 예시:
      COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 1234 user1 cwd DIR 0,XX 4096 12 /mnt/nas
    • PID 열에 나오는 프로세스 번호(위 예시에서는 1234)를 확인하세요.
  • fuser 사용:
    fuser -m /mnt/nas
    • 출력 예시:
      /mnt/nas: 1234 5678
    • 사용 중인 프로세스 ID(PID)가 나옵니다.

(2) 프로세스 종료

확인된 PID를 종료합니다.

  • 특정 PID 종료:
    kill -9 1234
    • 예: 1234lsoffuser로 찾은 PID로 대체하세요.
  • fuser로 한 번에 종료:
    fuser -km /mnt/nas
    • -k: 프로세스를 강제로 종료.
    • -m: 마운트 포인트를 지정.

(3) 다시 언마운트 시도

프로세스를 종료한 후 다시 시도:

umount /mnt/nas
  • 여전히 실패하면 강제 옵션 추가:
    umount -f /mnt/nas

(4) 최후의 수단: Lazy 언마운트

위 방법으로도 안 되면, lazy unmount(-l)를 사용해 즉시 마운트를 해제할 수 있습니다:

umount -l /mnt/nas
  • -l: 사용 중인 프로세스가 끝날 때까지 기다리지 않고 마운트를 즉시 해제. 이후 시스템이 자동으로 정리합니다.
  • 이 방법은 마운트 포인트를 즉시 사용 가능한 상태로 만들지만, 백그라운드에서 정리 작업이 진행되므로 주의하세요.

3. 추가 팁

  • 현재 디렉토리 확인:
    • 셸에서 /mnt/nas에 들어가 있다면 빠져나오세요:
       
      cd /
    • 그런 다음 다시 umount를 시도하세요.
  • lsoffuser가 설치되어 있지 않다면:
    • 설치 명령어:
       
      apt install lsof # Debian/Ubuntu
      yum install lsof # CentOS/RHEL
       
      apt install psmisc # fuser 설치, Debian/Ubuntu
      yum install psmisc # CentOS/RHEL

4. 최종 확인

언마운트가 성공했는지 확인:

mount | grep /mnt/nas
  • 아무 출력이 없으면 마운트가 해제된 것입니다.

그 후, 원래 목표였던 SMB 마운트를 uidgid 옵션으로 다시 마운트하세요:

mount -t cifs //192.168.1.10/share /mnt/nas -o username=<smb_user>,password=<smb_pass>,uid=1000,gid=1000
반응형

+ Recent posts