CentOS에서 부팅 시 네트워크가 느린 경우 삼바, sshfs 등의 네크워크 파일 시스템 mount가 되지 않는 경우가 발생한다.

/etc/fstab에 _netdev나 x-systemd.automount,x-systemd.requires=network-online.target,x-systemd.after=network-online.target의 경우 System의 Network가 online이 되면 mount를 시도하는 옵션이지만 mount 명령어를 따로 실행해도 mount하는데 20초 이상 걸리는 상황에서는 해당 옵션을 활성화해도 boot 후 mount가 되지 않았다.

결국 Google 검색 후 Crontab에 boot 시 script를 돌리는 것으로 해결

 

1. mount 실패 로그

● TKS_VM_BACKUP.mount - /TKS_VM_BACKUP
   Loaded: loaded (/etc/fstab; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Fri 2020-04-10 18:13:49 KST; 12min ago
    Where: /TKS_VM_BACKUP
     What: //192.168.x.x/TKS_VM_IMG
     Docs: man:fstab(5)
           man:systemd-fstab-generator(8)

  Process: 2270 ExecMount=/bin/mount //192.168.x.x/TKS_VM_IMG /TKS_VM_BACKUP -t cifs -o _netdev,x-systemd.after=network-online.target,noexec,nosuid,vers=3.0,credentials=/root/.smb.cred (code=exited, status=32)

Apr 10 18:13:42 winterfell systemd[1]: Mounting /TKS_VM_BACKUP...
Apr 10 18:13:42 winterfell snoopy[2270]: [uid:0 sid:1 tty:(none) cwd:/ filename:/bin/mount]: /bin/mount //192.168.x.x/TKS_VM_IMG /TKS_VM_BACKUP -t cifs -o _netdev,x-s...ot/.smb.cred
Apr 10 18:13:42 winterfell snoopy[2278]: [uid:0 sid:1 tty:(none) cwd:/ filename:/sbin/mount.cifs]: /sbin/mount.cifs //192.168.x.x/TKS_VM_IMG /TKS_VM_BACKUP -o rw,noex...cred,_netdev
Apr 10 18:13:48 winterfell mount[2270]: Unable to find suitable address.
Apr 10 18:13:49 winterfell systemd[1]: TKS_VM_BACKUP.mount mount process exited, code=exited status=32
Apr 10 18:13:49 winterfell systemd[1]: Failed to mount /TKS_VM_BACKUP.
Apr 10 18:13:49 winterfell systemd[1]: Unit TKS_VM_BACKUP.mount entered failed state.

2. Script 생성

vi /root/smb_mount_chk.sh

#!/bin/bash
# nettester.sh: test runs in loop to MAX = number of TRIES
#               or until network responds successfully

NETWORK=0
COUNTER=0

# wait till next loop
SECONDS=2

#stop testing after N times
TRIES=300
# your most faithfull url to hit success all the time
URL=192.168.x.x

until [  $COUNTER -eq "$TRIES" ]
do
      let COUNTER=$COUNTER+1
      GETURL=`curl -vs -o /dev/null --max-time 1 --connect-timeout 1 $URL 2>&1 |grep -c Connected`
      if [ $GETURL -eq 1 ]
	then
	    NETWORK=1
	    if [ $NETWORK -eq 1 ]
	      then
		COUNTER=$TRIES
	      else
		NETWORK=0
	    fi
	else
            echo 'sleep'
	    sleep $SECONDS
      fi
done

if [ $NETWORK -eq 1 ]
    then
        mount -t cifs -o credentials=/root/.smb.cred,vers=3.0 //$URL/TKS_VM_IMG /TKS_VM_BACKUP
	  # do your mount stuff here
    else
        exit 1 # -bailing, had to many tries
fi

3. Script 실행 권한 추가

chmod +x /root/smb_mount_chk.sh

4. Crontab 등록

@reboot /root/smb_mount_chk.sh > /root/cron.log 2>&1

 

[ CentOS 7 에서 삼바(samba) Client 설정 ]

1. samba 관련 패키지 설치 및 기동

sudo yum -y install samba samba-client cifs-utils

 

2. mount 할 폴더 생성

mkdir /share

 

3. 아래의 명령어로 mount

# mount -t cifs -o username=user,password=passwd,vers=3.0 //server_ip/diretory /share

- credentials 파일로 계정 정보 등록해서 mount

# cat /root/.smb.cred
username=user
password=passwd

# mount -t cifs -o credentials=/root/.smb.cred,vers=3.0 //server_ip/diretory /share

 

4. 시스템 기동 시 자동 mount 등록 방법

- /etc/fstab 등록

//server_ip/diretory /share cifs _netdev,rw,credentials=/root/.smb.cred,vers=3.0  0 0

 

- systemd에 등록

# vi share.mount
[Unit]
Description = SMB share
Requires=network-online.target
After=network-online.target

[Mount]
What = //server_ip/diretory
Where = /share
Type = cifs
Options = credentials=/root/.smb.cred,vers=3.0

[Install]
WantedBy = multi-user.target

# systemctl enable share.mount
# systemctl status share.mount

 

 

 

[ CentOS 7 에서 SAMBA Server 설정 방법 ]

 

1. samba 관련 패키지 설치 및 기동

sudo yum install samba samba-client samba-common

systemctl enable smb
systemctl enable nmb
systemctl start smb
systemctl start nmb

2. 공유하고 싶은 폴더 생성

# /share 폴더 생성
mkdir /share
# 권한 설정
chmod 777 /share

3. SAMBA 권한 설정

3-1. 계정 로그인 없이 ( Anonymous ) 접속

- /etc/samba/smb.conf 설정

[global]
        workgroup = WORKGROUP
        netbios name = centos
        security = user
        map to guest = bad user

[Anonymous]
        comment = Anonymous File Server Share
        path = /share
        browsable =yes
        writable = yes
        guest ok = yes
        read only = no
        public = yes
        force create mode = 0777
        directory mask = 0777

3-2. 계정 설정

- Samba 접속용 계정 생성

useradd -M -s /sbin/nologin smbuser

 

- Samba 계정 비밀번호 설정

# smbpasswd -a smbuser

New SMB password:
Retype new SMB password:
Added user smbuser.

 

- /etc/samba/smb.conf 설정

[global]
        workgroup = WORKGROUP
        netbios name = centos
        security = user
        map to guest = bad user

[share]
        comment = share
        path = /share
        public = no
        writable = yes
        printable = yes
        write list = smbuser
        # 계정이 여러개일 경우 아래와 같이 추가 
        # write list = smbuser app root
        create mask = 0777
        directory mask = 0777

4. Samba 재기동

systemctl stop smb
systemctl stop nmb
systemctl start smb
systemctl start nmb

시놀로지에서 네트워크 공유를 위한 삼바 설정은 아래와 같이 간단하게 할 수 있다.

삼바는 버전이 크게 1.0~3.0까지 있는데 고급 설정에서 최소/최대 삼바 지원 버전을 설정할 수 있다.

[ Samba 설정 ]

1. 시놀로지 제어판 -> 파일 서비스 -> SMB 서비스 활성화 체크

 

2. 최대/최소 지원 버전은 고급 설정에서 설정 가능

+ Recent posts