Quando conecto minha unidade USB 2.0 ao Xubuntu e tento transferir arquivos grandes, as velocidades de transferência são boas no início, mas caem após alguns segundos para 1-2 Mib / s. Pelo que li, a transferência rápida no início é apenas até que o cache esteja cheio e a velocidade de transferência USB real é usada.
No Windows, a velocidade é constante em cerca de 25 Mb / s, mesmo stick, conectado à mesma porta.
Esta é a saída do dmesg ao conectar o stick:
[ 5237.580084] usb 1-4: new high speed USB device using ehci_hcd and address 6
[ 5237.714318] scsi4 : usb-storage 1-4:1.0
[ 5238.713909] scsi 4:0:0:0: Direct-Access SanDisk Cruzer 8.02 PQ: 0 ANSI: 0 CCS
[ 5238.715264] sd 4:0:0:0: Attached scsi generic sg2 type 0
[ 5238.727225] sd 4:0:0:0: [sdb] Attached SCSI removable disk
[ 5242.308981] sd 4:0:0:0: [sdb] 31301631 512-byte logical blocks: (16.0 GB/14.9 GiB)
[ 5242.309589] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[ 5242.311228] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[ 5242.311238] sdb: sdb1
O stick é montado automaticamente, aqui está a saída de "mount":
/dev/sdb1 on /media/B82C-6B07 type vfat (rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush)
Eu tenho que usar vfat porque quero transferir arquivos para o meu sistema Playstation3. Embora o teste abaixo mostre que essa não é a causa principal.
Parece que este é um problema comum no (X) ubuntu. Ainda não encontrei uma solução clara. Parece que o stick precisa ser montado como assíncrono em vez de nivelado, mas não sei exatamente como conseguir isso. Não me importo se tiver que desmontar o manche cada vez antes de desconectá-lo, desde que as velocidades de transferência sejam melhores.
Alguma ideia?
2 de novembro: Este relatório de bug parece estar relacionado: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/182931 . O que me preocupa é que o problema parece ter mais de 2 anos e ainda não foi resolvido.
10 de novembro: iniciei um teste de leitura com palimpstest (do projeto gnome-disk-utility). Isso me dá uma taxa de transferência mínima de 23 MBit / s. Também tentei no krusader agora, a velocidade de leitura é constantemente> 20 MBit / s. Então, o problema realmente é apenas escrever no stick!
Aqui está uma imagem de um teste de leitura e gravação no mesmo programa:
Eu tive que excluir o sistema de arquivos completamente antes do teste, o que mostra que vfat não é a principal causa, como mencionado acima.
Outra dica: se eu transferir um arquivo de 100 MB, quando estiver em 100%, levará um tempo incomum para concluir a transferência. Mais uma vez, parece-me que o arquivo está realmente em um cache, mas a gravação no dispositivo USB é muito lenta.
12 de novembro: "Boas notícias". Os problemas parecem ser o próprio cartão de memória. Experimentar um disco rígido externo (My Book Elite 1TB) fornece uma velocidade de gravação constante de cerca de 20 MiB / s. Tentei reformatar meu cartão de memória para poder comparar os dois (os sistemas de arquivos eram diferentes). Após a reformatação, as duas unidades são montadas exatamente da mesma maneira:
/dev/sdb1 on /media/My Book type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)
/dev/sdc1 on /media/cruzer_ type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)
O Cruzer é a alavanca (a velocidade continua caindo após alguns segundos), o My Book é o disco rígido externo com uma velocidade de gravação constante de 20 MiB / s.
Difícil dizer qual é realmente o problema então. Como eu disse, no Windows, também recebo velocidades de gravação igualmente rápidas com o SanCruzer.
Editar no final da recompensa: Infelizmente, o problema com o stick ainda não foi resolvido. No entanto, após 7 dias, quero conceder a recompensa, é claro. O comentário de aking1012 foi realmente útil, pois lançou uma nova luz sobre o assunto. No entanto, sinto que tenho que dar a recompensa ao harrymc, pois ele mostrou o maior esforço possível para resolver o problema. Obrigado a todos.
flush
é improvável que a opção na sua saída de montagem ajude. Eu acho que é ainda pior do que issosync
.Respostas:
O artigo Taxa de transferência lenta de estaragem em massa USB 2.0 sugere que isso pode ser um problema do dispositivo ser montado por padrão com a opção de sincronização:
Mais algumas idéias vêm do relatório de erros. Escreva no disco rígido externo, tornando a escrita muito lenta.
Consulte também a discussão no artigo sobre pmount, se isso se aplicar ao seu sistema.
Outra solução mágica vem da gravação lenta USB 2.0, mas rápida leitura, solução ainda? e envolve remontar:
Consulte este artigo e a referência a "usbtree". Diz como verificar se o usb está funcionando como 1.1 ou 2.0:
Linux e USB 2.0 .
fonte
O acesso à unidade geralmente é armazenado em buffer no modo assíncrono. A explosão rápida inicial provavelmente armazenará em cache a memória. A velocidade lenta é a velocidade de gravação real.
Se você tiver um pendrive que pisca durante a transferência, tente alguns testes. Descobri que as gravações podem continuar por um bom tempo após a cópia ser concluída.
A montagem no modo assíncrono, em vez do modo de sincronização, permite que a cópia pareça prosseguir mais rapidamente, mas não oferece a mesma segurança que os dados copiados são realmente transferidos.
Verifique as opções em
man mount
. Alguns formatos permitem que as atualizações de metadados (diretório, tabela de alocação de arquivos etc.) sejam adiadas. Isso reduzirá a quantidade de dados que precisam ser copiados. Isso aumenta um pouco o risco de perda de dados.fonte
Então, eu vim para esta página através de uma pesquisa no google sobre o mesmo problema ("o ubuntu 15 acelera a transferência usb") porque minhas transferências estavam rodando a 75kb / s.
Esta foi provavelmente apenas a solução para a minha configuração, mas minha unidade USB 3 de 16 GB foi formatada para GPT fat32, excluí todas as partições, inicializei no MBR, fiz uma única partição NTFS, liguei novamente no meu PC Ubuntu e agora estou transferindo um arquivo de 10 GB acima de 50MB / s. Para mim, problema resolvido.
fonte
Precisamos garantir que o sistema tente escrever em programar / apagar blocos de blocos. Com a memória flash moderna, elas geralmente têm 1M a 4M de tamanho. Para fazer isso, você quer ter certeza de que o seu FS está alinhado para apagar blocos, e essa interface permite a transferência de blocos inteira de uma só vez (para varas baratas). Caso contrário, obteríamos amplificação de gravação, pois o sistema tenta escrever em blocos menores do que apagar o bloco (executando leitura / modificação / gravação) + desalinhamento do bloco.
Para verificar sua configuração atual, faça:
cat /sys/block/sd**X**/device/max_sectors
Você pode ajustar as regras do salão para esses dispositivos. Consulte /unix/67719/change-value-of-usb-max-sectors-for-an-entire-family-of-devices .
Nesse caso, substituímos max_sectors para todos os dispositivos, que usavam o padrão 240 (armazenamento USB) para setores de 32K ou 2K:
(use == para verificar e = para atribuir):
No meu sistema (Mageia 4, 3.14.24 core i7), eu tive que fazer isso devido a velocidades de gravação terrivelmente lentas (2 MB / s) na Kingston DT101 G2 16GB:
vi /usr/lib/udev/rules.d/81-udisks_maxsect.rules
e adicione:SUBSISTEMS == "scsi", ATTR {max_sectors} == "240", ATTR {max_sectors} = "32678"
E a velocidade de gravação do dd aumentou 3x vezes :-) mc cp provavelmente 10-20x (após iniciar a primeira partição no setor 8192'th e reformatar com clusters alinhados de 64k):
fdisk -u /dev/sdh
(desative o compat DOS se estiver ligado),mkfs.vfat /dev/sdh1 -n KINGSTON16G -s 128 **-R 4592**
e usefsck.vfat -v /dev/sdh1
para verificar o alinhamento (marque [setor de início de dados] deve ser múltiplo de 128 (tamanho do cluster)). Ajuste o número de setores reservados (-R), se necessário.O max_sectors padrão (240) parece causar alta amplificação de gravação em algumas das novas unidades baratas. Mas tenha muito cuidado com essa configuração alta, o efeito semelhante é alcançado em 2048 setores (provavelmente 1 milhão de blocos de apagamento:
SUBSISTEMS == "scsi", ATTR {max_sectors} == "240", ATTR {max_sectors} = "2048"
Teste todos os seus antigos dispositivos USB, para que eles ainda funcionem bem. Use atributos de fornecedor / modelo nos arquivos de regras para ser mais específico.
PS: Se estiver usando ext3 / 4:
Desative o registro no diário e defina stride / stripe_width para mkfs.ext3:
mkfs.ext3 -O ^ has_journal -E stride = [ler blocos fs da página] -E stripe-width = [apagar blocos fs do bloco]
fonte
Eu tive alguns problemas também com a taxa de transferência em um disco externo WD, depois de abri-lo no Windows SO, eu sempre usei o LINUX, depois a taxa de transferência era de 1,5mb / s do que desmontava o disco rígido externo, executei o dmesg lá estava dizendo que o sdb1 estava desmontado, executava um fsck, fazia alguns reparos e, depois disso, 20mb / s de taxa de transferência novamente ao copiar do sda para o disco externo.
"fsck é sempre um risco se você tiver dados, mas funcionou para mim, sem perda de dados"
fonte
Verifique, realmente , se o seu dispositivo está conectado a uma porta USB compatível com velocidade máxima.
Embora isso possa parecer bobagem, às vezes as coisas se confundem. Algumas placas-mãe possuem portas de alta e baixa velocidade. Use uma ferramenta como usbview (observe para executá-lo com direitos de superusuário
sudo usbview
) para verificar se o seu dispositivo está operando a 480 Mb / s (USB 2.0) ou mais.Por exemplo, quando você normalmente conecta seu dispositivo através de algum cabo de extensão, um hub no monitor etc., pode acontecer - após reconectar os cabos no computador da mesa ou mais - que você acidentalmente conecta o hub a uma velocidade baixa Porta (USB 1.). Em seguida, todos os dispositivos conectados ao hub operam em baixa velocidade, enquanto outros, conectados em outro lugar, operam em alta velocidade. Pode ser muito confuso - e é uma coisa simples de hardware ... Aconteceu comigo uma vez e não está relacionado a nenhum módulo do kernel USB, opções de montagem ou mais.
fonte