Como obter um comportamento de cache semelhante ao do Windows para uma unidade externa USB

1

O problema: Thunar afirma que está gravando meus arquivos em um pen drive, depois eu gasto 15 minutos esperando a unidade desmontar.

Eu entendo que tem a ver com o cache de gravação. Espero que haja uma maneira de fazê-lo para fazer o que eu gostaria, que é para o gerenciador de arquivos mostrar-me uma barra de progresso precisa do tempo restante de gravação (com a opção de cancelar a cópia!)

O que eu não entendo é:

  • O Ubuntu detecta algumas unidades como removíveis e aplica configurações ideais de cache de gravação?
  • Se sim, como posso forçar meu disco?

E, em geral, isto é, ensina um homem a pescar :

  • Como posso ajustar o cache de gravação para uma unidade? O cache de gravação ideal seria um cache write-back pequeno que é gravado no disco o mais rápido possível. Na verdade, o cache em si não precisa ser pequeno, basta permitir um pequeno número de páginas sujas.
  • Como posso ter essa configuração sempre que uso uma unidade USB?

Divulgação completa: Estou no Mint 17.2 Xfce

    
por Aleksandr Dubinsky 29.10.2015 / 11:39

3 respostas

2

As configurações que controlam quantas páginas sujas podem acumular antes de serem gravadas no disco são controladas por o subsistema de memória virtual .

Para sistemas com muita RAM, eles geralmente precisam ser ajustados . Infelizmente , essas configurações são de todo o sistema. (Ugh, Linus.)

Veja as configurações atuais com:

sudo sysctl -a | grep vm.dirty

Na minha máquina:

vm.dirty_background_bytes = 0
vm.dirty_background_ratio = 5
vm.dirty_bytes = 0
vm.dirty_expire_centisecs = 3000
vm.dirty_ratio = 10
vm.dirty_writeback_centisecs = 500

Dê uma olhada na documentação para essas configurações . Na minha máquina, vm.dirty_ratio está definido como 10 (ou seja, 10% de RAM). Isso significa que o cache de disco irá engolir até 10% x 64GB = 6.4GB dos dados antes de gravá-los no disco .

Vou tentar ajustar essas configurações escrevendo o seguinte em meu /etc/sysctl.conf :

vm.dirty_bytes = 67108864 
vm.dirty_background_bytes = 1048576
vm.dirty_expire_centisecs = 30
vm.dirty_writeback_centisecs = 30

Vou atualizar essa resposta conforme aprendo mais, mas acho que essas configurações agressivas são adequadas para meu SSD, que tem seu próprio cache de gravação on-drive grande.

    
por Aleksandr Dubinsky 29.10.2015 / 15:06
1

Não tenho certeza se posso responder a você o que você quer ouvir. Existe a opção "oldschool" para desabilitar esse buffer - você pode usar o atributo fstab sync para isso.

Isso o levará para longe da maneira moderna de seu dispositivo mentir para você "seu computador rápido já terminou" quando não o fez. A realidade ainda é "é feito quando é feito" e sync deixará seu computador mostrar quando realmente estiver pronto.

Se você está de fato incomodado com a "barra de progresso" (ou tempos de espera no shell) e quer ajustar o tamanho do buffer e o comportamento, você pode fazer isso editando as opções sysfs / block. Comparar link por esta. A lista de opções disponíveis pode variar dependendo do (s) uso (s) do ioscheduler you (r kernel).

Agora, a questão é: como aplicar isso a pen drives USB.

O AFIAK no Linux O mdd udisks manipula a montagem automática do USB Stick e o AFAIK, não há uma maneira elegante de ensinar padrões intuitivos ao udisks. Você pode tentar usar o udisks-glue para ajudá-lo.

Se houver apenas um número limitado de pendrives que você queira ajustar em detalhes, você pode escrever uma regra do udev para definir as opções mount ou sysfs desejadas. Eu sempre olho para o link sempre que estou mexendo com o udev.

Espero que ajude

    
por Nachtexpress 29.10.2015 / 12:28
0

O aviso do usuário Nachtexpress em relação à sincronização está correto. Quanto a como implementar isso dinamicamente, use / configure o Autofs conforme as instruções no Debian Wiki para este serviço (link: link ) .

Você notará que pode definir a opção de sincronização para unidades USB em um arquivo de configuração de acordo com a seguinte sintaxe e linha:

 /var/autofs/removable   /etc/auto.removable --timeout=2,sync,nodev,nosuid

O acima é apenas um exemplo que você pode configurar para suas necessidades específicas; acesse o link do wiki para obter instruções completas sobre como fazer isso.

Eu acho que o wiki debian é apropriado para usuários ubumtu, já que esta distro deriva dele.

Espero que isso ajude.

    
por Guest-urrr 12.04.2016 / 19:14