윈도우의 데이터를 우분투에서 가져와서 처리하는 시스템이 있다.

윈도우 공유를 우분투에서 smb 마운트 하여 사용중이다.(ubuntu 22.04 )

그런데, 며칠(수일~수십일)이 지난 후 우분투가 다운 되는 현상이 발생하였다.

커널 메시지에 다음과 같은 부분이 있다.

kernel: [242843.663373] general protection fault, probably for non-canonical address 0xdead000000000108: 0000 [#1] PREEMPT SMP NOPTI
kernel: [242843.663381] CPU: 4 PID: 1689344 Comm: kworker/4:1 Tainted: G           OE      6.5.0-35-generic #35~22.04.1-Ubuntu
kernel: [242843.663385] Hardware name: ASUS System Product Name/PRIME B760M-A, BIOS 1002 04/03/2023
kernel: [242843.663387] Workqueue: cifsiod smb2_cached_lease_break [cifs]
kernel: [242843.663452] RIP: 0010:smb2_close_cached_fid+0x2a/0xd0 [cifs]


 kernel: [254783.343885] CPU: 2 PID: 1619082 Comm: kworker/2:2 Tainted: G      D    OEL     6.5.0-26-generic #26~22.04.1-Ubuntu
 kernel: [254783.343888] Hardware name: ASUS System Product Name/PRIME B760M-A, BIOS 1002 04/03/2023
 kernel: [254783.343890] Workqueue: cifsiod smb2_reconnect_server [cifs]
 kernel: [254783.343948] RIP: 0010:native_queued_spin_lock_slowpath+0x273/0x300
주요 메시지

Workqueue: cifsiod smb2_cached_lease_break [cifs]
smb2_close_cached_fid

cifsiod smb2_reconnect_server [cifs]

native_queued_spin_lock_slowpath

혹시 부품이상인가 싶어 여러가지 시도를 해봐도 동일(비슷)한 다운 현상이 발생하였다.

사실 그동안 위 메시지를 그냥 넘겼었다.
비슷한 구성의 다른 시스템에서는 나타나지 않은 현상이라, smb 쪽 이슈일까 싶은 생각조차 들지 않았던 것 같다.

이제야 눈에 띄었지만, 실제로 원인인지는 몇가지 설정을 해보면서 찾아봐야 겠다.

smb 의 캐시관련 이슈를 기준으로 찾아봐야 겠다.
캐시가 full 이 되어 중지되는 그런 것일까? 네트웍 접속 지연등의 문제일까?

1차 시도 : 일단 마운트시의 기본값이 cache=strict 인데, cacha=none 으로 해보고 상황을 지켜볼 참이다.

/etc/fstab 예시

//windows/share  /data/  cifs uid=user,gid=user,username=guest,password=,iocharset=utf8,cache=none  0  2

위가 안된다면 2차시도는

echo "0" > /proc/fs/cifs/LookupCacheEnable

3차 시도는 smb 버전 변경 ( 3.0 / 2.0 / 1.0 다른 버전 시도)

현재
vers=3.1.1

시도
vers=1.0

...

잘 해결 되길...

=======

[추가]

1차 시도를 해봤다. 그런데, 전송속도가 캐시가 없으니 너무 떨어진다. (거의 1/5 수준으로)
거의 사용이 어려운 수준.

그러면 2차 시도도 마찬가지로 쓰기 어려울 듯 . 바로 3차 시도로 넘어가야 할 듯 하다.

[추가2]

3차 시도 는 이런 에러?(경고)가.( 상위버전 3.0 / 2.0 부터 시도해볼까?)

CIFS: VFS: Use of the less secure dialect vers=1.0 is not recommended unless required for access to very old servers
반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

윈도우 <=> 우분투 를 samba 마운트 해서 사용중이다.

우분투 => 윈도우 samba 로 파일을 복사하는데 이상한 현상이 있다.

예를 들어 다음처럼 하면.

cp aaa.txt mount/
윈도우에서 aaa.txt 삭제

다시 복사
cp aaa.txt mount/
cp: 일반 파일 'aaa.txt'을(를) 생성할 수 없음: 파일이 있습니다

아마도 우분투에서 일종의 파일 캐시로 인해 그런것이 아닌가 한다.
그런데, 강제로 cp -a 를 해도 동일하다.

이렇게 해주면 또 된다.

cp aaa.txt mount/
에러 발생

touch mount/aaa.txt
cp aaa.txt mount/

이렇게 하면 정상 복사

윈도우에서 해당 파일을 삭제 후 재 복사를 하려고 하면 발생.

윈도우 마운트를 ver 1.0 으로 한 경우는 해당 현상이 발생하지 않는다.
위 현상은 ver 3 으로 한 경우.

옵션 설정으로 해당 현상을 해결 할 수 있을지는 체크해봐야 할 듯 하다.

일단 현상 정리.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

우분투 <=> 윈도우 의 경우는 심볼릭링크가 크게 상관없을 듯 하다.

그런데, 우분투 <=> 우분투 의 경우 samba 마운트 시에 symlink 유지여부가 SMB 버전마다 차이가 있는 듯 하다.

결론부터 이야기 하면 vers=1.0 으로 해야 유지가 되는 듯 하다.

//ubox-serv/data  /data/   cifs uid=ccex,gid=ccex,username=guest,password=,iocharset=utf8,vers=1.0  0  2
#//ubox-serv/data  /data/   cifs uid=ccex,gid=ccex,username=guest,password=,iocharset=utf8,noserverino 0  2

fstab 에 설정에서 위처럼 vers=1.0 으로 하는 경우만 symlink 유지됨.

SMB버전은 올리고, noserverinfo 등의 옵션은 안되는 듯 하다.

 

다른 해결 방법이 있을지는 추후 필요하면 정리.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

우분투에서 윈도우10 의 공유폴더가 마운트 되지 않는다.

# mount win10-share
mount error(112): Host is down
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

위와 같은 메시지가 나오면서 연결이 안된다.

로그기록은 다음처럼 나온다.

 CIFS VFS: cifs_mount failed w/return code = -112

smbclient 로 연결해도 표시가 되지 않는다.

# smbclient -L win10-pc
WARNING: The "syslog" option is deprecated
Enter root's password: 
protocol negotiation failed: NT_STATUS_CONNECTION_RESET

윈도우10 에 삼바1 프로토콜이 기본 비활성화 되서 그런것이다.

실행 => appwiz.cpl 명령 실행  / 또는  설정 => 앱및기능 => 프로그램 및 기능

실행창 => 윈도우키+R
Windows 기능 켜기/끄기

위 이미지의 SMB 1.0 관련 설정을 켜준다.

ps. 우분투 버전에 따라 기본 samba 2 를 사용할 수도 있겠지만, 기존 사용하던 컴에서 연결이 안된 경우이다.

 

[추가]
위 단계를 처리하고, 다음과 같은 에러가 나온다면, https://blog.1day1.org/602 를 참조.

mount error(127): Key has expired

 

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

우분투에서 윈도우의 공유폴더를 연결해 사용하고 있다.
그동안 별 이슈 없이 사용했던것 같다.

그런데, 윈도우 업데이트 후에 다음과 같은 에러가 발생하면서 연결이 안된다.

mount error(127): Key has expired

"키가 만료되었습니다" / NT_STATUS_ACCOUNT_DISABLED 등의 메시지가 보일 수도 있다.

mount 할때 guest 계정으로 연결하는데, 윈도우 업데이트 후에 해당 계정설정이 바뀐 듯 하다.

위 그림은 조치한 후에 화면이다.   활성계정 부분이 "예" 로 되어 있어야 하는데, "아니오" 로 되어 있었다.

net user guest /active:yes

로 활성화 해준다.

 

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,


우분투 - samba 로 설정한 파일을 수정시 다음과 같은 에러가 발생하는 경우.

파일 작업 실패.
"다른 프로세스가 파일의 한 부분을 잠갔으므로, 프로세스가 해당 파일을 액세스할 수 없습니다."

우분투 8.04 를 사용하다가 10.04 로 업그레이드 했을때 위와 같은 에러가 발생하였다.

samba 옵션에 다음을 추가한다.

/etc/samba/smb.conf 의 global 섹션에 추가하면 된다.

strict locking = no



반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

우분투 10.04 에서 samba mount 사용하기(fstab)


저의 개발환경 구성을 이렇게 하고 있다.(사정이 있어 기존 구성된 환경을 유지하려다 보니 복잡해 보인다)

                                                     [개발서버(소스)]  => 개발VM(nfs)    => web-dev
외부작업환경1)               윈도우 네트워크 드라이브 -> vm (smb)
외부작업환경2) (remote) -> sftp -> smb_mount -> vm (smb)

