Aproveitando o questionamento do Felipe, e por perceber que tem sido uma dúvida recorrente, resolvi compartilhar uma dica de como configurar o Squid para trabalhar com múltiplas áreas de spool (cache em disco).
Para alcançar diferentes níveis de conhecimento, demonstrarei desde o particionamento – o processo é bastante simples.
1. Identifique, particione e formate os discos disponíveis no SO (adicionais para spool):
– Comece identificando os discos em questão (ATENÇÃO, serão formatados posteriormente)
root@squidproxy:~# fdisk -l Disk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos ...
“Veremos uma saída similar a anterior, caso existam dois discos adicionais, identificados como sdb e sdc (por exemplo). “
– Em seguida, particione o disco com o comando cfdisk
root@squidproxy:~# cfdisk /dev/sdb root@squidproxy:~# cfdisk /dev/sdc
“É evidente que o particionamento pode ser feito por outras ferramentas, como fdisk, cfdisk ou gparted, por exemplo – optei pelo cfdisk devido a simplicidade.”
O cfdisk permite manipular as partições de forma rápida e bastante intuitiva – neste caso (com discos dedicados para spool), basta criar uma nova partição (primária), alocando o espaço total.
REPITA O PROCESSO PARA CADA DISCO.
– Formatando as partições
root@squidproxy:~# fsck.ext4 /dev/sdb1 root@squidproxy:~# fsck.ext4 /dev/sdc1
Se você não estiver familiarizado com particionamento no Linux, recomendo acessar:
http://www.ubuntuiniciantes.com.br/2016/08/formatar-e-particionar-hd-no-linux.html
2. Defina e configure os pontos de montagem sobre /var/spool/squid:
– Ajustes manuais para definição da estrutura de diretórios
root@squidproxy:~# mkdir -p /var/spool/squid/{disk1,disk2} root@squidproxy:~# mount /dev/sdb1 /var/spool/squid/disk1 root@squidproxy:~# mount /dev/sdc1 /var/spool/squid/disk2 # Opcional - caso queira otimizar a utilização de disco (por tamanho de objeto) root@squidproxy:~# mkdir -p /var/spool/squid/disk1/{cache1,cache2} root@squidproxy:~# mkdir -p /var/spool/squid/disk2/{cache1,cache2} root@squidproxy:~# chown -R proxy.proxy /var/spool/squid
“Cada disco será montado em /var/spool/squid/disk[N]. Já os subdiretórios cache1 e cache2 serão utilizados para armazenar os objetos cacheados pelo Squid (por disco). Esta subdivisão em cache1 e cache2 é opcional – auxilia apenas na melhor distribuição dos objetos (por tamanho).“
– Fixando a configuração para montagem automática no boot (em /etc/fstab)
vim /etc/fstab /dev/sdb1 /var/spool/squid/disk1 ext4 defaults,noatime 0 2 /dev/sdc1 /var/spool/squid/disk2 ext4 defaults,noatime 0 2
“Edite o arquivo /etc/fstab e inclua as linhas anteriores no final do arquivo. É possível trabalhar com a notação UUID ao invés do caminho fixo (como /dev/sd[x][n]).“
– Uma maneira de testar se as entradas do fstab estão corretas é simulando com chamadas via comando umount e mount:
umount /var/spool/squid/disk1 umount /var/spool/squid/disk2 mount /var/spool/squid/disk1 mount /var/spool/squid/disk2
“Logo após liste o conteúdo dos diretórios disk1 e disk2. E, com o comando mount (sem opções), também confirme se os dispositivos estão realmente montados.“
3. Para finalizar, basta configurar, através da opção cache_dir, a área de disco utilizada pelo Squid (normalmente, em /etc/squid/squid.conf):
Finalizarei com uma demonstração um pouco mais avançada que oferecerá maior performance. Se houver alguma dúvida recomendo a leitura da PARTE 2 do tutorial de instalação e configuração que escrevi anteriormente.
## SMP support workers 2 cpu_affinity_map process_numbers=1,2 cores=1,2 memory_cache_shared on if ${process_number} = 1 cache_dir ufs /var/spool/squid/disk1/cache1 7000 32 256 min-size=64000 max-size=1024000 cache_dir ufs /var/spool/squid/disk1/cache2 29000 16 256 min-size=1024001 endif if ${process_number} = 2 cache_dir ufs /var/spool/squid/disk2/cache1 7000 32 256 min-size=64000 max-size=1024000 cache_dir ufs /var/spool/squid/disk2/cache2 29000 16 256 min-size=1024001 endif
“Repare que simulei uma configuração com processamento paralelo, permitindo que o Squid trabalhe com dois processos, dedicando cada processo para acessar um disco específico – processo 1 para disk1 e processo 2 para disk2. Também fixei o processo ao núcleo específico mapeando com a opção cpu_affinity_map.“
Caso prefira algo mais simples, é possível definir um único cache_dir por disco e sem o suporte SMP, por exemplo (29 Gb):
cache_dir ufs /var/spool/squid/disk1 29000 cache_dir ufs /var/spool/squid/disk2 29000
“Com mais de um disco físico, a utilização do filesystem aufs pode resultar em performance superior, desde que seja uma única referência (diretório) por disco. Ou seja, neste caso, não é indicado trabalhar com os subdiretórios cache1 e cache2 com o aufs porque ocorreria concorrência de acesso simulâneo e assíncrono para o mesmo disco.“
Espero que a dica seja útil! 😉
O amigo, muito obrigado pela intenção! logologo vou tentar colocar em pratica. instalar o debian do zero e tentar fazer oque esta no tuto. qualquer coisa entrarei em contato com vc. um abraço amigo.
o amigo, muito obrigado! vlw pela sua intenção de ajudar. assim que folgar mais do trabalho aqui, vou formatar, começar do 0 pra ver se vou conseguir. qualquer coisa tornarei entrar em contato aqui e falar sobre os sucessos ou fracassos. pois dai mais alguem pode esta precisando a mesma coisa.