Maneira de acelerar cp -a (usar cp -a dentro de um pen drive é muito lento)

Maneira de acelerar cp -a (usar cp -a dentro de um pen drive é muito lento)

Ao usar um pen drive com um sistema operacional persistente, acontece que a partição persistente casper-rwfica corrompida se alguém retirar o pen drive muito cedo após desligar o sistema operacional.

Infelizmente, com o ubuntustudio-20.04.2, experimentei períodos de até um minuto após clicar no botão de desligamento quando a tela estava preta, mas operações pesadas de gravação acontecem na casper-rwpartição. Portanto, pode acontecer muito facilmente destruí-lo puxando o manche muito cedo.

Para me recuperar de tal acidente, crio uma partição de backup casper-rwe uso comandos (após me tornar superusuário) após definir corretamente as variáveis ​​QUELLE e ZIEL:

time cp -a "${QUELLE}/upper" "${ZIEL}"

time cp -a "${QUELLE}/work" "${ZIEL}"

time cp -a "${QUELLE}/lost+found" "${ZIEL}"

Quando meu script é executado, vejo

  • atividade de CPU muito baixa
  • muito pouco uso de RAM
  • htopme mostra que o cp -aprocesso leva muito tempo no estado D.

Se eu entendi direito (corrija-me), isso significa que o computador tem que esperar com muita frequência porque o controlador do pendrive não consegue lidar com essas muitas operações de leitura e gravação de maneira eficaz (embora seja um dispositivo USB3 em um soquete USB3!) .

Existe uma maneira de deixar cp -a usar buffers maiores para acelerar as coisas, de preferência gravando arquivos inteiros sequencialmente?

Responder1

Parece que é possível acelerar significativamente a cópia copiando primeiro os diretórios uppere work( lost+foundse existir) na partição casper-rwpara algum diretório em um SSD. Esta etapa leva pouco mais de 2 minutos. Pode-se usar cp -apara esse fim.

Se você quiser o backup no mesmo stick em uma partição separada, copiá-lo do SSD para o stick USB cp -alevou cerca de 31 minutos (para 4,1 GiB de dados em alguns arquivos 66500, stick USB3 em um soquete USB3) . O conteúdo anterior da partição foi apagado rm -rf "${ZIEL}/upper"; rm -rf "${ZIEL}/work"; rm -rf "${ZIEL}/lost+foundantes que qualquer conteúdo atual fosse copiado para a partição de backup).

Alguém sabe se faz diferença se uma partição for apagada dessa maneira antes de ser reutilizada ou se aceleraria ainda mais se alguém a formatasse antes que o conteúdo da rede fosse colocado lá? No caso de um danificado, casper-rwé necessário formatá-lo antes de restaurar seu conteúdo do backup.

É claro que alguém poderia melhorar ainda mais fazendo um backup como arquivo backup.tar.gz. Isso reduz a quantidade de dados a serem gravados e principalmente a segunda etapa lucraria com isso.

Responder2

Use syncpara forçar a gravação imediata no destino

Quando você cria cpum arquivo e ele aparece no sistema de arquivos de destino, não é garantido que o arquivo ainda esteja na mídia de armazenamento.

A razão para isso é que os dados são primeiro buscados entre vários buffers internos, o que é mais rápido e fácil de usar, até que estejam realmente no dispositivo de armazenamento de destino. A gravação dos dados no dispositivo de destino é realizada em segundo plano e não consome muitos ciclos de CPU, por isso pode ser difícil vê-los nos monitores de atividade.

Você sempre pode tentar forçar uma gravação imediata dos buffers para o dispositivo de armazenamento de destino usando syncapós a cópia, por exemplocp ${QUELLE} ${ZIEL} && sync

Além disso, considere usar rsyncpara copiar apenas arquivos para o destino que foram alterados ou são novos.

informação relacionada