그에 맞게 작업환경을 꾸미다보니 sftp 로 직접 붙이려니 애매한 부분이 있었다.
그래서 중간에 smb mount 해서 사용하기로 했다.


1. samba 관련 설정. /etc/samba/smb.conf (설치 부분은 생략)

[httpd]
   comment = working dev httpd
   path = /work/httpd
   browseable = yes
   hosts allow = 127.0.0.1
   force user = www-data
   force group = www-data
   public = yes
   guest ok = yes
   writable = yes
   printable = no
   create mask = 0765
   directory mask = 0755

2. mount 에 필요한 패키지 설치

# apt-get install smbfs

  최신 우분투 버전은 cifs-utils 로 설치하는 듯 함.

3. /etc/fstab 에 다음처럼 항목 추가

//linux/httpd  /smb_mount/httpd  smbfs uid=user,gid=adm,password=,iocharset=utf8,noauto  0  2

예전버전에 codepage=cp949 등이 쓰였는데, 언제부터인가 옵션이 빠졌음. iocharset 만 추가

uid , gid 는 서버의 접근계정 아이디/그룹
password 옵션은 암호가 있으면 넣고, 없으면 그냥 빈란

4. 마운트

# mount /smb_mount/httpd

크게 어려운 부분은 없다.(자신에 맞게 환경설정은 변경)

