Já tentou nice -n10
prefixado ao comando?
10
é o valor padrão. O intervalo vai de -20
(prioridade mais alta) a 19
(menor).
Eu preciso mover um arquivo grande (tabela MySQL corrompida ~ 40GB) para um servidor separado, a fim de repará-lo. (Ao tentar reparar no meu servidor de produção, ele rapidamente matou o servidor).
Para fazer isso, quero rsync os arquivos .frm, .MYI e .MYD do meu servidor de produção para um servidor em nuvem.
Eu estou copiando os arquivos de / var / lib / mysql / {database} / para / home / {myuser} para que eu não precise ativar o acesso root para o comando rsync e ter 100% de certeza que o arquivo de banco de dados não está em uso (não deve ser escrito ou lido, mas obviamente eu não quero desligar meu banco de dados de produção para ter certeza).
O primeiro arquivo que tentei copiar tinha cerca de 10 GB. Estou transferindo de uma parte do meu servidor de produção para a outra, ou seja, para a mesma matriz de discos.
Infelizmente, o comando copy "cp filename newfilename" levou tantos recursos que parou o servidor.
Como posso usar menos recursos ao copiar o arquivo para um diretório diferente? (Realmente não importa quanto tempo demore).
Assumindo que eu consiga fazer isso, que uso de recursos posso esperar ao rsyncing o arquivo para a nuvem?
Alguém pode sugerir uma maneira melhor de fazer isso? Estou ficando rapidamente sem espaço em disco, por isso preciso reparar e arquivar essa tabela o mais rápido possível.
Duas opções além da limitação de largura de banda rsync:
ionice -c 3 cp foo bar
buffer -u 150 -m 16m -s 100m -p 75 -i foo -o bar
ionice
irá interagir com o agendador de E / S. buffer
é um buffer circular destinado a auxiliar dispositivos de caractere a serem mais eficientes, mas o -u 150
pausará 150 microssegundos entre gravações que, de acordo com o manual, podem ser suficientes para dar espaço em disco para a respiração.
Tanto o ionice
quanto o buffer
estão disponíveis em um repositório padrão do Ubuntu. iotop
é útil se você tiver o CONFIG_TASK_DELAY_ACCT configurado no seu kernel, mas a minha caixa do Ubuntu não limitou severamente a usabilidade do comando. Eu já sei que qual comando está afogando meu disco rígido, eu só quero dar-lhe algum espaço para respirar.
Além disso, enquanto a cópia estiver em andamento, observe a saída de iostat -x 1
(geralmente no pacote sysstat) e veja se o campo% ocupado para o seu dispositivo é 90% ou menos durante a cópia. Se estiver em 99-100%, você estará privando outros processos de E / S.
use rsync com o parâmetro --bwlimit = KBPS (limite de largura de banda de E / S; KBytes por segundo). brinque com um arquivo menor e tente encontrar uma mistura ideal entre a velocidade de transferência e o uso do sistema. Monitore em segundo shell com "vmstat 1"
Uma alternativa é:
scp -l ${KBPS} ${src} ${dest}
Mas eu não acho que funcionará se $ {src} for um arquivo crescente ... você pode sugerir uma maneira de copiar e esperar que a fonte seja fechada ...
Tags rsync copy linux filesystems