Ubuntu 컴퓨터의 네트워크 공유에 파일을 복사할 때 파일 손상 원인 찾기

Ubuntu 컴퓨터의 네트워크 공유에 파일을 복사할 때 파일 손상 원인 찾기

Windows 7을 통해 SD 카드에서 Ubuntu 서버로 파일을 복사하기 위해 네트워크 드라이브를 사용하고 있습니다.

문제는 때때로 전송 중에 150개의 파일 중 2개가 손상된다는 것입니다.

여기에서 2개의 16진수 예제 파일을 비교합니다. 왼쪽은 원본 파일이고 오른쪽은 서버에 저장되는 방식입니다. 약 10kB 정도 다릅니다. 두 번째 예에서는 00이 추가된 것을 볼 수 있습니다.

파일 1 - .JPG 예

파일 2 - .CR2 예

무엇이 원인인지 모르겠습니다. 그래서 오류의 가능한 원인을 좁힐 수 있는 방법에 대한 제안을 요청합니다.

2개의 드라이브가 영향을 받기 때문에 이것이 하드웨어 자체의 문제는 아니라고 생각합니다.

네트워크 연결도 문제가 되지 않습니다. 케이블 제한으로 인해 발생하는 문제인데, 저는 그런 문제를 겪은 적이 없습니다.

제 아내는 Picasa에서 파일 작업을 할 때 가끔 이런 오류가 발생한다고 느낍니다. 하지만 확실히 말할 수는 없습니다.

내 생각에는 이것이 ext4 fs, samba 또는 mount의 일종의 경쟁 조건 버그인 것 같습니다.

다음은 도움이 될 수 있는 몇 가지 시스템 정보입니다.

영향을 받는 드라이브는 다음과 같습니다.

UUID="bc57f0fd-c16d-450e-83aa-4b7faace655c" /media/FOTOS2/ ext4 defaults 2
UUID="aacc7c57-8997-42c3-a2fc-648fe5a9009c" /media/WDRED2TB/ ext4 defaults 2

전체 fstab 파일은 다음과 같습니다.

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda2 during installation
UUID=9978d40a-b90d-49e1-ab7a-002cc0577120 /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/sda1 during installation
UUID=AA12-9F54  /boot/efi       vfat    defaults        0       1
# swap was on /dev/sda3 during installation
UUID=bba8a1b5-a7da-44a2-a220-23a69c73e6ab none            swap    sw              0       0


UUID="bc57f0fd-c16d-450e-83aa-4b7faace655c" /media/FOTOS2/ ext4 defaults 2
UUID="aacc7c57-8997-42c3-a2fc-648fe5a9009c" /media/WDRED2TB/ ext4 defaults 2
UUID="ba87bd76-a34a-45a5-8268-4de331ebf72f" /media/RAID/ ext4 defaults 0 2

다음은 "마운트" 출력입니다.

/dev/sde2 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/cgroup type tmpfs (rw)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
none on /sys/firmware/efi/efivars type efivarfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755)
none on /sys/fs/pstore type pstore (rw)
/dev/sde1 on /boot/efi type vfat (rw)
/dev/sdc1 on /media/FOTOS2 type ext4 (rw)
/dev/sdb1 on /media/WDRED2TB type ext4 (rw)
/dev/md0p1 on /media/RAID type ext4 (rw)
systemd on /sys/fs/cgroup/systemd type cgroup (rw,noexec,nosuid,nodev,none,name=systemd)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=piotre)

시스템은

piotre@SERVER:~$ uname -a
Linux SERVER 3.13.0-46-generic #79-Ubuntu SMP Tue Mar 10 20:06:50 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

dumpe2fs는 드라이브 중 하나에 대한 정보를 제공합니다.

Filesystem volume name:   WDRED2TB
Last mounted on:          /media/WDRED2TB
Filesystem UUID:          aacc7c57-8997-42c3-a2fc-648fe5a9009c
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              122101760
Block count:              488378385
Reserved block count:     24418919
Free blocks:              36947951
Free inodes:              121834982
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      907
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
RAID stride:              1
Flex block group size:    16
Filesystem created:       Wed May  1 12:47:05 2013
Last mount time:          Tue Apr  7 15:27:31 2015
Last write time:          Tue Apr  7 15:27:31 2015
Mount count:              169
Maximum mount count:      25
Last checked:             Mon Jul 21 21:11:14 2014
Check interval:           15552000 (6 months)
Next check after:         Sat Jan 17 20:11:14 2015
Lifetime writes:          2513 GB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      9e898ed8-9275-4e6f-9dd6-431190f4b932
Journal backup:           inode blocks
Jounaleigenschaften:         journal_incompat_revoke
Journalgrösse:            128M
Journal-Länge:            32768
Journal-Sequenz:          0x00028de6
Journal-Start:            1

먼저 smb.conf(항상 동기화 및 엄격한 동기화) 수정을 시도했지만 도움이 되지 않았습니다. 현재 smb.conf는 다음과 같습니다.

[global]
workgroup=WORKGROUP
server string=%h server (Samba, Ubuntu)
netbios name=SERVER
dns proxy=no
log file=/var/log/samba/log.%m
max log size=1000
syslog=0
panic action=/usr/share/samba/panic-action %d
server role=standalone server
map to guest=bad user
usershare allow guests=yes
security=share
force user=nobody
guest account=nobody
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536
strict syn = yes
sync always = yes

답변1

아직 이해하셨는지 모르겠지만 smb.conf에서 "엄격한 동기화" 철자를 잘못 입력하셨습니다("c"를 잊어버렸습니다). 또한 엄격한 동기화가 활성화되지 않은 경우(오류로 인해 활성화되지 않은 경우) "항상 동기화"가 작동하지 않습니다.

관련 정보