해당위치로 /smb_mount/httpd 로 sftp 접근해서 파일을 직접 수정해서 작업한다.




반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
Centos 에서 삼바를 설정하는데, 기존에 쓰는 우분투 설정과 같게 했는데도 다음과 같은 에러가 난다.
smbd[9726]: [2009/10/10 08:33:24, 0] smbd/service.c:make_connection_snum(1003)
smbd[9726]:   '/user/data' does not exist or permission denied when connecting to [httpd] Error was 허가 거부됨
삼바(/etc/samba/smb.conf) 설정을 이것저것 바꿔보는데도 별다른 진척이 없었다.

처음에는  접속이 안되길래 확인해 보니 /etc/sysconfig/iptables 의 방화벽이 막혀 있었다.
(해당포트를 열거나 방화벽 설정을 해제하면 되겠다. 개발서버용이라 방화벽을 껐다.)

혹시나 해서 Selinux 를 살펴봤다. Selinux 를 끄고 다시 해보니, 정상적이었다.
/etc/selinux/config 의
SELINUX=enforcing 으로 된것을  SELINUX=disabled  로 바꿔줬다.

SELINUX 를 제대로 활용하는 방법은 없나?
찾아보면 Centos 의 제일 먼저 나오는 팁이 Selinux 를 끄세요 라니...


# 다음 자료를 보고 적용해봐야 겠다.
http://wiki.centos.org/HowTos/SELinux
http://www.linuxtopia.org/online_books/centos_linux_guides/centos_selinux_guide/index.html
http://centos.pe.kr/owiki/index.php?url=centos&no=11


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
정확한 원인과 변동사항을 정확히 파악하지는 못했다.
이전 버전의 samba 설정으로 했을때 안되는 부분이 있다.

ubuntu 8.04 의 samba 는 3.0.28 버전이다. (예전버전은 3.0.22 이다.)

보통 사용하던 설정은
 security = user
 사용자 ID 체크
 작업공간 smb 설정
 security = share
 사용자 체크 NO(guest)
 공유공간 share
이런 형태였다.

설정에서 공통적인 부분이 있는데, 바로 
force user {user_id}
force group {group_id}
옵션이다.
이것이 8.04 에서 안 먹힌다.(samba 3.0.28)
[global]
security = user

[workspace]
path = /workspace
valid users = user
force user = nobody
force group = nobody
writeable = yes
public = yes
create mask = 0664
directory mask = 0775
위와 같은 설정에서 valid users 의 ID 와 force user 가 달라서 인지 안먹힌다.

설정을 바꿔보면서 되는 설정은 Guest / share 에서 force group 옵션을 빼니 작동한다.
[global]
security = share

[workspace]
path = /workspace
force user = nobody
writeable = yes
public = yes
guest ok = yes
create mask = 0664
directory mask = 0775
이런식으로 Guest / Share 에서 force user 만 넣어주니 원하는 동작을 한다.


삼바 3.0.28 버전으로 업그레이드 되면서 바뀐 변화인듯 싶다.
정확한 부분은 samba Changelog 를 뒤져봐야 겠다.
ubuntu 8.04 나오기전인 4월이전에 release 된 버전인 듯 하다.

samba 를 소스를 컴파일해서 사용하는 것이 아니라, 배포판에 있는 것 그대로 쓰기 때문에 버전이 어떻게 되는지 모르겠지만, samba.org 를 살펴보니
3.0.xx 버전 , 3.2.xx 버전 , 3.3.xx 버전, 3.4.xx 버전등 다양한 버전이 있다.
버전명을 보니 대충 linux kernel 버전과 비슷하게 정하는 듯 싶다.
현재 stable 버전은 3.2.4 버전이라고 한다.


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,