encontra a causa da corrupção de arquivos ao copiar arquivos para um compartilhamento de rede em uma máquina Ubuntu

1

Estou copiando arquivos do meu cartão SD para o meu servidor Ubuntu via Windows 7 usando uma unidade de rede.

O problema é que, às vezes, 2 arquivos de 150 estão corrompidos durante a transferência.

Veja aqui 2 arquivos de exemplo em hex hex compare, lado esquerdo original, lado direito como é armazenado no servidor. Eles diferem em ~ 10kB. No segundo exemplo, você pode ver os 00 adicionados.

Eu não sei o que poderia causar isso. Então, estou pedindo algum conselho sobre como restringir a possível fonte de erros.

Eu acho que não é o hardware em si, porque duas unidades são afetadas.

A conexão de rede também não é o problema, isso é cabo ligado e eu nunca tive problemas nesse nível.

Minha esposa tem a sensação de que, às vezes, o bug também aparece ao trabalhar em arquivos no Picasa. Mas eu não posso dizer com certeza.

Meu palpite é que é algum tipo de bug de condição de corrida no ext4 fs ou samba ou mount.

Aqui estão algumas informações do sistema, que podem ajudar:

As unidades afetadas são:

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

Aqui o arquivo fstab completo:

# /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

Aqui a saída "mount"

/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)

O sistema é um

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 dá uma das unidades:

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

Primeiro eu tentei modificar o smb.conf (sync always e strict sync) mas isso não ajudou. Aqui o smb.conf atual

[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
    
por piotre 07.04.2015 / 17:01

1 resposta

1

Eu não tenho certeza se você já descobriu isso, mas você digitou incorretamente "sincronização estrita" no seu smb.conf (esqueci o 'c'). Além disso, "sync always" não terá efeito se a sincronização estrita não estiver ativada (o que não ocorrerá nesse caso devido ao erro).

    
por 18.02.2016 / 05:13