I found a workaround which involves disabling Opportunistic Locking. This will have a small performance impact, but at least the thing wont hang up and use 100% CPU for no goddamn reason. Yes, this article has an angry tone, because this issue has eaten way too much of my time today.

To disable Opportunistic Locking, you have to set the contents of the file “/proc/fs/cifs/OplockEnabled” to 0. This file only exists after the cifs module has been loaded, and will be replaced if the module is unloaded and reloaded. Thus, I configured my /etc/rc.local script (use whatever equivalent your distro has to a startup script) to both load the cifs module and set the contents of said file:

# cifs client workaround
modprobe cifs
echo 0 > /proc/fs/cifs/OplockEnabled

[링크 : http://blog.dhampir.no/content/cifs-vfs-no-response-for-cmd-n-mid]

이 문서 앞부분에 나열한 Windows 운영 체제 중 하나를 실행하는 SMB(서버 메시지 블록) 클라이언트에서는 oplocks(Opportunistic Locking)가 기본적으로 설정됩니다. oplocks를 통해 클라이언트는 파일을 잠가 다른 사용자가 파일을 변경하는 위험 없이 로컬로 정보를 캐시할 수 있습니다. 이 경우 대부분의 파일 작업에서 성능이 향상되지만, 다른 사용자가 해당 파일에 대한 액세스를 요청할 때 oplocks를 부여하는 서버에서 해당 잠금의 위반을 관리해야 하기 때문에 일부 작업에서는 성능이 저하될 수도 있습니다.

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MRXSmb\Parameters\
OplocksDisabled REG_DWORD 0 또는 1
기본값: 0(해제되지 않음)

참고 OplocksDisabled 레지스트리 값은 원격 파일에 대해 oplocks를 요청하거나 요청하지 않도록 Windows 클라이언트를 구성합니다.

[링크 : http://support.microsoft.com/kb/296264]



 CIFS VFS: No response to cmd 46 mid 21391
 CIFS VFS: Send error in read = -11
 CIFS VFS: No response to cmd 47 mid 21392
 CIFS VFS: Write2 ret -11, written = 0
 CIFS VFS: Write2 ret -9, written = 0   

CIFS로 samba 를 공유해서 사용할때 이러한 에러가 발생을 하면서 삼바서버에 파일을 장시간 쓰지 못하는 문제가 있다.
위의 방법으로 바꾸고 해봐도 그리 차이는 없어 보이는데 흐음..
Posted by 구차니

댓글을 달아 주세요

# more /usr/local/samba/var/log.smbd
[2009/11/08 23:55:51,  0] lib/util_sec.c:assert_gid(113)
Failed to set gid privileges to (-1,65534) now set to (0,0) uid=(0,0)

위와 같은 에러가 발생하는 것은,
User ID / Group ID 설정상의 문제로 생각이 된다.

해결 방법은
좀.. 미심쩍지만

# vi /usr/local/samba/lib/smb.conf
[global]
guest account = root

[링크 : http://archives.devshed.com/forums/samba-120/panic-failed-to-set-gid-on-mipsel-1742988.html]



20091111 추가
Failed to set gid privileges to (-1,65534) now set to (0,0) uid=(0,0)

한글로 번역하자면,
현재 gid (0,0) uid (0,0)으로 설정되어 있는데 (-1,65534) 로 gid 권한을 설정하는데 실패를 했다는 의미이다.
현재 gid = 0, uid = 0 이고 이것은 일반적인 unix 시스템에서 root의 uid / gid 값이다.
그런 이유로, guest account 를 root로 했을시에 위와 같은 에러가 발생하지 않는 것으로 생각된다.
Posted by 구차니
TAG SAMBA, SMB, 삼바

댓글을 달아 주세요

# more /usr/local/samba/var/log.smbd
[2009/11/08 23:55:51,  0] smbd/service.c:1005(make_connection_snum)
  '/tmp' does not exist or permission denied when connecting to [IPC$] Error was No such file or directory

log.smbd 에서 위와 같은 에러가 발생되고,
/usr/local/samba/var/cores/smbd/core 파일이 생성되며,
smbtree 실행시에는 "failed tcon_X with NT_STATUS_BAD_NETWORK_NAME" 에러가 발생을 한다.

위의 에러는 간단하게 /tmp 디렉토리를 생성하거나, 퍼미션을 수정하면 해결된다.
# mkdir /tmp


20091117 추가
MTD에서 작동 시킬경우 tmp는 굳이 writable 하지 않아도 된다.
Posted by 구차니
TAG IPC$, SAMBA, SMB, 삼바

댓글을 달아 주세요

/etc/services
netbios-ns      137/tcp                         # NETBIOS Name Service
netbios-ns      137/udp
netbios-dgm     138/tcp                         # NETBIOS Datagram Service
netbios-dgm     138/udp
netbios-ssn     139/tcp                         # NETBIOS session service
netbios-ssn     139/udp

microsoft-ds    445/tcp
microsoft-ds    445/udp



삼바라는 녀석.. 포트를 참 여러가지 쓰기도 한다.
# smbtree -N
timeout connecting to 192.168.10.123:445

위와 같은 에러가 발생하거나 삼바 접속이 안되면
445번 포트가 설정되어 있는지 /etc/services 에서 확인해야 한다.
Posted by 구차니

댓글을 달아 주세요

MTD에서 삼바를 구동하는데 위와 같은 에러가 발생하면, 말 그대로 MTD의 남은 공간이 없다는 의미이다.
파티션을 조절하거나, 파일 용량을 줄이거나 조치를 취해야 한다.

# ./smbd -S -F
Unable to setup corepath for smbd: No space left on device
smbd version 3.4.0 started.
Copyright Andrew Tridgell and the Samba Team 1992-2009
standard input is not a socket, assuming -D option

# ./smbd -S -F
Unable to setup corepath for smbd: No space left on device
smbd version 3.4.0 started.
Copyright Andrew Tridgell and the Samba Team 1992-2009
tdb(unnamed): tdb_open_ex: failed to truncate /usr/local/samba/var/locks/messages.tdb: No space left on device
ERROR: Failed to initialise messages database: No space left on device
messaging_tdb_init failed: NT_STATUS_DISK_FULL
Could not init smbd messaging context.

Posted by 구차니

댓글을 달아 주세요

  1. MTD 가 뭔지 모르겠어요 @.@ ㅋ 잘 지내고 계시죵 ?

    2009.11.09 14:01 [ ADDR : EDIT/ DEL : REPLY ]
    • 커서가 너무 마음에 들어서 잘쓰고 있답니다 ㅋ
      MTD는 Memory Techonology based Device의 약자였던가요 ㅎ

      음.. 간단하게 말하면 embeded linux 처럼 Flash 메모리에 담아서 부팅시키는 장치를 이야기 하는거에요 ㅎ

      2009.11.09 14:09 [ ADDR : EDIT/ DEL ]
    • 아 그렇다면 이 오류는 플래시메모리 용량이 작아서 뜬 오류이다 이건거죠? 들고다니는 OS ? ㅎ 꼭 영화같네요 ㅋ

      2009.11.09 14:13 [ ADDR : EDIT/ DEL ]
    • 어렵게 생각하실건 없구요 ㅎ
      요즘의 핸드폰, 스마트 폰, PMP 등 각종 포터블 기기는 전부 MTD 기반으로 돌아 갈거라고 생각이 됩니다.

      그.. 넷북에서 지원하는 인스턴트 부팅역시,
      하드의 일부에 최적화된 OS를 조그맣게 만들어서 Flash 메모리 등에 저장해 놓고 그걸로 부팅하는 거니 MTD가 안쓰이는 분야가 없다고 할정도죠 ㅎ

      물론 위의 에러는, HDD에서 구동해도 특정 디렉토리의 여유공간이 없을때 발생할 수 있답니다.

      예를 들어 윈도우도 C드라이브 공간이 하나도 없으면 가상메모리 부족합니다 라고 하면서 프로그램 실행못하게 되는것과 같은 에러죠 ㅎ

      2009.11.09 14:29 [ ADDR : EDIT/ DEL ]

MTD로 올리기 위해 이미지를 작성하는데, 위와 같은 에러가 발생했다.
파일은 존재하고, 디렉토리도 존재하는데.. 왜 안읽히는 걸까!?


결론 : private 디렉토리 자체가 read-only일 경우,
         그러니까 MTD에 올릴경우 cramfs 등의 read-only FS를 사용하게 되는데
         이 경우에는 writeable 하게 열면 에러가 발생하므로, 위와 같은 에러가 발생하는 것으로 보여진다.
Posted by 구차니

댓글을 달아 주세요

/lib/libnsl.so
/lib/libdl.so
/usr/lib/libpopt.so
/usr/lib/libz.so

/etc/printcap <- touch로 만들어도 됨

혹시나 모를 다음의 노가다를 위한 저장.
samba를 make DESTDIR=/ install 대신
직접 복사해서 타켓 rootfs를 만들때 필요한 파일들

smbtree 를 구동하려고 하니 위의 파일들을 추가로 요구했다.
Posted by 구차니
TAG rootfs, SAMBA, SMB

댓글을 달아 주세요

삼바 3/4에 따라서 다르지만
일단 삼바 3 이전의 경우에는

smbpasswd 라는 파일이 유지된다.
tdb 방식의 삼바 4의 경우에는

 # pdbedit -w -L

라고 입력하면 smbpasswd 스타일로 출력된다.

[링크 : http://ubuntuforums.org/showthread.php?t=23616]
[링크 : http://linux.die.net/man/8/pdbedit]
Posted by 구차니

댓글을 달아 주세요

swat는 xinet/inet을 통해 구동되는 웹서비스이다.
일단 swat를 사용하기 위해서는 samba 컴파일 시에
--without-swat가 있었는지 없었는지 확인을 해야한다.
(안하면 나 처럼 개고생 ㄱ-)

아무튼 기본적으로 사용하는 포트는 901번이며

Step 1. /etc/services 에 위의 901번 포트를 추가 해야 한다.
# more /etc/services
...
accessbuilder   888/udp
swat            901/tcp                 # samba web configuration tool
ftps-data       989/tcp                 # ftp protocol, data, over TLS/SSL
...


[링크 : http://www.bilbos-stekkie.com/swat/starting_swat_us.php]

Step 2. /etc/xinetd.d/swat를 추가 한다.
# more /etc/xinetd.d/swat
# default: off
# description: SWAT is the Samba Web Admin Tool. Use swat \
#              to configure your Samba server. To use SWAT, \
#              connect to port 901 with your favorite web browser.
service swat
{
    port    = 901
    socket_type     = stream
    wait    = no
    only_from = localhost
    user    = root
    server  = /usr/sbin/swat
    log_on_failure  += USERID
    disable = no
}

[링크 : http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/SWAT.html#id2681240]

Step 3. xinetd를 restart 시킨다.
# service xinetd restart


Step 4. 웹브라우저에서 901번 포트로 접속한다.
http://localhost:901
혹은
http://serverip:901



* 확인필요 *

--without-swat 로 설정하고 컴파일후 install을 해도
swat에서 사용하는 각종 html 파일들이 복사되지 않기 때문에
아래와 같은 에러가 발생하는 것으로 보인다.

500 Server Error

chdir failed - the server is not configured correctly


Posted by 구차니

댓글을 달아 주세요



[링크 : http://dexter.tistory.com/836]
[링크 : http://blog.naver.com/pythonist/20042155985]
[링크 : http://blog.naver.com/cybercall/120027326575]
Posted by 구차니

댓글을 달아 주세요