Unfortunately the bug is still observed - i did some additional triaging.

* The bug is seen only when the samba share exported is on a vfat file system
    - for ext2 and ext3 the large sized copy succeeds without fail.

* I also tried using the samba package from debian-arm repositories(lenny-stable)
    - but there also the problem is seen.

* Even if the error is thrown up - the file is still being copied in the background - or ftruncate'ing in the background (I suspect it is only ftruncating and filling the space with zeroes because of two reasons - one the md5sums do not match afterwards and two the code seems to be doing the same thing) - but as previously stated adding a patch to always call ftruncate64() in sys_ftruncate() does not fix the problem.

[링크 : http://www.mail-archive.com/ubuntu-bugs@lists.ubuntu.com/msg1902987.html]

SH4 시스템에서 smbd / nmbd 조합으로
USB 메모리를 vfat으로 사용하여, 원격지에서 파일을 복사할경우
20MB 이상의 파일을 복사하려고 시도하면 죽는 문제가 발생했다.

임베디드 장비라서, 메모리 부족 에러와 함께 DMA 에러가 발생했지만,
이러한 문제가 발생하기전 vfat으로 rw가 아닌 ro로 mount 되는 것을 봐서
다른 문제나 버그가 있는 것으로 생각이 된다.
신고
Posted by 구차니
TAG SAMBA, SMB, 삼바

댓글을 달아 주세요

# cat log.smbd
[2009/08/15 00:00:07,  0] lib/pidfile.c:121(pidfile_create)
  ERROR: smbd is already running. File /usr/local/samba/var/locks/smbd.pid exists and process id 687 is running.

삼바가 구동중에 제대로 종료되지 않고 재가동 될경우
$PIDDIR/smbd.pid
$PIDDIR/nmbd.pid

파일이 남아 있다 보면, 위와 같이 이미 구동중으로 착각을 하고
smbd나 nmbd를 구동하는데 실패를 한다.

fork() / execl() 로 구동시에는
waitpid() 에서 벗어 나지 못하고 멈추는 현상이 발생했다.





결론 : 혹시 모르니 종료가 불확실한 시스템(임베디드?)에서는 삼바 구동 이전에 pid 파일을 지워주도록 하는게 좋을듯 하다.
신고
Posted by 구차니

댓글을 달아 주세요

삼바를 사용한다는 말은,
일반적으로 서버로 사용한는 의미인데,
그렇다고 해서 윈도우에서 아이피를 바꾸면 안되는건 아니다.


각설하고, 삼바를 구성하는 프로세스로는
nmbd
smbd
winbind 가 있다.

그 중에서 nmbd가 네트워크상에서 이름을 알리는 녀석인데,
아이피가 바뀔경우, smbd는 다시 시작안하고, nmbd만 다시 시작하면
약간의 시간이 흐른뒤 파일 공유가 연결된다.
(winbind는 안써봐서 모름)

물론 아이피가 바뀌어서 네트워크 갱신되는 동안은 접속이 끊어진다.
신고
Posted by 구차니

댓글을 달아 주세요

  1. 전 삼바 춤 얘기를 하려는 줄 알았습니다.
    삼바에 대한 조예가 깊으신갑다 하고 봤는데
    익숙한 아이피라는 단어가 나와 생각이 급회전을 하게 만드네요! ㅋㅋ

    2009.12.02 09:31 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 제가 춤을 추면 누가 돈을 챙겨가나요 ㅋㅋㅋ
      (춤은 곰이 돈은 사람이!)

      2009.12.02 09:54 신고 [ ADDR : EDIT/ DEL ]

[2009/11/11 08:17:07,  0] lib/util_sock.c:730(write_data)
[2009/11/11 08:17:07,  0] lib/util_sock.c:1468(get_peer_addr_internal)
  getpeername failed. Error was Transport endpoint is not connected
  write_data: write failure in writing to client 0.0.0.0. Error Transport endpoint is not connected
[2009/11/11 08:17:07,  0] smbd/process.c:62(srv_send_smb)
  Error writing 4 bytes to client. -1. (Transport endpoint is not connected)
위와 같은 에러가 발생한다면

/usr/local/samba/lib/smb.conf 파일에
smb ports = 139 를 넣어주면 해결이 된다고 한다.

These are generally innocuous. Windows XP will try to connect on both ports 139 and 445. Once an XP client connects on one of these ports, it silently drops the other. If you want to get rid of the error in your log, or just verify my answer, add the following parameter to the Global Section of /etc/samba/smb.conf , then restart samba.

[링크 : http://forums.opensuse.org/network-internet/413860-errors-log-smbd.html]

[링크 : http://threebit.net/mail-archive/samba/msg01516.html]
신고
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

댓글을 달아 주세요